@acorex/modules 19.2.17-next.0 → 19.2.17

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 (143) hide show
  1. package/application-management/lib/layouts/module-entity-detail-view/module-entity-detail-view.component.d.ts +4 -0
  2. package/auth/lib/pages/login/password/password.component.d.ts +1 -0
  3. package/common/lib/entities/dashboard/dashboard.types.d.ts +2 -2
  4. package/common/lib/entities/index.d.ts +0 -1
  5. package/common/lib/features/dashboard-home/dashboard-home.d.ts +113 -0
  6. package/common/lib/features/dashboard-home/dashboard-home.store.d.ts +19 -0
  7. package/common/lib/features/dashboard-home/dashboard.type.d.ts +12 -0
  8. package/common/lib/features/dashboard-popups/add-dashboard-popup.d.ts +11 -0
  9. package/common/lib/features/dashboard-popups/dashboard-popup.service.d.ts +9 -0
  10. package/common/lib/features/widget-wrapper/dashboard-widget-wrapper.d.ts +9 -0
  11. package/document-management/lib/document-management.module.d.ts +2 -1
  12. package/document-management/lib/entities/document/document.types.d.ts +4 -0
  13. package/document-management/lib/entities/folder/folder.types.d.ts +1 -0
  14. package/document-management/lib/features/document-explorer/document-explorer.component.d.ts +7 -0
  15. package/document-management/lib/features/drive/drive.component.d.ts +4 -0
  16. package/document-management/lib/features/drive-choose/drive-choose.component.d.ts +200 -0
  17. package/document-management/lib/features/shared/components/file-viewer-popup/file-viewer-popup.component.d.ts +9 -0
  18. package/document-management/lib/features/shared/components/file-viewer-popup/index.d.ts +1 -0
  19. package/document-management/lib/features/shared/components/index.d.ts +2 -0
  20. package/document-management/lib/features/shared/components/tree-folder-popup/index.d.ts +1 -0
  21. package/document-management/lib/features/shared/components/tree-folder-popup/tree-folder-popup.component.d.ts +20 -0
  22. package/document-management/lib/features/shared/document-manager.service.d.ts +41 -49
  23. package/document-management/lib/features/shared/document-manager.types.d.ts +2 -0
  24. package/document-management/lib/features/widgets/document-attachment/document-attachment-widget-edit.component.d.ts +113 -1
  25. package/fesm2022/{acorex-modules-application-management-module-designer.component-DPJ4qpK3.mjs → acorex-modules-application-management-module-designer.component-BSGSZi9T.mjs} +2 -2
  26. package/fesm2022/{acorex-modules-application-management-module-designer.component-DPJ4qpK3.mjs.map → acorex-modules-application-management-module-designer.component-BSGSZi9T.mjs.map} +1 -1
  27. package/fesm2022/acorex-modules-application-management.mjs +3 -3
  28. package/fesm2022/{acorex-modules-auth-acorex-modules-auth-DTje3YIv.mjs → acorex-modules-auth-acorex-modules-auth-Xcs9ViQv.mjs} +13 -13
  29. package/fesm2022/acorex-modules-auth-acorex-modules-auth-Xcs9ViQv.mjs.map +1 -0
  30. package/fesm2022/{acorex-modules-auth-app-chooser.component-CZxX5-T_.mjs → acorex-modules-auth-app-chooser.component-0L9y_yn_.mjs} +3 -3
  31. package/fesm2022/{acorex-modules-auth-app-chooser.component-CZxX5-T_.mjs.map → acorex-modules-auth-app-chooser.component-0L9y_yn_.mjs.map} +1 -1
  32. package/fesm2022/{acorex-modules-auth-login.module-B9P2XpfQ.mjs → acorex-modules-auth-login.module-CfO1IwH9.mjs} +4 -4
  33. package/fesm2022/{acorex-modules-auth-login.module-B9P2XpfQ.mjs.map → acorex-modules-auth-login.module-CfO1IwH9.mjs.map} +1 -1
  34. package/fesm2022/acorex-modules-auth-master.layout-hLuHDgvl.mjs +23 -0
  35. package/fesm2022/acorex-modules-auth-master.layout-hLuHDgvl.mjs.map +1 -0
  36. package/fesm2022/acorex-modules-auth-password.component-BztZ3DJd.mjs +132 -0
  37. package/fesm2022/acorex-modules-auth-password.component-BztZ3DJd.mjs.map +1 -0
  38. package/fesm2022/{acorex-modules-auth-password.component-C7Yp-ioT.mjs → acorex-modules-auth-password.component-CTVBARbz.mjs} +2 -2
  39. package/fesm2022/{acorex-modules-auth-password.component-C7Yp-ioT.mjs.map → acorex-modules-auth-password.component-CTVBARbz.mjs.map} +1 -1
  40. package/fesm2022/{acorex-modules-auth-routes-Bu-xB4O6.mjs → acorex-modules-auth-routes-CJz0CRlp.mjs} +2 -2
  41. package/fesm2022/{acorex-modules-auth-routes-Bu-xB4O6.mjs.map → acorex-modules-auth-routes-CJz0CRlp.mjs.map} +1 -1
  42. package/fesm2022/{acorex-modules-auth-tenant-chooser.component-CKsbiOUX.mjs → acorex-modules-auth-tenant-chooser.component-kVFAR9t1.mjs} +2 -2
  43. package/fesm2022/{acorex-modules-auth-tenant-chooser.component-CKsbiOUX.mjs.map → acorex-modules-auth-tenant-chooser.component-kVFAR9t1.mjs.map} +1 -1
  44. package/fesm2022/{acorex-modules-auth-two-factor-code.component-DrV3UBuT.mjs → acorex-modules-auth-two-factor-code.component-_VYT-h-9.mjs} +2 -2
  45. package/fesm2022/{acorex-modules-auth-two-factor-code.component-DrV3UBuT.mjs.map → acorex-modules-auth-two-factor-code.component-_VYT-h-9.mjs.map} +1 -1
  46. package/fesm2022/{acorex-modules-auth-two-factor.module-YRh6_YcG.mjs → acorex-modules-auth-two-factor.module-BQfrnrd0.mjs} +3 -3
  47. package/fesm2022/{acorex-modules-auth-two-factor.module-YRh6_YcG.mjs.map → acorex-modules-auth-two-factor.module-BQfrnrd0.mjs.map} +1 -1
  48. package/fesm2022/acorex-modules-auth.mjs +1 -1
  49. package/fesm2022/acorex-modules-common-index-BAt02rnb.mjs +472 -0
  50. package/fesm2022/acorex-modules-common-index-BAt02rnb.mjs.map +1 -0
  51. package/fesm2022/acorex-modules-common.mjs +5 -505
  52. package/fesm2022/acorex-modules-common.mjs.map +1 -1
  53. package/fesm2022/{acorex-modules-document-management-acorex-modules-document-management-C9ZCejjs.mjs → acorex-modules-document-management-acorex-modules-document-management-BmLGtKDq.mjs} +415 -60
  54. package/fesm2022/acorex-modules-document-management-acorex-modules-document-management-BmLGtKDq.mjs.map +1 -0
  55. package/fesm2022/{acorex-modules-document-management-create-folder-dialog.component-BnRaCq_Q.mjs → acorex-modules-document-management-create-folder-dialog.component-DqoWmtm7.mjs} +4 -5
  56. package/fesm2022/acorex-modules-document-management-create-folder-dialog.component-DqoWmtm7.mjs.map +1 -0
  57. package/fesm2022/acorex-modules-document-management-drive-choose.component-CkS8s7zm.mjs +152 -0
  58. package/fesm2022/acorex-modules-document-management-drive-choose.component-CkS8s7zm.mjs.map +1 -0
  59. package/fesm2022/acorex-modules-document-management-drive.component-B6az6-_w.mjs +164 -0
  60. package/fesm2022/acorex-modules-document-management-drive.component-B6az6-_w.mjs.map +1 -0
  61. package/fesm2022/acorex-modules-document-management-file-viewer-popup.component-CaSagveT.mjs +24 -0
  62. package/fesm2022/acorex-modules-document-management-file-viewer-popup.component-CaSagveT.mjs.map +1 -0
  63. package/fesm2022/acorex-modules-document-management-index-9l8D5iEE.mjs +69 -0
  64. package/fesm2022/acorex-modules-document-management-index-9l8D5iEE.mjs.map +1 -0
  65. package/fesm2022/{acorex-modules-document-management-rename-node-dialog.component-EBf1XqU8.mjs → acorex-modules-document-management-rename-node-dialog.component-BoODbM0H.mjs} +4 -4
  66. package/fesm2022/{acorex-modules-document-management-rename-node-dialog.component-EBf1XqU8.mjs.map → acorex-modules-document-management-rename-node-dialog.component-BoODbM0H.mjs.map} +1 -1
  67. package/fesm2022/acorex-modules-document-management.mjs +1 -1
  68. package/fesm2022/{acorex-modules-form-template-management-acorex-modules-form-template-management-szDh56Bk.mjs → acorex-modules-form-template-management-acorex-modules-form-template-management-Qnh16t3Q.mjs} +10 -10
  69. package/fesm2022/{acorex-modules-form-template-management-acorex-modules-form-template-management-szDh56Bk.mjs.map → acorex-modules-form-template-management-acorex-modules-form-template-management-Qnh16t3Q.mjs.map} +1 -1
  70. package/fesm2022/{acorex-modules-form-template-management-category.entity-BZXqnhwK.mjs → acorex-modules-form-template-management-category.entity-BjmyIav9.mjs} +3 -3
  71. package/fesm2022/{acorex-modules-form-template-management-category.entity-BZXqnhwK.mjs.map → acorex-modules-form-template-management-category.entity-BjmyIav9.mjs.map} +1 -1
  72. package/fesm2022/{acorex-modules-form-template-management-setting.provider-o2_TSVfK.mjs → acorex-modules-form-template-management-setting.provider-hkwaOGfL.mjs} +2 -2
  73. package/fesm2022/{acorex-modules-form-template-management-setting.provider-o2_TSVfK.mjs.map → acorex-modules-form-template-management-setting.provider-hkwaOGfL.mjs.map} +1 -1
  74. package/fesm2022/{acorex-modules-form-template-management-template-picker.component-BxOdV3y2.mjs → acorex-modules-form-template-management-template-picker.component-gdMTnjl-.mjs} +2 -2
  75. package/fesm2022/{acorex-modules-form-template-management-template-picker.component-BxOdV3y2.mjs.map → acorex-modules-form-template-management-template-picker.component-gdMTnjl-.mjs.map} +1 -1
  76. package/fesm2022/{acorex-modules-form-template-management-template-widget-edit.component--MGoF75g.mjs → acorex-modules-form-template-management-template-widget-edit.component-CSShokqz.mjs} +3 -3
  77. package/fesm2022/{acorex-modules-form-template-management-template-widget-edit.component--MGoF75g.mjs.map → acorex-modules-form-template-management-template-widget-edit.component-CSShokqz.mjs.map} +1 -1
  78. package/fesm2022/{acorex-modules-form-template-management-template.entity-JvWcqjzi.mjs → acorex-modules-form-template-management-template.entity-_yMAqh35.mjs} +3 -3
  79. package/fesm2022/{acorex-modules-form-template-management-template.entity-JvWcqjzi.mjs.map → acorex-modules-form-template-management-template.entity-_yMAqh35.mjs.map} +1 -1
  80. package/fesm2022/{acorex-modules-form-template-management-viewer-popup.component-Bllb70Ih.mjs → acorex-modules-form-template-management-viewer-popup.component-CbcSFEis.mjs} +3 -3
  81. package/fesm2022/{acorex-modules-form-template-management-viewer-popup.component-Bllb70Ih.mjs.map → acorex-modules-form-template-management-viewer-popup.component-CbcSFEis.mjs.map} +1 -1
  82. package/fesm2022/acorex-modules-form-template-management.mjs +1 -1
  83. package/fesm2022/acorex-modules-notification-management.mjs +2 -2
  84. package/fesm2022/{acorex-modules-organization-management-add-item.component-Y-i6xDkl.mjs → acorex-modules-organization-management-add-item.component-Bsae9u-e.mjs} +2 -2
  85. package/fesm2022/{acorex-modules-organization-management-add-item.component-Y-i6xDkl.mjs.map → acorex-modules-organization-management-add-item.component-Bsae9u-e.mjs.map} +1 -1
  86. package/fesm2022/{acorex-modules-organization-management-branch.entity-DhObzxhh.mjs → acorex-modules-organization-management-branch.entity-e5pFx82N.mjs} +2 -2
  87. package/fesm2022/{acorex-modules-organization-management-branch.entity-DhObzxhh.mjs.map → acorex-modules-organization-management-branch.entity-e5pFx82N.mjs.map} +1 -1
  88. package/fesm2022/{acorex-modules-organization-management-chart.entity-Bk4WgsYr.mjs → acorex-modules-organization-management-chart.entity-DnmNyyD2.mjs} +2 -2
  89. package/fesm2022/{acorex-modules-organization-management-chart.entity-Bk4WgsYr.mjs.map → acorex-modules-organization-management-chart.entity-DnmNyyD2.mjs.map} +1 -1
  90. package/fesm2022/{acorex-modules-organization-management-company.entity-d7GaCVei.mjs → acorex-modules-organization-management-company.entity-BRkEcDNt.mjs} +2 -2
  91. package/fesm2022/{acorex-modules-organization-management-company.entity-d7GaCVei.mjs.map → acorex-modules-organization-management-company.entity-BRkEcDNt.mjs.map} +1 -1
  92. package/fesm2022/{acorex-modules-organization-management-department.entity-BxyeK3lU.mjs → acorex-modules-organization-management-department.entity-ChJXNpXn.mjs} +2 -2
  93. package/fesm2022/{acorex-modules-organization-management-department.entity-BxyeK3lU.mjs.map → acorex-modules-organization-management-department.entity-ChJXNpXn.mjs.map} +1 -1
  94. package/fesm2022/{acorex-modules-organization-management-division.entity-Dh54R4es.mjs → acorex-modules-organization-management-division.entity-qyDyhl-q.mjs} +2 -2
  95. package/fesm2022/{acorex-modules-organization-management-division.entity-Dh54R4es.mjs.map → acorex-modules-organization-management-division.entity-qyDyhl-q.mjs.map} +1 -1
  96. package/fesm2022/{acorex-modules-organization-management-employee.entity-DcJCJN3R.mjs → acorex-modules-organization-management-employee.entity-Cp5TejzT.mjs} +2 -2
  97. package/fesm2022/{acorex-modules-organization-management-employee.entity-DcJCJN3R.mjs.map → acorex-modules-organization-management-employee.entity-Cp5TejzT.mjs.map} +1 -1
  98. package/fesm2022/{acorex-modules-organization-management-employment-type.entity-aNkt-l_e.mjs → acorex-modules-organization-management-employment-type.entity-Ul10Mdwm.mjs} +2 -2
  99. package/fesm2022/{acorex-modules-organization-management-employment-type.entity-aNkt-l_e.mjs.map → acorex-modules-organization-management-employment-type.entity-Ul10Mdwm.mjs.map} +1 -1
  100. package/fesm2022/acorex-modules-organization-management-org-chart-configuration.page-aMPR3Oyw.mjs +92 -0
  101. package/fesm2022/acorex-modules-organization-management-org-chart-configuration.page-aMPR3Oyw.mjs.map +1 -0
  102. package/fesm2022/{acorex-modules-organization-management-org-chart.page-DXyAFXwE.mjs → acorex-modules-organization-management-org-chart.page-CAgSSVON.mjs} +15 -15
  103. package/fesm2022/acorex-modules-organization-management-org-chart.page-CAgSSVON.mjs.map +1 -0
  104. package/fesm2022/{acorex-modules-organization-management-position.entity-D17Yembh.mjs → acorex-modules-organization-management-position.entity-BpQbwW-x.mjs} +2 -2
  105. package/fesm2022/{acorex-modules-organization-management-position.entity-D17Yembh.mjs.map → acorex-modules-organization-management-position.entity-BpQbwW-x.mjs.map} +1 -1
  106. package/fesm2022/{acorex-modules-organization-management-role.entity-Cmbyle8P.mjs → acorex-modules-organization-management-role.entity-B9N4qA_E.mjs} +2 -2
  107. package/fesm2022/{acorex-modules-organization-management-role.entity-Cmbyle8P.mjs.map → acorex-modules-organization-management-role.entity-B9N4qA_E.mjs.map} +1 -1
  108. package/fesm2022/{acorex-modules-organization-management-team.entity-DcurAtLd.mjs → acorex-modules-organization-management-team.entity-7q6Eg74A.mjs} +2 -2
  109. package/fesm2022/{acorex-modules-organization-management-team.entity-DcurAtLd.mjs.map → acorex-modules-organization-management-team.entity-7q6Eg74A.mjs.map} +1 -1
  110. package/fesm2022/acorex-modules-organization-management.mjs +15 -13
  111. package/fesm2022/acorex-modules-organization-management.mjs.map +1 -1
  112. package/fesm2022/{acorex-modules-platform-management-list-version.component-CoZBz85x.mjs → acorex-modules-platform-management-list-version.component-DI1wKhRv.mjs} +2 -2
  113. package/fesm2022/{acorex-modules-platform-management-list-version.component-CoZBz85x.mjs.map → acorex-modules-platform-management-list-version.component-DI1wKhRv.mjs.map} +1 -1
  114. package/fesm2022/acorex-modules-platform-management.mjs +10 -8
  115. package/fesm2022/acorex-modules-platform-management.mjs.map +1 -1
  116. package/fesm2022/acorex-modules-scheduler-job-management.mjs +1 -1
  117. package/fesm2022/acorex-modules-security-management.mjs +1 -1
  118. package/fesm2022/acorex-modules-text-template-management.mjs +1 -1
  119. package/organization-management/lib/features/organization-chart/org-chart-configuration.page.d.ts +4 -0
  120. package/organization-management/lib/features/organization-chart/org-chart.page.d.ts +4 -0
  121. package/package.json +1 -1
  122. package/common/lib/entities/dashboard-widget-data/dashboard-widget-data.entity.d.ts +0 -3
  123. package/common/lib/entities/dashboard-widget-data/dashboard-widget-data.service.d.ts +0 -10
  124. package/common/lib/entities/dashboard-widget-data/dashboard-widget-data.types.d.ts +0 -9
  125. package/common/lib/entities/dashboard-widget-data/index.d.ts +0 -3
  126. package/common/lib/features/home/dashboard-home.d.ts +0 -5
  127. package/fesm2022/acorex-modules-auth-acorex-modules-auth-DTje3YIv.mjs.map +0 -1
  128. package/fesm2022/acorex-modules-auth-master.layout-BYC0FYq1.mjs +0 -23
  129. package/fesm2022/acorex-modules-auth-master.layout-BYC0FYq1.mjs.map +0 -1
  130. package/fesm2022/acorex-modules-auth-password.component-DzrYH4yM.mjs +0 -127
  131. package/fesm2022/acorex-modules-auth-password.component-DzrYH4yM.mjs.map +0 -1
  132. package/fesm2022/acorex-modules-common-index-zaFxpV8u.mjs +0 -14
  133. package/fesm2022/acorex-modules-common-index-zaFxpV8u.mjs.map +0 -1
  134. package/fesm2022/acorex-modules-document-management-acorex-modules-document-management-C9ZCejjs.mjs.map +0 -1
  135. package/fesm2022/acorex-modules-document-management-create-folder-dialog.component-BnRaCq_Q.mjs.map +0 -1
  136. package/fesm2022/acorex-modules-document-management-drive.component-Sz198sA6.mjs +0 -165
  137. package/fesm2022/acorex-modules-document-management-drive.component-Sz198sA6.mjs.map +0 -1
  138. package/fesm2022/acorex-modules-document-management-index--I8MGeDs.mjs +0 -2
  139. package/fesm2022/acorex-modules-document-management-index--I8MGeDs.mjs.map +0 -1
  140. package/fesm2022/acorex-modules-organization-management-org-chart-configuration.page-DO8wSZqZ.mjs +0 -92
  141. package/fesm2022/acorex-modules-organization-management-org-chart-configuration.page-DO8wSZqZ.mjs.map +0 -1
  142. package/fesm2022/acorex-modules-organization-management-org-chart.page-DXyAFXwE.mjs.map +0 -1
  143. /package/common/lib/features/{home → dashboard-home}/index.d.ts +0 -0
@@ -1,8 +1,8 @@
1
1
  import { AXPSessionService, AXPAuthGuard, AXP_PERMISSION_PROVIDER } from '@acorex/platform/auth';
2
- import { AXPSearchCommandProvider, AXPEntityQueryType, AXPEntityCommandScope, createAllQueryView, AXPFileTypeProviderService, AXP_FILE_TYPE_INFO_PROVIDER, AXPSettingScope, AXPSettingService, AXP_MENU_PROVIDER, AXP_SETTING_DEFINITION_PROVIDER, AXP_SEARCH_PROVIDER } from '@acorex/platform/common';
2
+ import { AXPSearchCommandProvider, createAllQueryView, AXPEntityCommandScope, AXPEntityQueryType, AXPFileTypeProviderService, AXP_FILE_TYPE_INFO_PROVIDER, AXPFileStorageService, AXPSettingScope, AXPSettingService, AXP_MENU_PROVIDER, AXP_SETTING_DEFINITION_PROVIDER, AXP_SEARCH_PROVIDER } from '@acorex/platform/common';
3
3
  import { AXPEntityService, AXMEntityCrudServiceImpl, AXP_ENTITY_CONFIG_TOKEN, AXP_ENTITY_DEFINITION_LOADER } from '@acorex/platform/layout/entity';
4
4
  import * as i0 from '@angular/core';
5
- import { inject, Injector, Injectable, NgModule, Component, ChangeDetectionStrategy, signal, computed, viewChild, effect } from '@angular/core';
5
+ import { inject, Injector, Injectable, NgModule, ChangeDetectionStrategy, Component, signal, computed, viewChild, effect } from '@angular/core';
6
6
  import { firstValueFrom, Subject } from 'rxjs';
7
7
  import * as i6 from '@acorex/platform/layout/builder';
8
8
  import { AXPWidgetsCatalog, AXPWidgetComponent, AXPLayoutBuilderModule, AXP_WIDGETS_ADVANCE_GROUP, AXP_WIDGETS_EDITOR_GROUP } from '@acorex/platform/layout/builder';
@@ -26,18 +26,27 @@ import { FormsModule } from '@angular/forms';
26
26
  import get from 'lodash-es/get';
27
27
  import set from 'lodash-es/set';
28
28
  import { AXP_NAME_PROPERTY, AXP_DATA_PATH_PROPERTY } from '@acorex/platform/widgets';
29
+ import * as i2$1 from '@acorex/components/button';
30
+ import { AXButtonComponent, AXButtonModule } from '@acorex/components/button';
31
+ import { AXButtonGroupModule } from '@acorex/components/button-group';
32
+ import * as i3$1 from '@acorex/components/dropdown';
33
+ import { AXDropdownModule } from '@acorex/components/dropdown';
34
+ import { AXDropdownButtonModule } from '@acorex/components/dropdown-button';
35
+ import * as i4$1 from '@acorex/core/translation';
36
+ import { AXTranslationService, AXTranslationModule } from '@acorex/core/translation';
29
37
  import { AXLoadingModule } from '@acorex/components/loading';
30
38
  import * as i4 from '@acorex/components/menu';
31
39
  import { AXMenuModule } from '@acorex/components/menu';
32
40
  import { AXDateTimeModule } from '@acorex/core/date-time';
33
41
  import * as i3 from '@acorex/core/format';
34
42
  import { AXFormatModule } from '@acorex/core/format';
35
- import { AXTranslationService } from '@acorex/core/translation';
36
- import { AXPDataGenerator, AXPElementDataDirective } from '@acorex/platform/core';
43
+ import { AXPElementDataDirective } from '@acorex/platform/core';
37
44
  import { get as get$1 } from 'lodash-es';
38
45
  import { AXDialogService } from '@acorex/components/dialog';
39
46
  import { AXPopupService } from '@acorex/components/popup';
40
47
  import { signalStore, withState, withComputed, withMethods, patchState } from '@ngrx/signals';
48
+ import * as i3$2 from '@acorex/components/media-viewer';
49
+ import { AXMediaViewerModule } from '@acorex/components/media-viewer';
41
50
 
42
51
  const config = {
43
52
  i18n: 'document-management',
@@ -814,7 +823,7 @@ async function documentTypeFactory(injector) {
814
823
  schema: {
815
824
  dataType: 'object',
816
825
  interface: {
817
- type: AXPWidgetsCatalog.fileTypeExtension,
826
+ type: AXPWidgetsCatalog.documentAttachment,
818
827
  options: {},
819
828
  },
820
829
  },
@@ -3013,6 +3022,7 @@ class AXMDocumentManagerService {
3013
3022
  this.documentService = inject(AXMDocumentService);
3014
3023
  this.popupService = inject(AXPopupService);
3015
3024
  this.dialogService = inject(AXDialogService);
3025
+ this.fileService = inject(AXPFileStorageService);
3016
3026
  this.scopedDriveCache = new Map();
3017
3027
  }
3018
3028
  scope(scope, options) {
@@ -3023,7 +3033,6 @@ class AXMDocumentManagerService {
3023
3033
  return this.scopedDriveCache.get(cacheKey);
3024
3034
  }
3025
3035
  getScopeCacheKey(scope, options) {
3026
- // در آینده می‌توان این را برای کش کردن بر اساس ترکیب scope و options گسترش داد
3027
3036
  return scope;
3028
3037
  }
3029
3038
  /**
@@ -3113,6 +3122,7 @@ class AXMDocumentManagerService {
3113
3122
  type: 'folder',
3114
3123
  parentId: folder.parentId || null,
3115
3124
  lastModified: folder.updatedAt,
3125
+ childrenCount: folder.nodeCount,
3116
3126
  children: [
3117
3127
  ...(folder.folders?.map((child) => ({
3118
3128
  id: child.id,
@@ -3120,15 +3130,15 @@ class AXMDocumentManagerService {
3120
3130
  type: 'folder',
3121
3131
  parentId: child.parentId || null,
3122
3132
  lastModified: child.updatedAt,
3123
- size: AXPDataGenerator.number(50, 9000000),
3133
+ childrenCount: child.nodeCount,
3124
3134
  })) || []),
3125
3135
  ...(folder.documents?.map((doc) => ({
3126
3136
  id: doc.id,
3127
3137
  name: doc.name,
3128
3138
  type: 'file',
3129
3139
  parentId: doc.parentId,
3130
- lastModified: AXPDataGenerator.date(),
3131
- size: AXPDataGenerator.number(50, 9000000),
3140
+ lastModified: doc.meta?.['uploadedAt'],
3141
+ size: doc.meta?.['size'],
3132
3142
  })) || []),
3133
3143
  ],
3134
3144
  };
@@ -3251,6 +3261,8 @@ class AXMDocumentManagerService {
3251
3261
  type: 'file',
3252
3262
  parentId: file.parentId,
3253
3263
  lastModified: new Date(),
3264
+ size: file.meta?.['size'],
3265
+ fileId: file.fileId,
3254
3266
  };
3255
3267
  }
3256
3268
  async createFile(data) {
@@ -3284,7 +3296,8 @@ class AXMDocumentManagerService {
3284
3296
  }
3285
3297
  }
3286
3298
  async showCreateFolderDialog(parentId) {
3287
- const comp = (await import('./acorex-modules-document-management-create-folder-dialog.component-BnRaCq_Q.mjs')).AXMCreateFolderDialog;
3299
+ const comp = (await import('./acorex-modules-document-management-create-folder-dialog.component-DqoWmtm7.mjs'))
3300
+ .AXMCreateFolderDialog;
3288
3301
  const popup = await this.popupService.open(comp, {
3289
3302
  title: 't("actions.create-folder")',
3290
3303
  data: {
@@ -3293,8 +3306,139 @@ class AXMDocumentManagerService {
3293
3306
  });
3294
3307
  return popup.data?.folder;
3295
3308
  }
3309
+ //Todo beacuse id is String here return type is string and need dynamic type and wrong process
3310
+ async showTreeFolderPopup() {
3311
+ const comp = (await import('./acorex-modules-document-management-index-9l8D5iEE.mjs')).AXMTreeFolderPopupComponent;
3312
+ const popup = await this.popupService.open(comp, {
3313
+ title: 't("actions.create-folder")',
3314
+ data: {
3315
+ // parentId,
3316
+ },
3317
+ });
3318
+ return popup.data?.selectedNodeId;
3319
+ }
3320
+ async showFileViewerPopup(node) {
3321
+ const parentFolder = await this.folderService.getOne(node.parentId);
3322
+ const parentFolderName = parentFolder.name;
3323
+ const nodes = await Promise.all(parentFolder.documents?.map(async (doc) => {
3324
+ const fileInfo = await this.fileService.getInfo(doc.fileId);
3325
+ // Convert mimeType to supported type
3326
+ let fileType = 'image';
3327
+ if (fileInfo.mimeType.startsWith('image/')) {
3328
+ fileType = 'image';
3329
+ }
3330
+ else if (fileInfo.mimeType.startsWith('audio/')) {
3331
+ fileType = 'audio';
3332
+ }
3333
+ else if (fileInfo.mimeType.startsWith('video/')) {
3334
+ fileType = 'video';
3335
+ }
3336
+ else if (fileInfo.mimeType === 'application/pdf') {
3337
+ fileType = 'pdf';
3338
+ }
3339
+ return {
3340
+ id: doc.id || '',
3341
+ name: doc.name,
3342
+ type: fileType,
3343
+ url: fileInfo.url || '',
3344
+ size: String(fileInfo.size),
3345
+ thumbnail: fileInfo.url || '',
3346
+ };
3347
+ }) || []);
3348
+ console.log(nodes);
3349
+ const comp = (await import('./acorex-modules-document-management-file-viewer-popup.component-CaSagveT.mjs'))
3350
+ .AXMFileViewerPopupComponent;
3351
+ await this.popupService.open(comp, {
3352
+ title: `t("gallery" , ${RootConfig.module.name})` + ' - ' + parentFolderName,
3353
+ data: {
3354
+ nodes,
3355
+ },
3356
+ });
3357
+ }
3358
+ async openFile(node) {
3359
+ const file = await this.documentService.getOne(node.id);
3360
+ if (file && file.fileId) {
3361
+ const fileInfo = await this.fileService.getInfo(file.fileId);
3362
+ if (fileInfo.url) {
3363
+ try {
3364
+ // Check if the URL looks like base64 - only attempt decoding if it matches base64 pattern
3365
+ const isBase64 = /^[A-Za-z0-9+/]*={0,2}$/.test(fileInfo.url);
3366
+ let url = fileInfo.url;
3367
+ if (isBase64) {
3368
+ try {
3369
+ url = atob(fileInfo.url);
3370
+ console.log('Successfully decoded base64 URL:', url);
3371
+ }
3372
+ catch (e) {
3373
+ console.warn('Failed to decode as base64, using original URL:', e);
3374
+ }
3375
+ }
3376
+ // Make sure URL has a protocol, add https if missing
3377
+ let finalUrl = url.startsWith('http') ? url : `https://${url}`;
3378
+ console.log('Attempting to open URL:', finalUrl);
3379
+ // Try to open in a new window with a friendly message to copy URL if it fails
3380
+ this.showUrlDialog(finalUrl, file.name);
3381
+ }
3382
+ catch (error) {
3383
+ console.error('Error processing URL:', error);
3384
+ this.showUrlDialog(fileInfo.url, file.name, true);
3385
+ }
3386
+ }
3387
+ else {
3388
+ console.warn('No URL found for file:', file);
3389
+ this.dialogService.alert('No URL Available', 'No URL found for this file.', 'warning');
3390
+ }
3391
+ }
3392
+ else {
3393
+ console.warn('File not found or has no fileId:', node.id);
3394
+ this.dialogService.alert('File Not Found', 'File information could not be retrieved.', 'warning');
3395
+ }
3396
+ }
3397
+ /**
3398
+ * Shows a dialog with URL options including a copy button
3399
+ */
3400
+ async showUrlDialog(url, fileName, isError = false) {
3401
+ const title = `Open "${fileName}"`;
3402
+ const message = isError
3403
+ ? 'There was an issue processing the URL. You can try opening it manually:\n' + url
3404
+ : 'Click the button below to open the URL, or copy it to open manually:\n' + url;
3405
+ const result = await this.dialogService.confirm(title, message, 'primary');
3406
+ if (result) {
3407
+ try {
3408
+ window.open(url, '_blank', 'noopener,noreferrer');
3409
+ }
3410
+ catch (e) {
3411
+ console.error('Error opening URL from dialog:', e);
3412
+ this.dialogService.alert('Error', 'Could not open URL in browser', 'danger');
3413
+ }
3414
+ }
3415
+ else {
3416
+ // If user cancels, offer to copy the URL
3417
+ const copyResult = await this.dialogService.confirm('Copy URL', 'Would you like to copy the URL to clipboard?', 'primary');
3418
+ if (copyResult) {
3419
+ try {
3420
+ navigator.clipboard.writeText(url);
3421
+ this.dialogService.alert('Success', 'URL copied to clipboard', 'success');
3422
+ }
3423
+ catch (e) {
3424
+ console.error('Error copying URL to clipboard:', e);
3425
+ // Fallback for clipboard API not available
3426
+ const textArea = document.createElement('textarea');
3427
+ textArea.value = url;
3428
+ document.body.appendChild(textArea);
3429
+ textArea.focus();
3430
+ textArea.select();
3431
+ document.execCommand('copy');
3432
+ document.body.removeChild(textArea);
3433
+ this.dialogService.alert('Success', 'URL copied to clipboard', 'success');
3434
+ }
3435
+ }
3436
+ }
3437
+ return result;
3438
+ }
3296
3439
  async rename(node) {
3297
- const comp = (await import('./acorex-modules-document-management-rename-node-dialog.component-EBf1XqU8.mjs')).AXMRenameNodeDialog;
3440
+ const comp = (await import('./acorex-modules-document-management-rename-node-dialog.component-BoODbM0H.mjs'))
3441
+ .AXMRenameNodeDialog;
3298
3442
  const popup = await this.popupService.open(comp, {
3299
3443
  title: 't("actions.rename")',
3300
3444
  data: {
@@ -3338,34 +3482,16 @@ class AXMDocumentManagerService {
3338
3482
  ],
3339
3483
  });
3340
3484
  }
3341
- /**
3342
- * جستجوی فولدرها با نام مشخص شده در اسکوپ
3343
- * @param searchTerm عبارت جستجو
3344
- * @param scope اسکوپ جستجو
3345
- * @param options گزینه‌های اضافی مانند tenantId و userId
3346
- */
3347
3485
  async searchFolders(searchTerm, scope, options) {
3348
3486
  const { result: rootNode } = await this.getRoot(scope, options);
3349
3487
  const folders = await this.folderService.searchFolders(searchTerm, rootNode.id);
3350
3488
  return folders.map((folder) => this.mapFolderDtoToFolderNode(folder));
3351
3489
  }
3352
- /**
3353
- * جستجوی فایل‌ها با نام مشخص شده در اسکوپ
3354
- * @param searchTerm عبارت جستجو
3355
- * @param scope اسکوپ جستجو
3356
- * @param options گزینه‌های اضافی مانند tenantId و userId
3357
- */
3358
3490
  async searchFiles(searchTerm, scope, options) {
3359
3491
  const { result: rootNode } = await this.getRoot(scope, options);
3360
3492
  const files = await this.documentService.searchFiles(searchTerm, rootNode.id);
3361
3493
  return files.map((file) => this.mapFileToNode(file));
3362
3494
  }
3363
- /**
3364
- * جستجوی تمام نودها (فولدرها و فایل‌ها) با نام مشخص شده در اسکوپ
3365
- * @param searchTerm عبارت جستجو
3366
- * @param scope اسکوپ جستجو
3367
- * @param options گزینه‌های اضافی مانند tenantId و userId
3368
- */
3369
3495
  async searchNodes(searchTerm, scope, options) {
3370
3496
  const [folders, files] = await Promise.all([
3371
3497
  this.searchFolders(searchTerm, scope, options),
@@ -3373,6 +3499,99 @@ class AXMDocumentManagerService {
3373
3499
  ]);
3374
3500
  return [...folders, ...files];
3375
3501
  }
3502
+ async getAllFolders() {
3503
+ //TODO filter by scope
3504
+ return (await this.folderService.query()).items.map(this.mapFolderDtoToFolderNode);
3505
+ }
3506
+ async getAllFiles() {
3507
+ //TODO filter by scope
3508
+ return (await this.documentService.query()).items.map(this.mapFileToNode);
3509
+ }
3510
+ async getAllNodes() {
3511
+ return [...(await this.getAllFolders()), ...(await this.getAllFiles())];
3512
+ }
3513
+ async showChooseFileDialog() {
3514
+ const comp = (await import('./acorex-modules-document-management-drive-choose.component-CkS8s7zm.mjs')).AXMDocumentDriveChooseComponent;
3515
+ await this.popupService.open(comp);
3516
+ }
3517
+ async downloadFile(node) {
3518
+ const file = await this.documentService.getOne(node.id);
3519
+ if (file && file.fileId) {
3520
+ const fileInfo = await this.fileService.getInfo(file.fileId);
3521
+ const link = document.createElement('a');
3522
+ link.href = fileInfo.url ?? '';
3523
+ link.download = file.name; // Set the desired file name
3524
+ document.body.appendChild(link);
3525
+ link.click();
3526
+ document.body.removeChild(link);
3527
+ }
3528
+ else {
3529
+ console.log('id is null');
3530
+ }
3531
+ }
3532
+ /**
3533
+ * Creates a copy of a node (file or folder)
3534
+ * @param node The node to copy
3535
+ * @returns The newly created copied node
3536
+ */
3537
+ async copy(node) {
3538
+ if (!node) {
3539
+ throw new Error('Node to copy cannot be null or undefined');
3540
+ }
3541
+ // Create a name with " copy" before the extension
3542
+ const newName = this.createCopyName(node.name);
3543
+ if (node.type === 'file') {
3544
+ // Get the original file to copy all its data
3545
+ const originalFile = await this.documentService.getOne(node.id);
3546
+ if (!originalFile) {
3547
+ throw new Error(`File with ID ${node.id} not found`);
3548
+ }
3549
+ // Create a document model from the original with the new name
3550
+ // Extract needed properties without id
3551
+ const { id, ...fileDataWithoutId } = originalFile;
3552
+ const fileData = {
3553
+ ...fileDataWithoutId,
3554
+ name: newName,
3555
+ title: newName,
3556
+ };
3557
+ // Create the new file
3558
+ return await this.createFile(fileData);
3559
+ }
3560
+ else if (node.type === 'folder') {
3561
+ // Get the original folder to copy all its data
3562
+ const originalFolder = await this.folderService.getOne(node.id);
3563
+ if (!originalFolder) {
3564
+ throw new Error(`Folder with ID ${node.id} not found`);
3565
+ }
3566
+ // Create a folder model from the original with the new name
3567
+ // Extract needed properties without id
3568
+ const { id, ...folderDataWithoutId } = originalFolder;
3569
+ const folderData = {
3570
+ ...folderDataWithoutId,
3571
+ name: newName,
3572
+ };
3573
+ // Create the new folder
3574
+ return await this.createFolder(folderData);
3575
+ }
3576
+ else {
3577
+ throw new Error(`Unsupported node type: ${node.type}`);
3578
+ }
3579
+ }
3580
+ /**
3581
+ * Creates a copy name by adding " copy" before the extension
3582
+ * @param originalName The original filename
3583
+ * @returns The new filename with " copy" added before the extension
3584
+ */
3585
+ createCopyName(originalName) {
3586
+ const lastDotIndex = originalName.lastIndexOf('.');
3587
+ if (lastDotIndex === -1) {
3588
+ // No extension
3589
+ return `${originalName} copy`;
3590
+ }
3591
+ const nameWithoutExt = originalName.substring(0, lastDotIndex);
3592
+ const extension = originalName.substring(lastDotIndex);
3593
+ return `${nameWithoutExt} copy${extension}`;
3594
+ }
3376
3595
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXMDocumentManagerService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
3377
3596
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXMDocumentManagerService, providedIn: 'root' }); }
3378
3597
  }
@@ -3426,30 +3645,27 @@ class ScopedDriveService {
3426
3645
  async getAvailableSpace() {
3427
3646
  return this.parent.getAvailableSpace();
3428
3647
  }
3429
- /**
3430
- * جستجوی فولدرها با نام مشخص شده در اسکوپ فعلی
3431
- * @param searchTerm عبارت جستجو
3432
- */
3433
3648
  async searchFolders(searchTerm) {
3434
3649
  this.validateScopeOptions();
3435
3650
  return this.parent.searchFolders(searchTerm, this.scope, this.options);
3436
3651
  }
3437
- /**
3438
- * جستجوی فایل‌ها با نام مشخص شده در اسکوپ فعلی
3439
- * @param searchTerm عبارت جستجو
3440
- */
3441
3652
  async searchFiles(searchTerm) {
3442
3653
  this.validateScopeOptions();
3443
3654
  return this.parent.searchFiles(searchTerm, this.scope, this.options);
3444
3655
  }
3445
- /**
3446
- * جستجوی تمام نودها (فولدرها و فایل‌ها) با نام مشخص شده در اسکوپ فعلی
3447
- * @param searchTerm عبارت جستجو
3448
- */
3449
3656
  async searchNodes(searchTerm) {
3450
3657
  this.validateScopeOptions();
3451
3658
  return this.parent.searchNodes(searchTerm, this.scope, this.options);
3452
3659
  }
3660
+ /**
3661
+ * Creates a copy of a node (file or folder)
3662
+ * @param node The node to copy
3663
+ * @returns The newly created copied node
3664
+ */
3665
+ async copy(node) {
3666
+ this.validateScopeOptions();
3667
+ return this.parent.copy(node);
3668
+ }
3453
3669
  }
3454
3670
 
3455
3671
  var AXPDocumentExplorerSettings;
@@ -3620,6 +3836,7 @@ class AXMDocumentExplorerComponent {
3620
3836
  #effect;
3621
3837
  handleNavigateToFolder(folderId) {
3622
3838
  this.vm.navigateToFolder(folderId);
3839
+ console.log(this.vm.currentFolder());
3623
3840
  }
3624
3841
  // Context Menu Handlers
3625
3842
  async handleContextMenuOnOpening(e) {
@@ -3688,6 +3905,20 @@ class AXMDocumentExplorerComponent {
3688
3905
  ],
3689
3906
  break: true,
3690
3907
  };
3908
+ const openWith = {
3909
+ name: 'open-with',
3910
+ text: 'Open with',
3911
+ icon: 'fa-light fa-circle-info',
3912
+ items: [
3913
+ {
3914
+ name: 'open-gallery',
3915
+ text: 'Gallery',
3916
+ icon: 'fa-light fa-images',
3917
+ data: node,
3918
+ },
3919
+ ],
3920
+ break: true,
3921
+ };
3691
3922
  e.items = [
3692
3923
  ...open,
3693
3924
  {
@@ -3741,6 +3972,9 @@ class AXMDocumentExplorerComponent {
3741
3972
  data: node,
3742
3973
  },
3743
3974
  ];
3975
+ if (node.type == 'file') {
3976
+ e.items.splice(e.items.length - 1, 0, openWith);
3977
+ }
3744
3978
  }
3745
3979
  handleContextMenuRootOnOpening(e) {
3746
3980
  //TODO: check async translate method in acorex
@@ -3777,6 +4011,15 @@ class AXMDocumentExplorerComponent {
3777
4011
  case 'open-folder':
3778
4012
  this.handleNavigateToFolder(node.id);
3779
4013
  break;
4014
+ case 'open-file':
4015
+ this.openFile(node);
4016
+ break;
4017
+ case 'open-gallery':
4018
+ this.openGallery(node);
4019
+ break;
4020
+ case 'download':
4021
+ this.handleDownloadFile(node);
4022
+ break;
3780
4023
  case 'new-folder':
3781
4024
  await this.createFolder(node);
3782
4025
  // Handle new folder creation
@@ -3787,6 +4030,12 @@ class AXMDocumentExplorerComponent {
3787
4030
  case 'paste':
3788
4031
  // Handle paste operation
3789
4032
  break;
4033
+ case 'move-to':
4034
+ this.moveNode(node);
4035
+ break;
4036
+ case 'copy-to':
4037
+ this.copyNodeToNewPath(node);
4038
+ break;
3790
4039
  case 'rename':
3791
4040
  this.renameNode(node);
3792
4041
  break;
@@ -3796,12 +4045,24 @@ class AXMDocumentExplorerComponent {
3796
4045
  case 'refresh':
3797
4046
  this.vm.refresh();
3798
4047
  break;
4048
+ case 'copy':
4049
+ this.makeCopy(node);
4050
+ break;
3799
4051
  }
3800
4052
  }
4053
+ async openGallery(node) {
4054
+ await this.driveService.showFileViewerPopup(node);
4055
+ }
4056
+ async openFile(node) {
4057
+ await this.driveService.openFile(node);
4058
+ }
4059
+ handleDownloadFile(node) {
4060
+ this.driveService.downloadFile(node);
4061
+ }
3801
4062
  async createFolder(node) {
3802
- const folderId = node?.id ?? this.vm.currentFolder()?.id;
3803
- if (folderId) {
3804
- const result = await this.driveService.showCreateFolderDialog(this.vm.currentFolder()?.id);
4063
+ const parentId = node?.id ?? this.vm.currentFolder()?.id;
4064
+ if (parentId) {
4065
+ const result = await this.driveService.showCreateFolderDialog(parentId);
3805
4066
  if (result) {
3806
4067
  await this.vm.refresh();
3807
4068
  }
@@ -3830,8 +4091,61 @@ class AXMDocumentExplorerComponent {
3830
4091
  // }
3831
4092
  }
3832
4093
  }
4094
+ async chooseFile() {
4095
+ await this.driveService.showChooseFileDialog();
4096
+ await this.vm.refresh();
4097
+ }
4098
+ async makeCopy(node) {
4099
+ if (node) {
4100
+ try {
4101
+ const copiedNode = await this.driveService.copy(node);
4102
+ await this.vm.refresh();
4103
+ }
4104
+ catch (error) {
4105
+ console.error('Error copying node:', error);
4106
+ }
4107
+ }
4108
+ }
4109
+ async moveNode(node) {
4110
+ if (node) {
4111
+ const result = await this.driveService.showTreeFolderPopup();
4112
+ if (result) {
4113
+ if (node.type === 'folder') {
4114
+ await this.driveService.updateFolder(node.id, { parentId: result });
4115
+ }
4116
+ else {
4117
+ await this.driveService.updateFile(node.id, { parentId: result });
4118
+ }
4119
+ await this.vm.refresh();
4120
+ }
4121
+ }
4122
+ }
4123
+ async copyNodeToNewPath(node) {
4124
+ if (node) {
4125
+ const result = await this.driveService.showTreeFolderPopup();
4126
+ if (result) {
4127
+ if (node.type === 'folder') {
4128
+ await this.driveService.createFolder({
4129
+ name: node.name,
4130
+ parentId: result,
4131
+ color: '#ffffff',
4132
+ });
4133
+ }
4134
+ else {
4135
+ await this.driveService.createFile({
4136
+ title: node.name,
4137
+ name: node.name,
4138
+ parentId: result,
4139
+ //TODO upload file to file storage
4140
+ fileId: '',
4141
+ });
4142
+ }
4143
+ await this.vm.refresh();
4144
+ }
4145
+ }
4146
+ }
3833
4147
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXMDocumentExplorerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
3834
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.3", type: AXMDocumentExplorerComponent, isStandalone: true, selector: "axm-document-explorer", viewQueries: [{ propertyName: "contextMenu", first: true, predicate: ["itemsContextMenu"], descendants: true, isSignal: true }, { propertyName: "rootContextMenu", first: true, predicate: ["rootContextMenu"], descendants: true, isSignal: true }], ngImport: i0, template: "<!-- Content -->\n<div class=\"content\">\n <!-- Empty State -->\n @if (vm.folders().length === 0 && vm.files().length === 0) {\n <div class=\"ax-flex ax-flex-col ax-items-center ax-justify-center ax-py-16 ax-h-full\">\n <ax-icon icon=\"fa-light fa-folder-open\" class=\"ax-text-6xl ax-mb-4\"></ax-icon>\n <h3 class=\"ax-text-xl ax-font-medium ax-mb-2\">No Items Found</h3>\n <p class=\"\">This folder is empty. Add some files or folders to get started.</p>\n </div>\n } @else {\n <!-- Grid View -->\n @if (vm.isGridView()) {\n <!-- Folders Section -->\n @if (vm.folders().length > 0) {\n <div class=\"section\">\n <h3 class=\"section-title\">Folders</h3>\n <div class=\"items-grid\">\n @for (folder of vm.folders(); track folder.id) {\n <ng-container [ngTemplateOutlet]=\"gridFolderTemplate\" [ngTemplateOutletContext]=\"{ $implicit: folder }\">\n </ng-container>\n }\n </div>\n </div>\n }\n\n <!-- Files Section -->\n @if (vm.files().length > 0) {\n <div class=\"section\">\n <h3 class=\"section-title\">Files</h3>\n <div class=\"items-grid\">\n @for (file of vm.files(); track file.id) {\n <ng-container [ngTemplateOutlet]=\"gridFileTemplate\" [ngTemplateOutletContext]=\"{ $implicit: file }\">\n </ng-container>\n }\n </div>\n </div>\n }\n <!-- Grid View End -->\n }\n\n <!-- List View -->\n @if (vm.isListView()) {\n <div class=\"list-view\">\n <table class=\"items-table\">\n <thead>\n <tr>\n <th class=\"name-column\">Name</th>\n <th class=\"type-column\">Type</th>\n <th class=\"size-column\">Size</th>\n <th class=\"date-column\">Last Modified</th>\n </tr>\n </thead>\n <tbody>\n @for (folder of vm.folders(); track folder.id) {\n <ng-container [ngTemplateOutlet]=\"listFolderTemplate\" [ngTemplateOutletContext]=\"{ $implicit: folder }\">\n </ng-container>\n } @for (file of vm.files(); track file.id) {\n <ng-container [ngTemplateOutlet]=\"listFileTemplate\" [ngTemplateOutletContext]=\"{ $implicit: file }\">\n </ng-container>\n }\n </tbody>\n </table>\n </div>\n } }\n</div>\n\n<!-- Grid View Templates -->\n<ng-template #gridFolderTemplate let-folder>\n <div class=\"ax-group ax-cursor-pointer axp-explorer-item\" [axp-data]=\"folder\"\n (dblclick)=\"handleNavigateToFolder(folder.id)\">\n <div class=\"ax-flex ax-flex-col ax-gap-1 ax-p-4 ax-rounded-lg ax-border ax-lighter-surface\">\n <div class=\"ax-text-yellow-400 fa-3x ax-mb-2\" style=\"--fa-animation-duration: 2s\">\n @if (vm.isLoadingFolder(folder.id)) {\n <ng-container [ngTemplateOutlet]=\"folderLoading\"> </ng-container>\n } @else {\n <ax-icon icon=\"fa-solid fa-folder-closed \"></ax-icon>\n }\n </div>\n <div class=\"ax-flex ax-justify-between ax-font-semibold ax-w-full\">\n <span class=\"ax-text-sm ax-truncate ax-text-start\">{{ folder.name }}</span>\n </div>\n <div class=\"ax-flex ax-justify-between ax-w-full ax-font-semibold ax-opacity-65\">\n <span class=\"ax-text-xs ax-text-neutral\">15 items</span>\n <span class=\"ax-text-xs ax-text-neutral\">{{ folder.lastModified | format : 'datetime' : { format: 'datetime' } |\n async }}</span>\n </div>\n </div>\n </div>\n</ng-template>\n\n<ng-template #gridFileTemplate let-file>\n @let fileInfo = vm.getFileInfo(file.name);\n <div class=\"ax-group ax-cursor-pointer axp-explorer-item\" [axp-data]=\"file\"\n (dblclick)=\"handleNavigateToFolder(file.id)\">\n <div class=\"ax-flex ax-flex-col ax-gap-1 ax-p-4 ax-rounded-lg ax-border ax-lighter-surface\">\n <div class=\"ax-text-yellow-400 fa-3x ax-mb-2\" style=\"--fa-animation-duration: 2s\">\n <i class=\"fa-fw {{ fileInfo.icon }} fa-solid\"></i>\n </div>\n <div class=\"ax-flex ax-justify-between ax-font-semibold ax-w-full\">\n <span class=\"ax-text-sm ax-truncate ax-text-start\">{{ file.name }}</span>\n </div>\n <div class=\"ax-flex ax-justify-between ax-w-full ax-font-semibold ax-opacity-65\">\n <span class=\"ax-text-xs ax-text-neutral\">{{ file.size | format : 'filesize' | async }}</span>\n <span class=\"ax-text-xs ax-text-neutral\">{{ file.lastModified | format : 'datetime' : { format: 'datetime' } |\n async }}</span>\n </div>\n </div>\n </div>\n</ng-template>\n\n<!-- List View Templates -->\n<ng-template #listFolderTemplate let-folder>\n <tr class=\"folder-row\" (dblclick)=\"handleNavigateToFolder(folder.id)\">\n <td class=\"name-column axp-explorer-item\" [axp-data]=\"folder\">\n <div class=\"item-name\">\n @if (vm.isLoadingFolder(folder.id)) {\n <ng-container [ngTemplateOutlet]=\"folderLoading\"> </ng-container>\n } @else {\n <i class=\"fas fa-folder-closed\"></i>\n }\n <span>{{ folder.name }}</span>\n </div>\n </td>\n <td class=\"type-column axp-explorer-item\" [axp-data]=\"folder\">Folder</td>\n <td class=\"size-column axp-explorer-item\" [axp-data]=\"folder\">{{ folder.size | format : 'filesize' | async }}</td>\n <td class=\"date-column axp-explorer-item\" [axp-data]=\"folder\">\n {{ folder.lastModified | format : 'datetime' : { format: 'datetime' } | async }}\n </td>\n </tr>\n</ng-template>\n\n<ng-template #listFileTemplate let-file>\n <tr class=\"file-row\">\n @let fileInfo = vm.getFileInfo(file.name);\n <td class=\"name-column axp-explorer-item\" [axp-data]=\"file\">\n <div class=\"item-name hover:ax-underline\">\n <i class=\"fa-fw {{ fileInfo.icon }} fa-solid\"></i>\n <span>{{ file.name }}</span>\n </div>\n </td>\n <td class=\"type-column axp-explorer-item\" [axp-data]=\"file\">{{ fileInfo.type }}</td>\n <td class=\"size-column axp-explorer-item\" [axp-data]=\"file\">{{ file.size | format : 'filesize' | async }}</td>\n <td class=\"date-column axp-explorer-item\" [axp-data]=\"file\">\n {{ file.lastModified | format : 'datetime' : { format: 'datetime' } | async }}\n </td>\n </tr>\n</ng-template>\n\n<ng-template #folderLoading>\n <i class=\"fa-light fa-spinner fa-spin-pulse ax-text-2xl\"></i>\n</ng-template>\n\n<!-- Context Menu-->\n<ax-context-menu #itemsContextMenu [target]=\"'.axp-explorer-item'\" [orientation]=\"'vertical'\" [closeOn]=\"'leave'\"\n (onItemClick)=\"handleContextMenuItemClick($event)\" (onOpening)=\"handleContextMenuOnOpening($event)\">\n</ax-context-menu>\n\n<ax-context-menu #rootContextMenu [target]=\"'axm-document-explorer'\" [orientation]=\"'vertical'\" [closeOn]=\"'leave'\"\n (onItemClick)=\"handleContextMenuItemClick($event)\" (onOpening)=\"handleContextMenuRootOnOpening($event)\">\n</ax-context-menu>", styles: [":host{display:flex;height:100%;flex:1 1 0%;flex-direction:column;gap:1rem}:host .content{flex:1 1 0%;-webkit-user-select:none;-moz-user-select:-moz-none;user-select:none;overflow-y:auto}:host .content .loading-state{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1rem;padding:2rem}:host .content .loading-state i{font-size:1.5rem;line-height:2rem}:host .content .section{margin-bottom:2rem}:host .content .section:last-child{margin-bottom:0}:host .content .section .section-title{margin-bottom:1rem;font-size:1.125rem;line-height:1.75rem;font-weight:500}:host .content .section .items-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:1rem}:host .content .list-view .items-table{width:100%;border-collapse:collapse}:host .content .list-view .items-table th{border-bottom-width:1px;padding:.75rem;text-align:start;font-weight:500;background-color:rgb(var(--ax-sys-color-surface));color:rgb(var(--ax-sys-color-on-surface));border-color:rgb(var(--ax-sys-color-border-surface))}:host .content .list-view .items-table th.name-column{width:50%}:host .content .list-view .items-table th.type-column{width:20%}:host .content .list-view .items-table th.size-column{width:15%}:host .content .list-view .items-table th.date-column{width:15%}:host .content .list-view .items-table td{border-bottom-width:1px;--tw-border-opacity: 1;border-color:rgba(var(--ax-sys-color-border-surface),var(--tw-border-opacity, 1));padding:.75rem}:host .content .list-view .items-table td.name-column .item-name{display:flex;align-items:center;gap:.5rem}:host .content .list-view .items-table td.name-column .item-name i{font-size:1.25rem;line-height:1.75rem}:host .content .list-view .items-table tr{cursor:pointer;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}:host .content .list-view .items-table tr:hover{--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-lighter-surface),var(--tw-bg-opacity, 1))}:host .content .list-view .items-table tr.folder-row td .item-name i{--tw-text-opacity: 1;color:rgb(234 179 8 / var(--tw-text-opacity, 1))}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "pipe", type: i1$1.AsyncPipe, name: "async" }, { kind: "ngmodule", type: RouterModule }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i5$1.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "ngmodule", type: AXLoadingModule }, { kind: "ngmodule", type: AXFormatModule }, { kind: "pipe", type: i3.AXFormatPipe, name: "format" }, { kind: "ngmodule", type: AXDateTimeModule }, { kind: "ngmodule", type: AXMenuModule }, { kind: "component", type: i4.AXContextMenuComponent, selector: "ax-context-menu", inputs: ["orientation", "openOn", "closeOn", "items", "target"], outputs: ["onItemClick", "onOpening"] }, { kind: "directive", type: AXPElementDataDirective, selector: "[axp-data]", inputs: ["axp-data", "axp-data-path"] }] }); }
4148
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.3", type: AXMDocumentExplorerComponent, isStandalone: true, selector: "axm-document-explorer", viewQueries: [{ propertyName: "contextMenu", first: true, predicate: ["itemsContextMenu"], descendants: true, isSignal: true }, { propertyName: "rootContextMenu", first: true, predicate: ["rootContextMenu"], descendants: true, isSignal: true }], ngImport: i0, template: "<!-- Content -->\n<div class=\"content\">\n <!-- Empty State -->\n @if (vm.folders().length === 0 && vm.files().length === 0) {\n <div class=\"ax-flex ax-flex-col ax-items-center ax-justify-center ax-py-16 ax-h-full\">\n <ax-icon icon=\"fa-light fa-folder-open\" class=\"ax-text-6xl ax-mb-4\"></ax-icon>\n <h3 class=\"ax-text-xl ax-font-medium ax-mb-2\">No Items Found</h3>\n <p class=\"\">This folder is empty. Add some files or folders to get started.</p>\n </div>\n } @else {\n <!-- Grid View -->\n @if (vm.isGridView()) {\n <!-- Folders Section -->\n @if (vm.folders().length > 0) {\n <div class=\"section\">\n <h3 class=\"section-title\">Folders</h3>\n <div class=\"items-grid\">\n @for (folder of vm.folders(); track folder.id) {\n <ng-container [ngTemplateOutlet]=\"gridFolderTemplate\" [ngTemplateOutletContext]=\"{ $implicit: folder }\">\n </ng-container>\n }\n </div>\n </div>\n }\n\n <!-- Files Section -->\n @if (vm.files().length > 0) {\n <div class=\"section\">\n <h3 class=\"section-title\">Files</h3>\n <div class=\"items-grid\">\n @for (file of vm.files(); track file.id) {\n <ng-container [ngTemplateOutlet]=\"gridFileTemplate\" [ngTemplateOutletContext]=\"{ $implicit: file }\">\n </ng-container>\n }\n </div>\n </div>\n }\n <!-- Grid View End -->\n }\n\n <!-- List View -->\n @if (vm.isListView()) {\n <div class=\"list-view\">\n <table class=\"items-table\">\n <thead>\n <tr>\n <th class=\"name-column\">Name</th>\n <th class=\"type-column\">Type</th>\n <th class=\"size-column\">Size</th>\n <th class=\"date-column\">Last Modified</th>\n </tr>\n </thead>\n <tbody>\n @for (folder of vm.folders(); track folder.id) {\n <ng-container [ngTemplateOutlet]=\"listFolderTemplate\" [ngTemplateOutletContext]=\"{ $implicit: folder }\">\n </ng-container>\n } @for (file of vm.files(); track file.id) {\n <ng-container [ngTemplateOutlet]=\"listFileTemplate\" [ngTemplateOutletContext]=\"{ $implicit: file }\">\n </ng-container>\n }\n </tbody>\n </table>\n </div>\n } }\n</div>\n\n<!-- Grid View Templates -->\n<ng-template #gridFolderTemplate let-folder>\n <div\n class=\"ax-group ax-cursor-pointer axp-explorer-item\"\n [axp-data]=\"folder\"\n (dblclick)=\"handleNavigateToFolder(folder.id)\"\n >\n <div class=\"ax-flex ax-flex-col ax-gap-1 ax-p-4 ax-rounded-lg ax-border ax-lighter-surface\">\n <div class=\"ax-text-yellow-400 fa-3x ax-mb-2\" style=\"--fa-animation-duration: 2s\">\n @if (vm.isLoadingFolder(folder.id)) {\n <ng-container [ngTemplateOutlet]=\"folderLoading\"> </ng-container>\n } @else {\n <ax-icon icon=\"fa-solid fa-folder-closed \"></ax-icon>\n }\n </div>\n <div class=\"ax-flex ax-justify-between ax-font-semibold ax-w-full\">\n <span class=\"ax-text-sm ax-truncate ax-text-start\">{{ folder.name }}</span>\n </div>\n <div class=\"ax-flex ax-justify-between ax-w-full ax-font-semibold ax-opacity-65\">\n <span class=\"ax-text-xs ax-text-neutral\">{{ folder.childrenCount }} items</span>\n <span class=\"ax-text-xs ax-text-neutral\">{{\n folder.lastModified | format : 'datetime' : { format: 'datetime' } | async\n }}</span>\n </div>\n </div>\n </div>\n</ng-template>\n\n<ng-template #gridFileTemplate let-file>\n @let fileInfo = vm.getFileInfo(file.name);\n <div class=\"ax-group ax-cursor-pointer axp-explorer-item\" [axp-data]=\"file\" (dblclick)=\"openFile(file)\">\n <div class=\"ax-flex ax-flex-col ax-gap-1 ax-p-4 ax-rounded-lg ax-border ax-lighter-surface\">\n <div class=\"ax-text-yellow-400 fa-3x ax-mb-2\" style=\"--fa-animation-duration: 2s\">\n <i class=\"fa-fw {{ fileInfo.icon }} fa-solid\"></i>\n </div>\n <div class=\"ax-flex ax-justify-between ax-font-semibold ax-w-full\">\n <span class=\"ax-text-sm ax-truncate ax-text-start\">{{ file.name }}</span>\n </div>\n <div class=\"ax-flex ax-justify-between ax-w-full ax-font-semibold ax-opacity-65\">\n <span class=\"ax-text-xs ax-text-neutral\">{{ file.size | format : 'filesize' | async }}</span>\n <span class=\"ax-text-xs ax-text-neutral\">{{\n file.lastModified | format : 'datetime' : { format: 'datetime' } | async\n }}</span>\n </div>\n </div>\n </div>\n</ng-template>\n\n<!-- List View Templates -->\n<ng-template #listFolderTemplate let-folder>\n <tr class=\"folder-row\" (dblclick)=\"handleNavigateToFolder(folder.id)\">\n <td class=\"name-column axp-explorer-item\" [axp-data]=\"folder\">\n <div class=\"item-name\">\n @if (vm.isLoadingFolder(folder.id)) {\n <ng-container [ngTemplateOutlet]=\"folderLoading\"> </ng-container>\n } @else {\n <i class=\"fas fa-folder-closed\"></i>\n }\n <span>{{ folder.name }}</span>\n </div>\n </td>\n <td class=\"type-column axp-explorer-item\" [axp-data]=\"folder\">Folder</td>\n <td class=\"size-column axp-explorer-item\" [axp-data]=\"folder\">{{ folder.size | format : 'filesize' | async }}</td>\n <td class=\"date-column axp-explorer-item\" [axp-data]=\"folder\">\n {{ folder.lastModified | format : 'datetime' : { format: 'datetime' } | async }}\n </td>\n </tr>\n</ng-template>\n\n<ng-template #listFileTemplate let-file>\n <tr class=\"file-row\">\n @let fileInfo = vm.getFileInfo(file.name);\n <td class=\"name-column axp-explorer-item\" [axp-data]=\"file\">\n <div class=\"item-name hover:ax-underline\">\n <i class=\"fa-fw {{ fileInfo.icon }} fa-solid\"></i>\n <span>{{ file.name }}</span>\n </div>\n </td>\n <td class=\"type-column axp-explorer-item\" [axp-data]=\"file\">{{ fileInfo.type }}</td>\n <td class=\"size-column axp-explorer-item\" [axp-data]=\"file\">{{ file.size | format : 'filesize' | async }}</td>\n <td class=\"date-column axp-explorer-item\" [axp-data]=\"file\">\n {{ file.lastModified | format : 'datetime' : { format: 'datetime' } | async }}\n </td>\n </tr>\n</ng-template>\n\n<ng-template #folderLoading>\n <i class=\"fa-light fa-spinner fa-spin-pulse ax-text-2xl\"></i>\n</ng-template>\n\n<!-- Context Menu-->\n<ax-context-menu\n #itemsContextMenu\n [target]=\"'.axp-explorer-item'\"\n [orientation]=\"'vertical'\"\n [closeOn]=\"'leave'\"\n (onItemClick)=\"handleContextMenuItemClick($event)\"\n (onOpening)=\"handleContextMenuOnOpening($event)\"\n>\n</ax-context-menu>\n\n<ax-context-menu\n #rootContextMenu\n [target]=\"'axm-document-explorer'\"\n [orientation]=\"'vertical'\"\n [closeOn]=\"'leave'\"\n (onItemClick)=\"handleContextMenuItemClick($event)\"\n (onOpening)=\"handleContextMenuRootOnOpening($event)\"\n>\n</ax-context-menu>\n", styles: [":host{display:flex;height:100%;flex:1 1 0%;flex-direction:column;gap:1rem}:host .content{flex:1 1 0%;-webkit-user-select:none;-moz-user-select:-moz-none;user-select:none;overflow-y:auto}:host .content .loading-state{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1rem;padding:2rem}:host .content .loading-state i{font-size:1.5rem;line-height:2rem}:host .content .section{margin-bottom:2rem}:host .content .section:last-child{margin-bottom:0}:host .content .section .section-title{margin-bottom:1rem;font-size:1.125rem;line-height:1.75rem;font-weight:500}:host .content .section .items-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:1rem}:host .content .list-view .items-table{width:100%;border-collapse:collapse}:host .content .list-view .items-table th{border-bottom-width:1px;padding:.75rem;text-align:start;font-weight:500;background-color:rgb(var(--ax-sys-color-surface));color:rgb(var(--ax-sys-color-on-surface));border-color:rgb(var(--ax-sys-color-border-surface))}:host .content .list-view .items-table th.name-column{width:50%}:host .content .list-view .items-table th.type-column{width:20%}:host .content .list-view .items-table th.size-column{width:15%}:host .content .list-view .items-table th.date-column{width:15%}:host .content .list-view .items-table td{border-bottom-width:1px;--tw-border-opacity: 1;border-color:rgba(var(--ax-sys-color-border-surface),var(--tw-border-opacity, 1));padding:.75rem}:host .content .list-view .items-table td.name-column .item-name{display:flex;align-items:center;gap:.5rem}:host .content .list-view .items-table td.name-column .item-name i{font-size:1.25rem;line-height:1.75rem}:host .content .list-view .items-table tr{cursor:pointer;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}:host .content .list-view .items-table tr:hover{--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-lighter-surface),var(--tw-bg-opacity, 1))}:host .content .list-view .items-table tr.folder-row td .item-name i{--tw-text-opacity: 1;color:rgb(234 179 8 / var(--tw-text-opacity, 1))}.animation-duration-2s{--fa-animation-duration: 2s}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "pipe", type: i1$1.AsyncPipe, name: "async" }, { kind: "ngmodule", type: RouterModule }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i5$1.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "ngmodule", type: AXLoadingModule }, { kind: "ngmodule", type: AXFormatModule }, { kind: "pipe", type: i3.AXFormatPipe, name: "format" }, { kind: "ngmodule", type: AXDateTimeModule }, { kind: "ngmodule", type: AXMenuModule }, { kind: "component", type: i4.AXContextMenuComponent, selector: "ax-context-menu", inputs: ["orientation", "openOn", "closeOn", "items", "target"], outputs: ["onItemClick", "onOpening"] }, { kind: "directive", type: AXPElementDataDirective, selector: "[axp-data]", inputs: ["axp-data", "axp-data-path"] }] }); }
3835
4149
  }
3836
4150
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXMDocumentExplorerComponent, decorators: [{
3837
4151
  type: Component,
@@ -3844,22 +4158,59 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImpor
3844
4158
  AXDateTimeModule,
3845
4159
  AXMenuModule,
3846
4160
  AXPElementDataDirective,
3847
- ], template: "<!-- Content -->\n<div class=\"content\">\n <!-- Empty State -->\n @if (vm.folders().length === 0 && vm.files().length === 0) {\n <div class=\"ax-flex ax-flex-col ax-items-center ax-justify-center ax-py-16 ax-h-full\">\n <ax-icon icon=\"fa-light fa-folder-open\" class=\"ax-text-6xl ax-mb-4\"></ax-icon>\n <h3 class=\"ax-text-xl ax-font-medium ax-mb-2\">No Items Found</h3>\n <p class=\"\">This folder is empty. Add some files or folders to get started.</p>\n </div>\n } @else {\n <!-- Grid View -->\n @if (vm.isGridView()) {\n <!-- Folders Section -->\n @if (vm.folders().length > 0) {\n <div class=\"section\">\n <h3 class=\"section-title\">Folders</h3>\n <div class=\"items-grid\">\n @for (folder of vm.folders(); track folder.id) {\n <ng-container [ngTemplateOutlet]=\"gridFolderTemplate\" [ngTemplateOutletContext]=\"{ $implicit: folder }\">\n </ng-container>\n }\n </div>\n </div>\n }\n\n <!-- Files Section -->\n @if (vm.files().length > 0) {\n <div class=\"section\">\n <h3 class=\"section-title\">Files</h3>\n <div class=\"items-grid\">\n @for (file of vm.files(); track file.id) {\n <ng-container [ngTemplateOutlet]=\"gridFileTemplate\" [ngTemplateOutletContext]=\"{ $implicit: file }\">\n </ng-container>\n }\n </div>\n </div>\n }\n <!-- Grid View End -->\n }\n\n <!-- List View -->\n @if (vm.isListView()) {\n <div class=\"list-view\">\n <table class=\"items-table\">\n <thead>\n <tr>\n <th class=\"name-column\">Name</th>\n <th class=\"type-column\">Type</th>\n <th class=\"size-column\">Size</th>\n <th class=\"date-column\">Last Modified</th>\n </tr>\n </thead>\n <tbody>\n @for (folder of vm.folders(); track folder.id) {\n <ng-container [ngTemplateOutlet]=\"listFolderTemplate\" [ngTemplateOutletContext]=\"{ $implicit: folder }\">\n </ng-container>\n } @for (file of vm.files(); track file.id) {\n <ng-container [ngTemplateOutlet]=\"listFileTemplate\" [ngTemplateOutletContext]=\"{ $implicit: file }\">\n </ng-container>\n }\n </tbody>\n </table>\n </div>\n } }\n</div>\n\n<!-- Grid View Templates -->\n<ng-template #gridFolderTemplate let-folder>\n <div class=\"ax-group ax-cursor-pointer axp-explorer-item\" [axp-data]=\"folder\"\n (dblclick)=\"handleNavigateToFolder(folder.id)\">\n <div class=\"ax-flex ax-flex-col ax-gap-1 ax-p-4 ax-rounded-lg ax-border ax-lighter-surface\">\n <div class=\"ax-text-yellow-400 fa-3x ax-mb-2\" style=\"--fa-animation-duration: 2s\">\n @if (vm.isLoadingFolder(folder.id)) {\n <ng-container [ngTemplateOutlet]=\"folderLoading\"> </ng-container>\n } @else {\n <ax-icon icon=\"fa-solid fa-folder-closed \"></ax-icon>\n }\n </div>\n <div class=\"ax-flex ax-justify-between ax-font-semibold ax-w-full\">\n <span class=\"ax-text-sm ax-truncate ax-text-start\">{{ folder.name }}</span>\n </div>\n <div class=\"ax-flex ax-justify-between ax-w-full ax-font-semibold ax-opacity-65\">\n <span class=\"ax-text-xs ax-text-neutral\">15 items</span>\n <span class=\"ax-text-xs ax-text-neutral\">{{ folder.lastModified | format : 'datetime' : { format: 'datetime' } |\n async }}</span>\n </div>\n </div>\n </div>\n</ng-template>\n\n<ng-template #gridFileTemplate let-file>\n @let fileInfo = vm.getFileInfo(file.name);\n <div class=\"ax-group ax-cursor-pointer axp-explorer-item\" [axp-data]=\"file\"\n (dblclick)=\"handleNavigateToFolder(file.id)\">\n <div class=\"ax-flex ax-flex-col ax-gap-1 ax-p-4 ax-rounded-lg ax-border ax-lighter-surface\">\n <div class=\"ax-text-yellow-400 fa-3x ax-mb-2\" style=\"--fa-animation-duration: 2s\">\n <i class=\"fa-fw {{ fileInfo.icon }} fa-solid\"></i>\n </div>\n <div class=\"ax-flex ax-justify-between ax-font-semibold ax-w-full\">\n <span class=\"ax-text-sm ax-truncate ax-text-start\">{{ file.name }}</span>\n </div>\n <div class=\"ax-flex ax-justify-between ax-w-full ax-font-semibold ax-opacity-65\">\n <span class=\"ax-text-xs ax-text-neutral\">{{ file.size | format : 'filesize' | async }}</span>\n <span class=\"ax-text-xs ax-text-neutral\">{{ file.lastModified | format : 'datetime' : { format: 'datetime' } |\n async }}</span>\n </div>\n </div>\n </div>\n</ng-template>\n\n<!-- List View Templates -->\n<ng-template #listFolderTemplate let-folder>\n <tr class=\"folder-row\" (dblclick)=\"handleNavigateToFolder(folder.id)\">\n <td class=\"name-column axp-explorer-item\" [axp-data]=\"folder\">\n <div class=\"item-name\">\n @if (vm.isLoadingFolder(folder.id)) {\n <ng-container [ngTemplateOutlet]=\"folderLoading\"> </ng-container>\n } @else {\n <i class=\"fas fa-folder-closed\"></i>\n }\n <span>{{ folder.name }}</span>\n </div>\n </td>\n <td class=\"type-column axp-explorer-item\" [axp-data]=\"folder\">Folder</td>\n <td class=\"size-column axp-explorer-item\" [axp-data]=\"folder\">{{ folder.size | format : 'filesize' | async }}</td>\n <td class=\"date-column axp-explorer-item\" [axp-data]=\"folder\">\n {{ folder.lastModified | format : 'datetime' : { format: 'datetime' } | async }}\n </td>\n </tr>\n</ng-template>\n\n<ng-template #listFileTemplate let-file>\n <tr class=\"file-row\">\n @let fileInfo = vm.getFileInfo(file.name);\n <td class=\"name-column axp-explorer-item\" [axp-data]=\"file\">\n <div class=\"item-name hover:ax-underline\">\n <i class=\"fa-fw {{ fileInfo.icon }} fa-solid\"></i>\n <span>{{ file.name }}</span>\n </div>\n </td>\n <td class=\"type-column axp-explorer-item\" [axp-data]=\"file\">{{ fileInfo.type }}</td>\n <td class=\"size-column axp-explorer-item\" [axp-data]=\"file\">{{ file.size | format : 'filesize' | async }}</td>\n <td class=\"date-column axp-explorer-item\" [axp-data]=\"file\">\n {{ file.lastModified | format : 'datetime' : { format: 'datetime' } | async }}\n </td>\n </tr>\n</ng-template>\n\n<ng-template #folderLoading>\n <i class=\"fa-light fa-spinner fa-spin-pulse ax-text-2xl\"></i>\n</ng-template>\n\n<!-- Context Menu-->\n<ax-context-menu #itemsContextMenu [target]=\"'.axp-explorer-item'\" [orientation]=\"'vertical'\" [closeOn]=\"'leave'\"\n (onItemClick)=\"handleContextMenuItemClick($event)\" (onOpening)=\"handleContextMenuOnOpening($event)\">\n</ax-context-menu>\n\n<ax-context-menu #rootContextMenu [target]=\"'axm-document-explorer'\" [orientation]=\"'vertical'\" [closeOn]=\"'leave'\"\n (onItemClick)=\"handleContextMenuItemClick($event)\" (onOpening)=\"handleContextMenuRootOnOpening($event)\">\n</ax-context-menu>", styles: [":host{display:flex;height:100%;flex:1 1 0%;flex-direction:column;gap:1rem}:host .content{flex:1 1 0%;-webkit-user-select:none;-moz-user-select:-moz-none;user-select:none;overflow-y:auto}:host .content .loading-state{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1rem;padding:2rem}:host .content .loading-state i{font-size:1.5rem;line-height:2rem}:host .content .section{margin-bottom:2rem}:host .content .section:last-child{margin-bottom:0}:host .content .section .section-title{margin-bottom:1rem;font-size:1.125rem;line-height:1.75rem;font-weight:500}:host .content .section .items-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:1rem}:host .content .list-view .items-table{width:100%;border-collapse:collapse}:host .content .list-view .items-table th{border-bottom-width:1px;padding:.75rem;text-align:start;font-weight:500;background-color:rgb(var(--ax-sys-color-surface));color:rgb(var(--ax-sys-color-on-surface));border-color:rgb(var(--ax-sys-color-border-surface))}:host .content .list-view .items-table th.name-column{width:50%}:host .content .list-view .items-table th.type-column{width:20%}:host .content .list-view .items-table th.size-column{width:15%}:host .content .list-view .items-table th.date-column{width:15%}:host .content .list-view .items-table td{border-bottom-width:1px;--tw-border-opacity: 1;border-color:rgba(var(--ax-sys-color-border-surface),var(--tw-border-opacity, 1));padding:.75rem}:host .content .list-view .items-table td.name-column .item-name{display:flex;align-items:center;gap:.5rem}:host .content .list-view .items-table td.name-column .item-name i{font-size:1.25rem;line-height:1.75rem}:host .content .list-view .items-table tr{cursor:pointer;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}:host .content .list-view .items-table tr:hover{--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-lighter-surface),var(--tw-bg-opacity, 1))}:host .content .list-view .items-table tr.folder-row td .item-name i{--tw-text-opacity: 1;color:rgb(234 179 8 / var(--tw-text-opacity, 1))}\n"] }]
4161
+ ], template: "<!-- Content -->\n<div class=\"content\">\n <!-- Empty State -->\n @if (vm.folders().length === 0 && vm.files().length === 0) {\n <div class=\"ax-flex ax-flex-col ax-items-center ax-justify-center ax-py-16 ax-h-full\">\n <ax-icon icon=\"fa-light fa-folder-open\" class=\"ax-text-6xl ax-mb-4\"></ax-icon>\n <h3 class=\"ax-text-xl ax-font-medium ax-mb-2\">No Items Found</h3>\n <p class=\"\">This folder is empty. Add some files or folders to get started.</p>\n </div>\n } @else {\n <!-- Grid View -->\n @if (vm.isGridView()) {\n <!-- Folders Section -->\n @if (vm.folders().length > 0) {\n <div class=\"section\">\n <h3 class=\"section-title\">Folders</h3>\n <div class=\"items-grid\">\n @for (folder of vm.folders(); track folder.id) {\n <ng-container [ngTemplateOutlet]=\"gridFolderTemplate\" [ngTemplateOutletContext]=\"{ $implicit: folder }\">\n </ng-container>\n }\n </div>\n </div>\n }\n\n <!-- Files Section -->\n @if (vm.files().length > 0) {\n <div class=\"section\">\n <h3 class=\"section-title\">Files</h3>\n <div class=\"items-grid\">\n @for (file of vm.files(); track file.id) {\n <ng-container [ngTemplateOutlet]=\"gridFileTemplate\" [ngTemplateOutletContext]=\"{ $implicit: file }\">\n </ng-container>\n }\n </div>\n </div>\n }\n <!-- Grid View End -->\n }\n\n <!-- List View -->\n @if (vm.isListView()) {\n <div class=\"list-view\">\n <table class=\"items-table\">\n <thead>\n <tr>\n <th class=\"name-column\">Name</th>\n <th class=\"type-column\">Type</th>\n <th class=\"size-column\">Size</th>\n <th class=\"date-column\">Last Modified</th>\n </tr>\n </thead>\n <tbody>\n @for (folder of vm.folders(); track folder.id) {\n <ng-container [ngTemplateOutlet]=\"listFolderTemplate\" [ngTemplateOutletContext]=\"{ $implicit: folder }\">\n </ng-container>\n } @for (file of vm.files(); track file.id) {\n <ng-container [ngTemplateOutlet]=\"listFileTemplate\" [ngTemplateOutletContext]=\"{ $implicit: file }\">\n </ng-container>\n }\n </tbody>\n </table>\n </div>\n } }\n</div>\n\n<!-- Grid View Templates -->\n<ng-template #gridFolderTemplate let-folder>\n <div\n class=\"ax-group ax-cursor-pointer axp-explorer-item\"\n [axp-data]=\"folder\"\n (dblclick)=\"handleNavigateToFolder(folder.id)\"\n >\n <div class=\"ax-flex ax-flex-col ax-gap-1 ax-p-4 ax-rounded-lg ax-border ax-lighter-surface\">\n <div class=\"ax-text-yellow-400 fa-3x ax-mb-2\" style=\"--fa-animation-duration: 2s\">\n @if (vm.isLoadingFolder(folder.id)) {\n <ng-container [ngTemplateOutlet]=\"folderLoading\"> </ng-container>\n } @else {\n <ax-icon icon=\"fa-solid fa-folder-closed \"></ax-icon>\n }\n </div>\n <div class=\"ax-flex ax-justify-between ax-font-semibold ax-w-full\">\n <span class=\"ax-text-sm ax-truncate ax-text-start\">{{ folder.name }}</span>\n </div>\n <div class=\"ax-flex ax-justify-between ax-w-full ax-font-semibold ax-opacity-65\">\n <span class=\"ax-text-xs ax-text-neutral\">{{ folder.childrenCount }} items</span>\n <span class=\"ax-text-xs ax-text-neutral\">{{\n folder.lastModified | format : 'datetime' : { format: 'datetime' } | async\n }}</span>\n </div>\n </div>\n </div>\n</ng-template>\n\n<ng-template #gridFileTemplate let-file>\n @let fileInfo = vm.getFileInfo(file.name);\n <div class=\"ax-group ax-cursor-pointer axp-explorer-item\" [axp-data]=\"file\" (dblclick)=\"openFile(file)\">\n <div class=\"ax-flex ax-flex-col ax-gap-1 ax-p-4 ax-rounded-lg ax-border ax-lighter-surface\">\n <div class=\"ax-text-yellow-400 fa-3x ax-mb-2\" style=\"--fa-animation-duration: 2s\">\n <i class=\"fa-fw {{ fileInfo.icon }} fa-solid\"></i>\n </div>\n <div class=\"ax-flex ax-justify-between ax-font-semibold ax-w-full\">\n <span class=\"ax-text-sm ax-truncate ax-text-start\">{{ file.name }}</span>\n </div>\n <div class=\"ax-flex ax-justify-between ax-w-full ax-font-semibold ax-opacity-65\">\n <span class=\"ax-text-xs ax-text-neutral\">{{ file.size | format : 'filesize' | async }}</span>\n <span class=\"ax-text-xs ax-text-neutral\">{{\n file.lastModified | format : 'datetime' : { format: 'datetime' } | async\n }}</span>\n </div>\n </div>\n </div>\n</ng-template>\n\n<!-- List View Templates -->\n<ng-template #listFolderTemplate let-folder>\n <tr class=\"folder-row\" (dblclick)=\"handleNavigateToFolder(folder.id)\">\n <td class=\"name-column axp-explorer-item\" [axp-data]=\"folder\">\n <div class=\"item-name\">\n @if (vm.isLoadingFolder(folder.id)) {\n <ng-container [ngTemplateOutlet]=\"folderLoading\"> </ng-container>\n } @else {\n <i class=\"fas fa-folder-closed\"></i>\n }\n <span>{{ folder.name }}</span>\n </div>\n </td>\n <td class=\"type-column axp-explorer-item\" [axp-data]=\"folder\">Folder</td>\n <td class=\"size-column axp-explorer-item\" [axp-data]=\"folder\">{{ folder.size | format : 'filesize' | async }}</td>\n <td class=\"date-column axp-explorer-item\" [axp-data]=\"folder\">\n {{ folder.lastModified | format : 'datetime' : { format: 'datetime' } | async }}\n </td>\n </tr>\n</ng-template>\n\n<ng-template #listFileTemplate let-file>\n <tr class=\"file-row\">\n @let fileInfo = vm.getFileInfo(file.name);\n <td class=\"name-column axp-explorer-item\" [axp-data]=\"file\">\n <div class=\"item-name hover:ax-underline\">\n <i class=\"fa-fw {{ fileInfo.icon }} fa-solid\"></i>\n <span>{{ file.name }}</span>\n </div>\n </td>\n <td class=\"type-column axp-explorer-item\" [axp-data]=\"file\">{{ fileInfo.type }}</td>\n <td class=\"size-column axp-explorer-item\" [axp-data]=\"file\">{{ file.size | format : 'filesize' | async }}</td>\n <td class=\"date-column axp-explorer-item\" [axp-data]=\"file\">\n {{ file.lastModified | format : 'datetime' : { format: 'datetime' } | async }}\n </td>\n </tr>\n</ng-template>\n\n<ng-template #folderLoading>\n <i class=\"fa-light fa-spinner fa-spin-pulse ax-text-2xl\"></i>\n</ng-template>\n\n<!-- Context Menu-->\n<ax-context-menu\n #itemsContextMenu\n [target]=\"'.axp-explorer-item'\"\n [orientation]=\"'vertical'\"\n [closeOn]=\"'leave'\"\n (onItemClick)=\"handleContextMenuItemClick($event)\"\n (onOpening)=\"handleContextMenuOnOpening($event)\"\n>\n</ax-context-menu>\n\n<ax-context-menu\n #rootContextMenu\n [target]=\"'axm-document-explorer'\"\n [orientation]=\"'vertical'\"\n [closeOn]=\"'leave'\"\n (onItemClick)=\"handleContextMenuItemClick($event)\"\n (onOpening)=\"handleContextMenuRootOnOpening($event)\"\n>\n</ax-context-menu>\n", styles: [":host{display:flex;height:100%;flex:1 1 0%;flex-direction:column;gap:1rem}:host .content{flex:1 1 0%;-webkit-user-select:none;-moz-user-select:-moz-none;user-select:none;overflow-y:auto}:host .content .loading-state{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1rem;padding:2rem}:host .content .loading-state i{font-size:1.5rem;line-height:2rem}:host .content .section{margin-bottom:2rem}:host .content .section:last-child{margin-bottom:0}:host .content .section .section-title{margin-bottom:1rem;font-size:1.125rem;line-height:1.75rem;font-weight:500}:host .content .section .items-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:1rem}:host .content .list-view .items-table{width:100%;border-collapse:collapse}:host .content .list-view .items-table th{border-bottom-width:1px;padding:.75rem;text-align:start;font-weight:500;background-color:rgb(var(--ax-sys-color-surface));color:rgb(var(--ax-sys-color-on-surface));border-color:rgb(var(--ax-sys-color-border-surface))}:host .content .list-view .items-table th.name-column{width:50%}:host .content .list-view .items-table th.type-column{width:20%}:host .content .list-view .items-table th.size-column{width:15%}:host .content .list-view .items-table th.date-column{width:15%}:host .content .list-view .items-table td{border-bottom-width:1px;--tw-border-opacity: 1;border-color:rgba(var(--ax-sys-color-border-surface),var(--tw-border-opacity, 1));padding:.75rem}:host .content .list-view .items-table td.name-column .item-name{display:flex;align-items:center;gap:.5rem}:host .content .list-view .items-table td.name-column .item-name i{font-size:1.25rem;line-height:1.75rem}:host .content .list-view .items-table tr{cursor:pointer;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}:host .content .list-view .items-table tr:hover{--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-lighter-surface),var(--tw-bg-opacity, 1))}:host .content .list-view .items-table tr.folder-row td .item-name i{--tw-text-opacity: 1;color:rgb(234 179 8 / var(--tw-text-opacity, 1))}.animation-duration-2s{--fa-animation-duration: 2s}\n"] }]
3848
4162
  }] });
3849
4163
 
3850
4164
  class AXMDocumentAttachmentWidgetEditComponent extends AXPWidgetComponent {
4165
+ constructor() {
4166
+ super(...arguments);
4167
+ this.driveService = inject(AXMDocumentManagerService);
4168
+ this.vm = inject(AXPDocumentExplorerViewModel);
4169
+ this.rootConfig = RootConfig;
4170
+ this.documentExplorer = viewChild(AXMDocumentExplorerComponent);
4171
+ this.#navigateEffect = effect(() => {
4172
+ const navigatingFolderId = this.vm.navigatingFolderId();
4173
+ if (navigatingFolderId) {
4174
+ this.loadDrive(navigatingFolderId);
4175
+ }
4176
+ });
4177
+ }
4178
+ #navigateEffect;
4179
+ ngOnInit() {
4180
+ super.ngOnInit();
4181
+ this.vm.initialize();
4182
+ this.loadDrive();
4183
+ }
4184
+ async loadDrive(folderId) {
4185
+ if (folderId) {
4186
+ await this.vm.loadFolderContents(folderId);
4187
+ }
4188
+ else {
4189
+ const root = await this.driveService.getRoot(AXMDriveScope.Platform);
4190
+ if (root.result) {
4191
+ await this.vm.loadFolderContents(root.result.id);
4192
+ }
4193
+ }
4194
+ }
4195
+ handleNavigateToFolder(folderId) {
4196
+ this.vm.navigateToFolder(folderId);
4197
+ }
3851
4198
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXMDocumentAttachmentWidgetEditComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
3852
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.0.3", type: AXMDocumentAttachmentWidgetEditComponent, isStandalone: true, selector: "axm-document-attachment-widget", usesInheritance: true, ngImport: i0, template: `<axm-document-explorer></axm-document-explorer>`, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: AXMDocumentExplorerComponent, selector: "axm-document-explorer" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
4199
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "19.0.3", type: AXMDocumentAttachmentWidgetEditComponent, isStandalone: true, selector: "axm-document-attachment-edit-widget", providers: [AXPDocumentExplorerViewModel], viewQueries: [{ propertyName: "documentExplorer", first: true, predicate: AXMDocumentExplorerComponent, descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"ax-flex ax-flex-col ax-gap-3\" *translate=\"let t\">\n <!-- Header Section -->\n <div class=\"ax-flex ax-flex-row ax-justify-between\">\n <ax-button\n (onClick)=\"handleNavigateToFolder(vm.currentFolder()?.parentId!)\"\n [ngClass]=\"{ 'ax-invisible': !vm.currentFolder()?.parentId }\"\n >\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-arrow-left\"></ax-icon>\n </ax-prefix>\n </ax-button>\n <!-- Primary Actions -->\n <ax-button [text]=\"t('actions.add-item', { scope: rootConfig.config.i18n }) | async\" [color]=\"'primary'\">\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-plus\"></ax-icon>\n </ax-prefix>\n <ax-dropdown-panel>\n <!-- Upload Dropdown -->\n <ax-button-item-list>\n <ax-button-item\n (onClick)=\"documentExplorer()?.chooseFile()\"\n [text]=\"(t('drive-types.platform-drive', { scope: rootConfig.config.i18n }) | async)!\"\n >\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-file-arrow-up\"></ax-icon>\n </ax-prefix>\n </ax-button-item>\n </ax-button-item-list>\n </ax-dropdown-panel>\n </ax-button>\n </div>\n <axm-document-explorer></axm-document-explorer>\n</div>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: i1$1.AsyncPipe, name: "async" }, { kind: "component", type: AXMDocumentExplorerComponent, selector: "axm-document-explorer" }, { kind: "component", type: AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "ngmodule", type: AXDropdownButtonModule }, { kind: "ngmodule", type: AXDropdownModule }, { kind: "component", type: i3$1.AXDropdownPanelComponent, selector: "ax-dropdown-panel", inputs: ["isOpen", "fitParent", "dropdownWidth", "position", "placement", "_target", "adaptivityEnabled"], outputs: ["onOpened", "onClosed"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i5$1.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: i5$1.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: AXTranslationModule }, { kind: "directive", type: i4$1.AXTranslatorDirective, selector: "[translate]" }, { kind: "ngmodule", type: AXButtonModule }, { 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 }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
3853
4200
  }
3854
4201
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXMDocumentAttachmentWidgetEditComponent, decorators: [{
3855
4202
  type: Component,
3856
- args: [{
3857
- selector: 'axm-document-attachment-widget',
3858
- template: `<axm-document-explorer></axm-document-explorer>`,
3859
- changeDetection: ChangeDetectionStrategy.OnPush,
3860
- imports: [CommonModule, AXMDocumentExplorerComponent],
3861
- inputs: [],
3862
- }]
4203
+ args: [{ selector: 'axm-document-attachment-edit-widget', changeDetection: ChangeDetectionStrategy.OnPush, imports: [
4204
+ CommonModule,
4205
+ AXMDocumentExplorerComponent,
4206
+ AXButtonComponent,
4207
+ AXDropdownButtonModule,
4208
+ AXDropdownModule,
4209
+ AXDecoratorModule,
4210
+ AXTranslationModule,
4211
+ AXButtonModule,
4212
+ AXButtonGroupModule,
4213
+ ], inputs: [], providers: [AXPDocumentExplorerViewModel], template: "<div class=\"ax-flex ax-flex-col ax-gap-3\" *translate=\"let t\">\n <!-- Header Section -->\n <div class=\"ax-flex ax-flex-row ax-justify-between\">\n <ax-button\n (onClick)=\"handleNavigateToFolder(vm.currentFolder()?.parentId!)\"\n [ngClass]=\"{ 'ax-invisible': !vm.currentFolder()?.parentId }\"\n >\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-arrow-left\"></ax-icon>\n </ax-prefix>\n </ax-button>\n <!-- Primary Actions -->\n <ax-button [text]=\"t('actions.add-item', { scope: rootConfig.config.i18n }) | async\" [color]=\"'primary'\">\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-plus\"></ax-icon>\n </ax-prefix>\n <ax-dropdown-panel>\n <!-- Upload Dropdown -->\n <ax-button-item-list>\n <ax-button-item\n (onClick)=\"documentExplorer()?.chooseFile()\"\n [text]=\"(t('drive-types.platform-drive', { scope: rootConfig.config.i18n }) | async)!\"\n >\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-file-arrow-up\"></ax-icon>\n </ax-prefix>\n </ax-button-item>\n </ax-button-item-list>\n </ax-dropdown-panel>\n </ax-button>\n </div>\n <axm-document-explorer></axm-document-explorer>\n</div>\n" }]
3863
4214
  }] });
3864
4215
 
3865
4216
  var documentAttachmentWidgetEdit_component = /*#__PURE__*/Object.freeze({
@@ -3961,17 +4312,19 @@ function routesFacory() {
3961
4312
  const routes = [
3962
4313
  {
3963
4314
  path: ':app/drive/:scope',
3964
- component: config.viewers.root(),
4315
+ loadComponent: () => {
4316
+ return config.viewers.root();
4317
+ },
3965
4318
  canActivate: [AXPAuthGuard],
3966
4319
  data: { reuse: true },
3967
4320
  children: [
3968
4321
  {
3969
4322
  path: '',
3970
- loadComponent: () => import('./acorex-modules-document-management-drive.component-Sz198sA6.mjs').then((c) => c.AXMDocumentDriveComponent),
4323
+ loadComponent: () => import('./acorex-modules-document-management-drive.component-B6az6-_w.mjs').then((c) => c.AXMDocumentDriveComponent),
3971
4324
  },
3972
4325
  {
3973
4326
  path: ':id',
3974
- loadComponent: () => import('./acorex-modules-document-management-drive.component-Sz198sA6.mjs').then((c) => c.AXMDocumentDriveComponent),
4327
+ loadComponent: () => import('./acorex-modules-document-management-drive.component-B6az6-_w.mjs').then((c) => c.AXMDocumentDriveComponent),
3975
4328
  },
3976
4329
  ],
3977
4330
  },
@@ -3984,7 +4337,7 @@ class AXMDocumentManagementModule {
3984
4337
  AXMDocumentManagementDocumentTypeMetaValueEntityModule,
3985
4338
  AXMDocumentManagementDocumentTypeMetaDefinitionEntityModule,
3986
4339
  AXMDocumentManagementDocumentTypeEntityModule,
3987
- AXMDocumentManagementDocumentEntityModule, i6.AXPLayoutBuilderModule, AXMFileTypeModule] }); }
4340
+ AXMDocumentManagementDocumentEntityModule, i6.AXPLayoutBuilderModule, AXMFileTypeModule, i3$2.AXMediaViewerModule] }); }
3988
4341
  static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXMDocumentManagementModule, providers: [
3989
4342
  {
3990
4343
  provide: AXMFolderService,
@@ -4028,7 +4381,8 @@ class AXMDocumentManagementModule {
4028
4381
  AXPLayoutBuilderModule.forChild({
4029
4382
  widgets: [AXmFileTypeExtensionWidget, AXMDocumentAttachmentWidget],
4030
4383
  }),
4031
- AXMFileTypeModule] }); }
4384
+ AXMFileTypeModule,
4385
+ AXMediaViewerModule.forRoot()] }); }
4032
4386
  }
4033
4387
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXMDocumentManagementModule, decorators: [{
4034
4388
  type: NgModule,
@@ -4043,6 +4397,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImpor
4043
4397
  widgets: [AXmFileTypeExtensionWidget, AXMDocumentAttachmentWidget],
4044
4398
  }),
4045
4399
  AXMFileTypeModule,
4400
+ AXMediaViewerModule.forRoot(),
4046
4401
  ],
4047
4402
  exports: [],
4048
4403
  providers: [
@@ -4089,4 +4444,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImpor
4089
4444
  */
4090
4445
 
4091
4446
  export { AXMDocumentManagerService as A, AXMFolderServiceImpl as B, AXMEntityProvider as C, AXMMenuProvider as D, AXMSearchCommandProvider as E, AXMSettingProvider as F, RootConfig as R, AXPDocumentExplorerViewModel as a, AXMDocumentExplorerComponent as b, AXMDriveScope as c, AXMDocumentManagementModule as d, documentFactory as e, AXMDocumentManagementDocumentEntityModule as f, AXMDocumentService as g, AXMDocumentServiceImpl as h, documentTypeFactory as i, AXMDocumentManagementDocumentTypeEntityModule as j, AXMDocumentManagementDocumentTypeEntityService as k, AXMDocumentManagementDocumentTypeEntityServiceImpl as l, documentTypeMetaDefinitionfactory as m, AXMDocumentManagementDocumentTypeMetaDefinitionEntityModule as n, AXMDocumentManagementDocumentTypeMetaDefinitionEntityService as o, AXMDocumentManagementDocumentTypeMetaDefinitionEntityServiceImpl as p, documentTypeMetaValueFactory as q, AXMDocumentManagementDocumentTypeMetaValueEntityModule as r, AXMDocumentManagementDocumentTypeMetaValueEntityService as s, AXMDocumentManagementDocumentTypeMetaValueEntityServiceImpl as t, documentTypeStatusDefinitionFactory as u, AXMDocumentManagementDocumentTypeStatusDefinitionEntityModule as v, AXMDocumentManagementDocumentTypeStatusDefinitionEntityService as w, AXMDocumentManagementDocumentTypeStatusDefinitionEntityServiceImpl as x, folderFactory as y, AXMFolderService as z };
4092
- //# sourceMappingURL=acorex-modules-document-management-acorex-modules-document-management-C9ZCejjs.mjs.map
4447
+ //# sourceMappingURL=acorex-modules-document-management-acorex-modules-document-management-BmLGtKDq.mjs.map