@acorex/modules 19.2.17 → 19.2.19

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 +139 -15
  9. package/document-management/lib/features/document-explorer/document-explorer.viewmodel.d.ts +65 -6
  10. package/document-management/lib/features/document-explorer/views/detail-panel/detail-panel.component.d.ts +118 -0
  11. package/document-management/lib/features/document-explorer/views/details/details-view.component.d.ts +118 -0
  12. package/document-management/lib/features/document-explorer/views/large-icons/large-icons-view.component.d.ts +118 -0
  13. package/document-management/lib/features/document-explorer/views/large-tiles/large-tiles-view.component.d.ts +118 -0
  14. package/document-management/lib/features/document-explorer/views/list/list-view.component.d.ts +118 -0
  15. package/document-management/lib/features/document-explorer/views/small-icons/small-icons-view.component.d.ts +118 -0
  16. package/document-management/lib/features/document-explorer/views/small-tiles/small-tiles-view.component.d.ts +118 -0
  17. package/document-management/lib/features/drive/drive.component.d.ts +111 -90
  18. package/document-management/lib/features/drive-choose/drive-choose.component.d.ts +71 -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 +179 -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 +63 -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-B3u5feXf.mjs +507 -0
  54. package/fesm2022/acorex-modules-common-index-B3u5feXf.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-CpoLrul7.mjs} +803 -419
  59. package/fesm2022/acorex-modules-document-management-acorex-modules-document-management-CpoLrul7.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-Cp26sAs9.mjs} +7 -6
  61. package/fesm2022/acorex-modules-document-management-create-folder-dialog.component-Cp26sAs9.mjs.map +1 -0
  62. package/fesm2022/acorex-modules-document-management-details-view.component-CZyOdjEl.mjs +24 -0
  63. package/fesm2022/acorex-modules-document-management-details-view.component-CZyOdjEl.mjs.map +1 -0
  64. package/fesm2022/acorex-modules-document-management-drive-choose.component-HSZ-b7-z.mjs +163 -0
  65. package/fesm2022/acorex-modules-document-management-drive-choose.component-HSZ-b7-z.mjs.map +1 -0
  66. package/fesm2022/acorex-modules-document-management-drive.component-CZR-optD.mjs +246 -0
  67. package/fesm2022/acorex-modules-document-management-drive.component-CZR-optD.mjs.map +1 -0
  68. package/fesm2022/acorex-modules-document-management-large-icons-view.component-C5pB5bc2.mjs +20 -0
  69. package/fesm2022/acorex-modules-document-management-large-icons-view.component-C5pB5bc2.mjs.map +1 -0
  70. package/fesm2022/acorex-modules-document-management-large-tiles-view.component-D9PFgzMQ.mjs +24 -0
  71. package/fesm2022/acorex-modules-document-management-large-tiles-view.component-D9PFgzMQ.mjs.map +1 -0
  72. package/fesm2022/acorex-modules-document-management-list-view.component-DjULM8Me.mjs +20 -0
  73. package/fesm2022/acorex-modules-document-management-list-view.component-DjULM8Me.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-D3Cg9_5d.mjs} +6 -6
  75. package/fesm2022/acorex-modules-document-management-rename-node-dialog.component-D3Cg9_5d.mjs.map +1 -0
  76. package/fesm2022/acorex-modules-document-management-small-icons-view.component-4M8c_1Dt.mjs +20 -0
  77. package/fesm2022/acorex-modules-document-management-small-icons-view.component-4M8c_1Dt.mjs.map +1 -0
  78. package/fesm2022/acorex-modules-document-management-small-tiles-view.component-CXPXrH4g.mjs +24 -0
  79. package/fesm2022/acorex-modules-document-management-small-tiles-view.component-CXPXrH4g.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-D1tWlJqL.mjs} +2 -2
  101. package/fesm2022/{acorex-modules-organization-management-org-chart-configuration.page-aMPR3Oyw.mjs.map → acorex-modules-organization-management-org-chart-configuration.page-D1tWlJqL.mjs.map} +1 -1
  102. package/fesm2022/{acorex-modules-organization-management-org-chart.page-CAgSSVON.mjs → acorex-modules-organization-management-org-chart.page-bzbCuF-w.mjs} +3 -3
  103. package/fesm2022/{acorex-modules-organization-management-org-chart.page-CAgSSVON.mjs.map → acorex-modules-organization-management-org-chart.page-bzbCuF-w.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 +367 -14
  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
@@ -2,8 +2,8 @@ import { AXPSessionService, AXPAuthGuard, AXP_PERMISSION_PROVIDER } from '@acore
2
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, ChangeDetectionStrategy, Component, signal, computed, viewChild, effect } from '@angular/core';
6
- import { firstValueFrom, Subject } from 'rxjs';
5
+ import { inject, Injector, Injectable, NgModule, ChangeDetectionStrategy, Component, signal, computed, viewChild, input, effect, ViewEncapsulation } from '@angular/core';
6
+ import { firstValueFrom } 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';
9
9
  import { RouterModule, ROUTES } from '@angular/router';
@@ -13,11 +13,11 @@ import * as i1$1 from '@angular/common';
13
13
  import { CommonModule } from '@angular/common';
14
14
  import * as i7$1 from '@acorex/components/collapse';
15
15
  import { AXCollapseModule } from '@acorex/components/collapse';
16
- import * as i5$1 from '@acorex/components/decorators';
16
+ import * as i3 from '@acorex/components/decorators';
17
17
  import { AXDecoratorModule } from '@acorex/components/decorators';
18
18
  import * as i7 from '@acorex/components/form';
19
19
  import { AXFormModule } from '@acorex/components/form';
20
- import * as i5 from '@acorex/components/label';
20
+ import * as i4 from '@acorex/components/label';
21
21
  import { AXLabelModule } from '@acorex/components/label';
22
22
  import * as i1 from '@acorex/components/select-box';
23
23
  import { AXSelectBoxModule } from '@acorex/components/select-box';
@@ -26,27 +26,31 @@ 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 i3$2 from '@acorex/components/media-viewer';
30
+ import { AXMediaViewerModule } from '@acorex/components/media-viewer';
31
+ import * as i3$4 from '@acorex/platform/workflow';
32
+ import { AXPWorkflowService, AXPWorkflowAction, AXPWorkflowModule } from '@acorex/platform/workflow';
29
33
  import * as i2$1 from '@acorex/components/button';
30
- import { AXButtonComponent, AXButtonModule } from '@acorex/components/button';
34
+ import { AXButtonModule, AXButtonComponent } from '@acorex/components/button';
31
35
  import { AXButtonGroupModule } from '@acorex/components/button-group';
32
- import * as i3$1 from '@acorex/components/dropdown';
36
+ import * as i2$2 from '@acorex/components/dropdown';
33
37
  import { AXDropdownModule } from '@acorex/components/dropdown';
34
38
  import { AXDropdownButtonModule } from '@acorex/components/dropdown-button';
35
- import * as i4$1 from '@acorex/core/translation';
39
+ import * as i3$3 from '@acorex/core/translation';
36
40
  import { AXTranslationService, AXTranslationModule } from '@acorex/core/translation';
37
41
  import { AXLoadingModule } from '@acorex/components/loading';
38
- import * as i4 from '@acorex/components/menu';
42
+ import * as i3$1 from '@acorex/components/menu';
39
43
  import { AXMenuModule } from '@acorex/components/menu';
40
44
  import { AXDateTimeModule } from '@acorex/core/date-time';
41
- import * as i3 from '@acorex/core/format';
42
45
  import { AXFormatModule } from '@acorex/core/format';
43
- import { AXPElementDataDirective } from '@acorex/platform/core';
44
- import { get as get$1 } from 'lodash-es';
46
+ import { AXPLayoutThemeService } from '@acorex/platform/themes/shared';
47
+ import { get as get$1, set as set$1 } from 'lodash-es';
45
48
  import { AXDialogService } from '@acorex/components/dialog';
46
49
  import { AXPopupService } from '@acorex/components/popup';
50
+ import { AXFileService } from '@acorex/core/file';
47
51
  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';
52
+ import { AXBasePageComponent } from '@acorex/components/page';
53
+ import { AXUploaderService } from '@acorex/components/uploader';
50
54
 
51
55
  const config = {
52
56
  i18n: 'document-management',
@@ -114,11 +118,11 @@ class AXMEntityProvider {
114
118
  if (moduleName == RootConfig.module.name) {
115
119
  switch (entityName) {
116
120
  case RootConfig.entities.document.name:
117
- return (await Promise.resolve().then(function () { return index; })).documentFactory(this.injector);
121
+ return (await Promise.resolve().then(function () { return index$1; })).documentFactory(this.injector);
118
122
  case RootConfig.entities.documentType.name:
119
- return (await Promise.resolve().then(function () { return index; })).documentTypeFactory(this.injector);
123
+ return (await Promise.resolve().then(function () { return index$1; })).documentTypeFactory(this.injector);
120
124
  case RootConfig.entities.folder.name:
121
- return (await Promise.resolve().then(function () { return index; })).folderFactory(this.injector);
125
+ return (await Promise.resolve().then(function () { return index$1; })).folderFactory(this.injector);
122
126
  }
123
127
  }
124
128
  return null;
@@ -668,9 +672,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImpor
668
672
  }]
669
673
  }] });
670
674
 
671
- class AXMDocumentManagementDocumentTypeEntityService extends AXMEntityCrudServiceImpl {
675
+ class AXMDocumentTypeService extends AXMEntityCrudServiceImpl {
672
676
  }
673
- class AXMDocumentManagementDocumentTypeEntityServiceImpl extends AXMDocumentManagementDocumentTypeEntityService {
677
+ class AXMDocumentManagementDocumentTypeEntityServiceImpl extends AXMDocumentTypeService {
674
678
  constructor() {
675
679
  super(`${RootConfig.module.name}.${RootConfig.entities.documentType.name}`);
676
680
  }
@@ -682,7 +686,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImpor
682
686
  }], ctorParameters: () => [] });
683
687
 
684
688
  async function documentTypeFactory(injector) {
685
- const dataService = injector.get(AXMDocumentManagementDocumentTypeEntityService);
689
+ const dataService = injector.get(AXMDocumentTypeService);
686
690
  const metaDefinitionService = injector.get(AXMMetaDataDefinitionService);
687
691
  const i18n = RootConfig.config.i18n;
688
692
  const entityDef = {
@@ -823,7 +827,7 @@ async function documentTypeFactory(injector) {
823
827
  schema: {
824
828
  dataType: 'object',
825
829
  interface: {
826
- type: AXPWidgetsCatalog.documentAttachment,
830
+ type: AXPWidgetsCatalog.fileTypeExtension,
827
831
  options: {},
828
832
  },
829
833
  },
@@ -851,9 +855,7 @@ async function documentTypeFactory(injector) {
851
855
  queries: {
852
856
  byKey: {
853
857
  execute: async (id) => {
854
- const x = await dataService.getOne(id);
855
- console.log(x);
856
- return x;
858
+ return await dataService.getOne(id);
857
859
  },
858
860
  type: AXPEntityQueryType.Single,
859
861
  },
@@ -1126,7 +1128,7 @@ class AXMDocumentManagementDocumentTypeEntityModule {
1126
1128
  static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.0.3", ngImport: i0, type: AXMDocumentManagementDocumentTypeEntityModule }); }
1127
1129
  static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXMDocumentManagementDocumentTypeEntityModule, providers: [
1128
1130
  {
1129
- provide: AXMDocumentManagementDocumentTypeEntityService,
1131
+ provide: AXMDocumentTypeService,
1130
1132
  useClass: AXMDocumentManagementDocumentTypeEntityServiceImpl,
1131
1133
  },
1132
1134
  ] }); }
@@ -1139,7 +1141,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImpor
1139
1141
  declarations: [],
1140
1142
  providers: [
1141
1143
  {
1142
- provide: AXMDocumentManagementDocumentTypeEntityService,
1144
+ provide: AXMDocumentTypeService,
1143
1145
  useClass: AXMDocumentManagementDocumentTypeEntityServiceImpl,
1144
1146
  },
1145
1147
  ],
@@ -2203,11 +2205,10 @@ async function folderFactory(injector) {
2203
2205
  return entityDef;
2204
2206
  }
2205
2207
 
2206
- var index = /*#__PURE__*/Object.freeze({
2208
+ var index$1 = /*#__PURE__*/Object.freeze({
2207
2209
  __proto__: null,
2208
2210
  AXMDocumentManagementDocumentEntityModule: AXMDocumentManagementDocumentEntityModule,
2209
2211
  AXMDocumentManagementDocumentTypeEntityModule: AXMDocumentManagementDocumentTypeEntityModule,
2210
- AXMDocumentManagementDocumentTypeEntityService: AXMDocumentManagementDocumentTypeEntityService,
2211
2212
  AXMDocumentManagementDocumentTypeEntityServiceImpl: AXMDocumentManagementDocumentTypeEntityServiceImpl,
2212
2213
  AXMDocumentManagementDocumentTypeMetaDefinitionEntityModule: AXMDocumentManagementDocumentTypeMetaDefinitionEntityModule,
2213
2214
  AXMDocumentManagementDocumentTypeMetaDefinitionEntityService: AXMDocumentManagementDocumentTypeMetaDefinitionEntityService,
@@ -2220,6 +2221,7 @@ var index = /*#__PURE__*/Object.freeze({
2220
2221
  AXMDocumentManagementDocumentTypeStatusDefinitionEntityServiceImpl: AXMDocumentManagementDocumentTypeStatusDefinitionEntityServiceImpl,
2221
2222
  AXMDocumentService: AXMDocumentService,
2222
2223
  AXMDocumentServiceImpl: AXMDocumentServiceImpl,
2224
+ AXMDocumentTypeService: AXMDocumentTypeService,
2223
2225
  AXMFolderService: AXMFolderService,
2224
2226
  AXMFolderServiceImpl: AXMFolderServiceImpl,
2225
2227
  documentFactory: documentFactory,
@@ -2605,22 +2607,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImpor
2605
2607
  }]
2606
2608
  }] });
2607
2609
 
2608
- // @if(allowSearch()) {
2609
- // <ax-search-box><ax-clear-button></ax-clear-button></ax-search-box>
2610
- // } @if(hasClearButton()) {
2611
- // <ax-clear-button></ax-clear-button>
2612
- // } @for (validation of validationRules(); track $index) {
2613
- // <ax-validation-rule
2614
- // [rule]="validation.rule"
2615
- // [message]="validation.options?.message"
2616
- // [options]="validation.options"
2617
- // ></ax-validation-rule>
2618
- // } @for (validation of validationRules(); track $index) {
2619
- // <ax-validation-rule
2620
- // [rule]="validation.rule"
2621
- // [message]="validation.options?.message"
2622
- // [options]="validation.options"
2623
- // ></ax-validation-rule>
2624
2610
  class AXMFileTypeExtensionWidgetEditComponent extends AXPWidgetComponent {
2625
2611
  constructor() {
2626
2612
  super(...arguments);
@@ -2665,6 +2651,7 @@ class AXMFileTypeExtensionWidgetEditComponent extends AXPWidgetComponent {
2665
2651
  super.ngOnInit();
2666
2652
  this.selectedItems.set(this.getValue()?.selectedItems ?? []);
2667
2653
  this.context.set(this.getValue()?.context ?? {});
2654
+ console.log(this.selectedItems());
2668
2655
  }
2669
2656
  outputs() {
2670
2657
  return ['selectedItems', 'context'];
@@ -2723,137 +2710,143 @@ class AXMFileTypeExtensionWidgetEditComponent extends AXPWidgetComponent {
2723
2710
  }
2724
2711
  return false;
2725
2712
  }
2713
+ hasMetaInExtensions(extensions) {
2714
+ return extensions.some((ext) => ext.meta && ext.meta.length > 0);
2715
+ }
2726
2716
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXMFileTypeExtensionWidgetEditComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
2727
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.3", type: AXMFileTypeExtensionWidgetEditComponent, isStandalone: true, selector: "ng-component", usesInheritance: true, ngImport: i0, template: `
2728
- <div>
2729
- <ax-select-box
2730
- #dd
2731
- [dataSource]="dataSource"
2732
- valueField="name"
2733
- textField="title"
2734
- [multiple]="true"
2735
- [ngModel]="getValue()?.selectedItems"
2736
- (onValueChanged)="handleValueChange($event)"
2737
- >
2738
- </ax-select-box>
2739
- <div class="ax-py-3"></div>
2740
- <axp-widgets-container (onContextChanged)="handleOnContextChange($event)" [context]="context()">
2741
- @if (selectedItems().length > 0) {
2742
- <ax-collapse-group look="fill">
2743
- @for (item of selectedItems(); track item.name) {
2744
- <!-- File Types -->
2745
- <ax-collapse [caption]="item.title">
2746
- <div class="ax-flex ax-flex-col ax-gap-5">
2747
- @if (item.meta && item.meta.length > 0) {
2748
- <div class="ax-flex ax-flex-col ax-gap-2">
2749
- <ax-text [textContent]="'Global Meta Data'" class="ax-font-bold ax-text-sm"></ax-text>
2750
- @for (metaFile of item.meta; track metaFile.name) {
2751
- <!-- File Meta Data -->
2752
- <ax-form-field>
2753
- <ax-label [required]="filedIsRequired(metaFile)">{{ metaFile.title }}</ax-label>
2754
- <ng-container axp-widget-renderer [node]="getNode(metaFile)" [mode]="'edit'"></ng-container>
2755
- </ax-form-field>
2756
- }
2757
- </div>
2758
- }
2759
- @if (item.extensions && item.extensions.length > 0) {
2760
- <div class="ax-flex ax-flex-col ax-gap-3">
2761
- @for (ext of item.extensions; track ext.name) {
2762
- <!-- Extensions -->
2763
- @if (ext.meta && ext.meta.length > 0) {
2764
- <ax-text [textContent]="ext.title" class="ax-font-bold ax-text-sm"></ax-text>
2765
- <div class="ax-flex ax-flex-col ax-gap-2">
2766
- @for (extMeta of ext.meta; track $index) {
2767
- <!-- Extension Meta Data -->
2768
- <ax-form-field>
2769
- <ax-label [required]="filedIsRequired(extMeta)">{{ extMeta.title }}</ax-label>
2770
- <ng-container axp-widget-renderer [node]="getNode(extMeta)"
2771
- [mode]="'edit'"></ng-container>
2772
- </ax-form-field>
2773
- }
2774
- </div>
2775
- }
2776
- <!-- End Extension Meta Data -->
2777
- }
2778
- </div>
2779
- <!-- End Extensions -->
2780
- }
2781
- </div>
2782
- </ax-collapse>
2717
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.3", type: AXMFileTypeExtensionWidgetEditComponent, isStandalone: true, selector: "ng-component", usesInheritance: true, ngImport: i0, template: ` <div>
2718
+ <ax-select-box
2719
+ #dd
2720
+ [dataSource]="dataSource"
2721
+ valueField="name"
2722
+ textField="title"
2723
+ [multiple]="true"
2724
+ [ngModel]="getValue()?.selectedItems"
2725
+ (onValueChanged)="handleValueChange($event)"
2726
+ >
2727
+ </ax-select-box>
2728
+ <div class="ax-py-3"></div>
2729
+ <axp-widgets-container (onContextChanged)="handleOnContextChange($event)" [context]="context()">
2730
+ @if (selectedItems().length > 0) {
2731
+ <ax-collapse-group look="fill">
2732
+ @for (item of selectedItems(); track item.name) {
2733
+ <!-- File Types -->
2734
+ <ax-collapse [caption]="item.title">
2735
+ <div class="ax-flex ax-flex-col ax-gap-5">
2736
+ @if (item.meta && item.meta.length > 0) {
2737
+ <div class="ax-flex ax-flex-col ax-gap-2">
2738
+ <ax-text [textContent]="'Global Meta Data'" class="ax-font-bold ax-text-sm"></ax-text>
2739
+ @for (metaFile of item.meta; track metaFile.name) {
2740
+ <!-- File Meta Data -->
2741
+ <ax-form-field>
2742
+ <ax-label [required]="filedIsRequired(metaFile)">{{ metaFile.title }}</ax-label>
2743
+ <ng-container axp-widget-renderer [node]="getNode(metaFile)" [mode]="'edit'"></ng-container>
2744
+ </ax-form-field>
2745
+ }
2746
+ </div>
2747
+ } @if (item.extensions && item.extensions.length > 0) {
2748
+ <div class="ax-flex ax-flex-col ax-gap-3">
2749
+ @for (ext of item.extensions; track ext.name) {
2750
+ <!-- Extensions -->
2751
+ @if (ext.meta && ext.meta.length > 0) {
2752
+ <ax-text [textContent]="ext.title" class="ax-font-bold ax-text-sm"></ax-text>
2753
+ <div class="ax-flex ax-flex-col ax-gap-2">
2754
+ @for (extMeta of ext.meta; track $index) {
2755
+ <!-- Extension Meta Data -->
2756
+ <ax-form-field>
2757
+ <ax-label [required]="filedIsRequired(extMeta)">{{ extMeta.title }}</ax-label>
2758
+ <ng-container axp-widget-renderer [node]="getNode(extMeta)" [mode]="'edit'"></ng-container>
2759
+ </ax-form-field>
2760
+ }
2761
+ </div>
2762
+ }
2763
+ <!-- End Extension Meta Data -->
2764
+ }
2765
+ </div>
2766
+ <!-- End Extensions -->
2783
2767
  }
2784
- <!-- End File Types -->
2785
- </ax-collapse-group>
2786
- }
2787
- </axp-widgets-container>
2788
- </div>`, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: AXSelectBoxModule }, { kind: "component", type: i1.AXSelectBoxComponent, selector: "ax-select-box", inputs: ["disabled", "readonly", "tabIndex", "placeholder", "minValue", "maxValue", "value", "state", "name", "id", "type", "look", "multiple", "valueField", "textField", "disabledField", "textTemplate", "selectedItems", "dataSource", "minRecordsForSearch", "caption", "itemTemplate", "selectedTemplate", "emptyTemplate", "loadingTemplate", "dropdownWidth", "searchBoxAutoFocus"], outputs: ["valueChange", "stateChange", "onValueChanged", "onBlur", "onFocus", "readonlyChange", "disabledChange", "onOpened", "onClosed"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: AXFormModule }, { kind: "component", type: i7.AXFormFieldComponent, selector: "ax-form-field", inputs: ["labelMode"] }, { kind: "ngmodule", type: AXLabelModule }, { kind: "component", type: i5.AXLabelComponent, selector: "ax-label", inputs: ["required", "for"], outputs: ["requiredChange"] }, { kind: "ngmodule", type: AXDecoratorModule }, { 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: AXPLayoutBuilderModule }, { kind: "component", type: i6.AXPWidgetContainerComponent, selector: "axp-widgets-container", inputs: ["context", "functions"], outputs: ["onContextChanged"] }, { kind: "directive", type: i6.AXPWidgetRendererDirective, selector: "[axp-widget-renderer]", inputs: ["parentNode", "index", "mode", "node"], exportAs: ["widgetRenderer"] }, { kind: "ngmodule", type: AXCollapseModule }, { kind: "component", type: i7$1.AXCollapseComponent, selector: "ax-collapse", inputs: ["disabled", "look", "isCollapsed", "showHeader", "caption", "icon", "isLoading", "headerTemplate"], outputs: ["onClick", "isCollapsedChange"] }, { kind: "component", type: i7$1.AXCollapseGroupComponent, selector: "ax-collapse-group", inputs: ["look", "accordion", "activeIndex"], outputs: ["accordionChange", "activeIndexChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2768
+ </div>
2769
+ </ax-collapse>
2770
+ }
2771
+ <!-- End File Types -->
2772
+ </ax-collapse-group>
2773
+ }
2774
+ </axp-widgets-container>
2775
+ </div>`, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: AXSelectBoxModule }, { kind: "component", type: i1.AXSelectBoxComponent, selector: "ax-select-box", inputs: ["disabled", "readonly", "tabIndex", "placeholder", "minValue", "maxValue", "value", "state", "name", "id", "type", "look", "multiple", "valueField", "textField", "disabledField", "textTemplate", "selectedItems", "dataSource", "minRecordsForSearch", "caption", "itemTemplate", "selectedTemplate", "emptyTemplate", "loadingTemplate", "dropdownWidth", "searchBoxAutoFocus"], outputs: ["valueChange", "stateChange", "onValueChanged", "onBlur", "onFocus", "readonlyChange", "disabledChange", "onOpened", "onClosed"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: AXFormModule }, { kind: "component", type: i7.AXFormFieldComponent, selector: "ax-form-field", inputs: ["labelMode"] }, { kind: "ngmodule", type: AXLabelModule }, { kind: "component", type: i4.AXLabelComponent, selector: "ax-label", inputs: ["required", "for"], outputs: ["requiredChange"] }, { kind: "ngmodule", type: AXDecoratorModule }, { 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: AXPLayoutBuilderModule }, { kind: "component", type: i6.AXPWidgetContainerComponent, selector: "axp-widgets-container", inputs: ["context", "functions"], outputs: ["onContextChanged"] }, { kind: "directive", type: i6.AXPWidgetRendererDirective, selector: "[axp-widget-renderer]", inputs: ["parentNode", "index", "mode", "node"], exportAs: ["widgetRenderer"] }, { kind: "ngmodule", type: AXCollapseModule }, { kind: "component", type: i7$1.AXCollapseComponent, selector: "ax-collapse", inputs: ["disabled", "look", "isCollapsed", "showHeader", "caption", "icon", "isLoading", "headerTemplate"], outputs: ["onClick", "isCollapsedChange"] }, { kind: "component", type: i7$1.AXCollapseGroupComponent, selector: "ax-collapse-group", inputs: ["look", "accordion", "activeIndex"], outputs: ["accordionChange", "activeIndexChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2789
2776
  }
2790
2777
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXMFileTypeExtensionWidgetEditComponent, decorators: [{
2791
2778
  type: Component,
2792
2779
  args: [{
2793
- template: `
2794
- <div>
2795
- <ax-select-box
2796
- #dd
2797
- [dataSource]="dataSource"
2798
- valueField="name"
2799
- textField="title"
2800
- [multiple]="true"
2801
- [ngModel]="getValue()?.selectedItems"
2802
- (onValueChanged)="handleValueChange($event)"
2803
- >
2804
- </ax-select-box>
2805
- <div class="ax-py-3"></div>
2806
- <axp-widgets-container (onContextChanged)="handleOnContextChange($event)" [context]="context()">
2807
- @if (selectedItems().length > 0) {
2808
- <ax-collapse-group look="fill">
2809
- @for (item of selectedItems(); track item.name) {
2810
- <!-- File Types -->
2811
- <ax-collapse [caption]="item.title">
2812
- <div class="ax-flex ax-flex-col ax-gap-5">
2813
- @if (item.meta && item.meta.length > 0) {
2814
- <div class="ax-flex ax-flex-col ax-gap-2">
2815
- <ax-text [textContent]="'Global Meta Data'" class="ax-font-bold ax-text-sm"></ax-text>
2816
- @for (metaFile of item.meta; track metaFile.name) {
2817
- <!-- File Meta Data -->
2818
- <ax-form-field>
2819
- <ax-label [required]="filedIsRequired(metaFile)">{{ metaFile.title }}</ax-label>
2820
- <ng-container axp-widget-renderer [node]="getNode(metaFile)" [mode]="'edit'"></ng-container>
2821
- </ax-form-field>
2822
- }
2823
- </div>
2824
- }
2825
- @if (item.extensions && item.extensions.length > 0) {
2826
- <div class="ax-flex ax-flex-col ax-gap-3">
2827
- @for (ext of item.extensions; track ext.name) {
2828
- <!-- Extensions -->
2829
- @if (ext.meta && ext.meta.length > 0) {
2830
- <ax-text [textContent]="ext.title" class="ax-font-bold ax-text-sm"></ax-text>
2831
- <div class="ax-flex ax-flex-col ax-gap-2">
2832
- @for (extMeta of ext.meta; track $index) {
2833
- <!-- Extension Meta Data -->
2834
- <ax-form-field>
2835
- <ax-label [required]="filedIsRequired(extMeta)">{{ extMeta.title }}</ax-label>
2836
- <ng-container axp-widget-renderer [node]="getNode(extMeta)"
2837
- [mode]="'edit'"></ng-container>
2838
- </ax-form-field>
2839
- }
2840
- </div>
2841
- }
2842
- <!-- End Extension Meta Data -->
2843
- }
2844
- </div>
2845
- <!-- End Extensions -->
2846
- }
2847
- </div>
2848
- </ax-collapse>
2780
+ template: ` <div>
2781
+ <ax-select-box
2782
+ #dd
2783
+ [dataSource]="dataSource"
2784
+ valueField="name"
2785
+ textField="title"
2786
+ [multiple]="true"
2787
+ [ngModel]="getValue()?.selectedItems"
2788
+ (onValueChanged)="handleValueChange($event)"
2789
+ >
2790
+ </ax-select-box>
2791
+ <div class="ax-py-3"></div>
2792
+ <axp-widgets-container (onContextChanged)="handleOnContextChange($event)" [context]="context()">
2793
+ @if (selectedItems().length > 0) {
2794
+ <ax-collapse-group look="fill">
2795
+ @for (item of selectedItems(); track item.name) {
2796
+ <!-- File Types -->
2797
+ <ax-collapse [caption]="item.title">
2798
+ <div class="ax-flex ax-flex-col ax-gap-5">
2799
+ @if (item.meta && item.meta.length > 0) {
2800
+ <div class="ax-flex ax-flex-col ax-gap-2">
2801
+ <ax-text [textContent]="'Global Meta Data'" class="ax-font-bold ax-text-sm"></ax-text>
2802
+ @for (metaFile of item.meta; track metaFile.name) {
2803
+ <!-- File Meta Data -->
2804
+ <ax-form-field>
2805
+ <ax-label [required]="filedIsRequired(metaFile)">{{ metaFile.title }}</ax-label>
2806
+ <ng-container axp-widget-renderer [node]="getNode(metaFile)" [mode]="'edit'"></ng-container>
2807
+ </ax-form-field>
2808
+ }
2809
+ </div>
2810
+ } @if (item.extensions && item.extensions.length > 0) {
2811
+ <div class="ax-flex ax-flex-col ax-gap-3">
2812
+ @for (ext of item.extensions; track ext.name) {
2813
+ <!-- Extensions -->
2814
+ @if (ext.meta && ext.meta.length > 0) {
2815
+ <ax-text [textContent]="ext.title" class="ax-font-bold ax-text-sm"></ax-text>
2816
+ <div class="ax-flex ax-flex-col ax-gap-2">
2817
+ @for (extMeta of ext.meta; track $index) {
2818
+ <!-- Extension Meta Data -->
2819
+ <ax-form-field>
2820
+ <ax-label [required]="filedIsRequired(extMeta)">{{ extMeta.title }}</ax-label>
2821
+ <ng-container axp-widget-renderer [node]="getNode(extMeta)" [mode]="'edit'"></ng-container>
2822
+ </ax-form-field>
2823
+ }
2824
+ </div>
2825
+ }
2826
+ <!-- End Extension Meta Data -->
2827
+ }
2828
+ </div>
2829
+ <!-- End Extensions -->
2849
2830
  }
2850
- <!-- End File Types -->
2851
- </ax-collapse-group>
2852
- }
2853
- </axp-widgets-container>
2854
- </div>`,
2831
+ </div>
2832
+ </ax-collapse>
2833
+ }
2834
+ <!-- End File Types -->
2835
+ </ax-collapse-group>
2836
+ }
2837
+ </axp-widgets-container>
2838
+ </div>`,
2855
2839
  changeDetection: ChangeDetectionStrategy.OnPush,
2856
- imports: [CommonModule, AXSelectBoxModule, FormsModule, AXFormModule, AXLabelModule, AXDecoratorModule, AXPLayoutBuilderModule, AXCollapseModule],
2840
+ imports: [
2841
+ CommonModule,
2842
+ AXSelectBoxModule,
2843
+ FormsModule,
2844
+ AXFormModule,
2845
+ AXLabelModule,
2846
+ AXDecoratorModule,
2847
+ AXPLayoutBuilderModule,
2848
+ AXCollapseModule,
2849
+ ],
2857
2850
  inputs: [],
2858
2851
  }]
2859
2852
  }] });
@@ -3023,6 +3016,8 @@ class AXMDocumentManagerService {
3023
3016
  this.popupService = inject(AXPopupService);
3024
3017
  this.dialogService = inject(AXDialogService);
3025
3018
  this.fileService = inject(AXPFileStorageService);
3019
+ this.fileMangerService = inject(AXFileService);
3020
+ this.workflow = inject(AXPWorkflowService);
3026
3021
  this.scopedDriveCache = new Map();
3027
3022
  }
3028
3023
  scope(scope, options) {
@@ -3121,24 +3116,32 @@ class AXMDocumentManagerService {
3121
3116
  name: folder.name,
3122
3117
  type: 'folder',
3123
3118
  parentId: folder.parentId || null,
3124
- lastModified: folder.updatedAt,
3119
+ modifiedAt: folder.updatedAt,
3120
+ createdAt: folder.createdAt,
3121
+ description: folder.description,
3125
3122
  childrenCount: folder.nodeCount,
3123
+ size: folder.size,
3126
3124
  children: [
3127
3125
  ...(folder.folders?.map((child) => ({
3128
3126
  id: child.id,
3129
3127
  name: child.name,
3130
3128
  type: 'folder',
3131
3129
  parentId: child.parentId || null,
3132
- lastModified: child.updatedAt,
3130
+ modifiedAt: child.updatedAt,
3131
+ createdAt: child.createdAt,
3133
3132
  childrenCount: child.nodeCount,
3133
+ description: child.description,
3134
+ size: child.size,
3134
3135
  })) || []),
3135
3136
  ...(folder.documents?.map((doc) => ({
3136
3137
  id: doc.id,
3137
3138
  name: doc.name,
3138
3139
  type: 'file',
3139
3140
  parentId: doc.parentId,
3140
- lastModified: doc.meta?.['uploadedAt'],
3141
- size: doc.meta?.['size'],
3141
+ modifiedAt: doc.updatedAt,
3142
+ createdAt: doc.createdAt,
3143
+ size: doc.size,
3144
+ description: doc.description,
3142
3145
  })) || []),
3143
3146
  ],
3144
3147
  };
@@ -3230,6 +3233,7 @@ class AXMDocumentManagerService {
3230
3233
  isSystem: false,
3231
3234
  isHidden: false,
3232
3235
  isDeleted: false,
3236
+ size: 0,
3233
3237
  };
3234
3238
  const createdFolder = await this.folderService.insertOne(folderToCreate);
3235
3239
  const folder = await this.folderService.getOne(createdFolder);
@@ -3260,8 +3264,9 @@ class AXMDocumentManagerService {
3260
3264
  name: file.name,
3261
3265
  type: 'file',
3262
3266
  parentId: file.parentId,
3263
- lastModified: new Date(),
3264
- size: file.meta?.['size'],
3267
+ modifiedAt: file.updatedAt,
3268
+ createdAt: file.createdAt,
3269
+ size: file.size,
3265
3270
  fileId: file.fileId,
3266
3271
  };
3267
3272
  }
@@ -3280,23 +3285,18 @@ class AXMDocumentManagerService {
3280
3285
  async deleteFile(fileId) {
3281
3286
  await this.documentService.deleteOne(fileId);
3282
3287
  }
3283
- async deleteNodes(nodeIds) {
3284
- for (const nodeId of nodeIds) {
3285
- try {
3286
- await this.deleteFolder(nodeId);
3288
+ async deleteNodes(nodes) {
3289
+ for (const node of nodes) {
3290
+ if (node.type == 'folder') {
3291
+ await this.deleteFolder(node.id);
3287
3292
  }
3288
- catch {
3289
- try {
3290
- await this.deleteFile(nodeId);
3291
- }
3292
- catch (error) {
3293
- console.error(`Failed to delete node with id ${nodeId}:`, error);
3294
- }
3293
+ else {
3294
+ await this.deleteFile(node.id);
3295
3295
  }
3296
3296
  }
3297
3297
  }
3298
3298
  async showCreateFolderDialog(parentId) {
3299
- const comp = (await import('./acorex-modules-document-management-create-folder-dialog.component-DqoWmtm7.mjs'))
3299
+ const comp = (await import('./acorex-modules-document-management-create-folder-dialog.component-Cp26sAs9.mjs'))
3300
3300
  .AXMCreateFolderDialog;
3301
3301
  const popup = await this.popupService.open(comp, {
3302
3302
  title: 't("actions.create-folder")',
@@ -3306,47 +3306,95 @@ class AXMDocumentManagerService {
3306
3306
  });
3307
3307
  return popup.data?.folder;
3308
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;
3309
+ async moveTo(options) {
3310
+ const comp = (await import('./acorex-modules-document-management-drive-choose.component-HSZ-b7-z.mjs')).AXMDocumentDriveChooseComponent;
3311
+ //
3312
3312
  const popup = await this.popupService.open(comp, {
3313
- title: 't("actions.create-folder")',
3313
+ title: `Choose ${options.browseMode == 'file' ? 'File' : 'Folder'}`,
3314
3314
  data: {
3315
- // parentId,
3315
+ selectionMode: options.multiple ? 'multiple' : 'single',
3316
+ browseMode: options.browseMode ?? 'file',
3316
3317
  },
3317
3318
  });
3318
- return popup.data?.selectedNodeId;
3319
+ //
3320
+ const selectedFolders = popup.data.result ? popup.data?.items ?? [] : [];
3321
+ if (selectedFolders.length > 0) {
3322
+ const selectedFolder = selectedFolders[0];
3323
+ if (selectedFolder) {
3324
+ if (options.node.type === 'folder') {
3325
+ await this.updateFolder(options.node.id, { parentId: selectedFolder.id });
3326
+ }
3327
+ else {
3328
+ await this.updateFile(options.node.id, { parentId: selectedFolder.id });
3329
+ }
3330
+ return true;
3331
+ }
3332
+ else {
3333
+ return false;
3334
+ }
3335
+ }
3336
+ else {
3337
+ return false;
3338
+ }
3339
+ }
3340
+ async copyTo(options) {
3341
+ const comp = (await import('./acorex-modules-document-management-drive-choose.component-HSZ-b7-z.mjs')).AXMDocumentDriveChooseComponent;
3342
+ //
3343
+ const popup = await this.popupService.open(comp, {
3344
+ title: `Choose ${options.browseMode == 'file' ? 'File' : 'Folder'}`,
3345
+ data: {
3346
+ selectionMode: options.multiple ? 'multiple' : 'single',
3347
+ browseMode: options.browseMode ?? 'file',
3348
+ },
3349
+ });
3350
+ //
3351
+ const selectedFolders = popup.data.result ? popup.data?.items ?? [] : [];
3352
+ if (selectedFolders.length > 0) {
3353
+ const selectedFolder = selectedFolders[0];
3354
+ if (selectedFolder) {
3355
+ if (options.node.type === 'folder') {
3356
+ await this.createFolder({
3357
+ name: options.node.name,
3358
+ parentId: selectedFolder.id,
3359
+ color: '#ffffff',
3360
+ size: options.node.size,
3361
+ });
3362
+ }
3363
+ else {
3364
+ await this.createFile({
3365
+ title: options.node.name,
3366
+ name: options.node.name,
3367
+ parentId: selectedFolder.id,
3368
+ //TODO upload file to file storage
3369
+ fileId: '',
3370
+ size: 0,
3371
+ });
3372
+ }
3373
+ return true;
3374
+ }
3375
+ else {
3376
+ return false;
3377
+ }
3378
+ }
3379
+ else {
3380
+ return false;
3381
+ }
3319
3382
  }
3320
3383
  async showFileViewerPopup(node) {
3321
3384
  const parentFolder = await this.folderService.getOne(node.parentId);
3322
3385
  const parentFolderName = parentFolder.name;
3323
3386
  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
3387
  return {
3340
3388
  id: doc.id || '',
3341
3389
  name: doc.name,
3342
- type: fileType,
3343
- url: fileInfo.url || '',
3344
- size: String(fileInfo.size),
3345
- thumbnail: fileInfo.url || '',
3390
+ type: doc.meta?.['type'],
3391
+ url: doc.fileId,
3392
+ size: doc.size.toString(),
3393
+ thumbnail: doc.fileId,
3346
3394
  };
3347
3395
  }) || []);
3348
3396
  console.log(nodes);
3349
- const comp = (await import('./acorex-modules-document-management-file-viewer-popup.component-CaSagveT.mjs'))
3397
+ const comp = (await Promise.resolve().then(function () { return fileViewerPopup_component; }))
3350
3398
  .AXMFileViewerPopupComponent;
3351
3399
  await this.popupService.open(comp, {
3352
3400
  title: `t("gallery" , ${RootConfig.module.name})` + ' - ' + parentFolderName,
@@ -3356,88 +3404,12 @@ class AXMDocumentManagerService {
3356
3404
  });
3357
3405
  }
3358
3406
  async openFile(node) {
3407
+ console.log(node);
3359
3408
  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;
3409
+ console.log(file);
3438
3410
  }
3439
3411
  async rename(node) {
3440
- const comp = (await import('./acorex-modules-document-management-rename-node-dialog.component-BoODbM0H.mjs'))
3412
+ const comp = (await import('./acorex-modules-document-management-rename-node-dialog.component-D3Cg9_5d.mjs'))
3441
3413
  .AXMRenameNodeDialog;
3442
3414
  const popup = await this.popupService.open(comp, {
3443
3415
  title: 't("actions.rename")',
@@ -3445,42 +3417,16 @@ class AXMDocumentManagerService {
3445
3417
  node,
3446
3418
  },
3447
3419
  });
3448
- return popup.data?.folder;
3420
+ return popup.data?.result;
3449
3421
  }
3450
3422
  async showDeleteNodesDialog(nodeIds) {
3451
- const subject = new Subject();
3452
- subject.subscribe((status) => {
3453
- console.log(`The process has been "${status}".`);
3454
- });
3455
- const dialog = this.dialogService.open({
3456
- content: 'Are you sure?',
3457
- title: 'Delete',
3458
- type: 'danger',
3459
- buttons: [
3460
- {
3461
- text: 'Yes',
3462
- color: 'danger',
3463
- onClick: async (e) => {
3464
- e.handled = true;
3465
- e.source.text = 'Deleting...';
3466
- e.source.disabled = true;
3467
- e.source.loading = true;
3468
- subject.next('Started');
3469
- await this.deleteNodes(nodeIds);
3470
- subject.complete();
3471
- dialog.close();
3472
- },
3473
- },
3474
- {
3475
- text: 'No',
3476
- color: 'default',
3477
- autofocus: true,
3478
- onClick: () => {
3479
- dialog.close();
3480
- },
3481
- },
3482
- ],
3423
+ const result = await this.workflow.execute('delete-entity', {
3424
+ entities: nodeIds.map((node) => ({
3425
+ source: `${RootConfig.module.name}.${node.type == 'folder' ? RootConfig.entities.folder.name : RootConfig.entities.document.name}`,
3426
+ ids: [node.id],
3427
+ })),
3483
3428
  });
3429
+ return result.getOutput('result') ?? false;
3484
3430
  }
3485
3431
  async searchFolders(searchTerm, scope, options) {
3486
3432
  const { result: rootNode } = await this.getRoot(scope, options);
@@ -3511,7 +3457,7 @@ class AXMDocumentManagerService {
3511
3457
  return [...(await this.getAllFolders()), ...(await this.getAllFiles())];
3512
3458
  }
3513
3459
  async showChooseFileDialog() {
3514
- const comp = (await import('./acorex-modules-document-management-drive-choose.component-CkS8s7zm.mjs')).AXMDocumentDriveChooseComponent;
3460
+ const comp = (await import('./acorex-modules-document-management-drive-choose.component-HSZ-b7-z.mjs')).AXMDocumentDriveChooseComponent;
3515
3461
  await this.popupService.open(comp);
3516
3462
  }
3517
3463
  async downloadFile(node) {
@@ -3592,6 +3538,32 @@ class AXMDocumentManagerService {
3592
3538
  const extension = originalName.substring(lastDotIndex);
3593
3539
  return `${nameWithoutExt} copy${extension}`;
3594
3540
  }
3541
+ async uploadFile(folderId) {
3542
+ const folder = await this.folderService.getOne(folderId);
3543
+ var docTypes = folder.documentType;
3544
+ if (folder && docTypes == null) {
3545
+ const comp = (await Promise.resolve().then(function () { return index; })).AXMChooseDocumentTypeComponent;
3546
+ const result = await this.popupService.open(comp);
3547
+ if (result.data != null && result.data.documentType != null) {
3548
+ const { upload, ...metaContext } = result.data.context;
3549
+ //Todo
3550
+ const fileInfo = await this.fileService.getInfo(upload[0]);
3551
+ const file = await this.documentService.insertOne({
3552
+ fileId: upload[0],
3553
+ meta: metaContext,
3554
+ parentId: folderId,
3555
+ size: fileInfo.size,
3556
+ name: `test.${fileInfo.mimeType.split('/')[1]}`,
3557
+ title: 'Test',
3558
+ });
3559
+ return true;
3560
+ }
3561
+ else {
3562
+ return false;
3563
+ }
3564
+ }
3565
+ return false;
3566
+ }
3595
3567
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXMDocumentManagerService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
3596
3568
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXMDocumentManagerService, providedIn: 'root' }); }
3597
3569
  }
@@ -3677,13 +3649,19 @@ var AXPDocumentExplorerSettings;
3677
3649
 
3678
3650
  const AXPDocumentExplorerViewModel = signalStore({ providedIn: 'root' }, withState(() => ({
3679
3651
  // View State
3680
- viewMode: 'grid',
3652
+ viewMode: 'large-tiles',
3681
3653
  isLoading: false,
3682
3654
  // Navigation State
3683
3655
  currentPath: [],
3684
3656
  currentNode: null,
3685
3657
  loadingFolderId: null,
3686
3658
  navigatingFolderId: null,
3659
+ backHistory: [],
3660
+ // Selection State
3661
+ selectionMode: 'none',
3662
+ selectedNodes: [],
3663
+ // Browse State
3664
+ browseMode: 'file',
3687
3665
  // Sort State
3688
3666
  sortField: 'name',
3689
3667
  sortDirection: 'asc',
@@ -3696,36 +3674,49 @@ const AXPDocumentExplorerViewModel = signalStore({ providedIn: 'root' }, withSta
3696
3674
  currentDrive: null,
3697
3675
  // File Type State
3698
3676
  fileTypes: [],
3677
+ // Detail Panel State
3678
+ detailPanel: false,
3699
3679
  })), withComputed((store) => ({
3700
3680
  isRoot: computed(() => {
3701
3681
  const node = store.currentNode();
3702
3682
  return node?.id === 'root' || !node?.parentId;
3703
3683
  }),
3704
- breadcrumb: computed(() => store.currentPath()),
3705
3684
  currentFolder: computed(() => store.currentNode()),
3706
3685
  currentFolderContents: computed(() => ({
3707
3686
  folders: store.folders(),
3708
3687
  files: store.files(),
3709
3688
  })),
3710
- parentFolder: computed(() => {
3711
- const currentNode = store.currentNode();
3712
- return currentNode?.parentId ? store.folders().find((folder) => folder.id === currentNode.parentId) : null;
3713
- }),
3714
- isGridView: computed(() => store.viewMode() === 'grid'),
3689
+ isLargeTilesView: computed(() => store.viewMode() === 'large-tiles'),
3690
+ isSmallTilesView: computed(() => store.viewMode() === 'small-tiles'),
3715
3691
  isListView: computed(() => store.viewMode() === 'list'),
3716
- })), withMethods((store, fileTypeService = inject(AXPFileTypeProviderService), driveService = inject(AXMDocumentManagerService), settingService = inject(AXPSettingService)) => ({
3717
- async initialize(path = 'root') {
3692
+ isDetailsView: computed(() => store.viewMode() === 'details'),
3693
+ isLargeIconsView: computed(() => store.viewMode() === 'large-icons'),
3694
+ isSmallIconsView: computed(() => store.viewMode() === 'small-icons'),
3695
+ isBackAvailable: computed(() => store.backHistory().length > 0),
3696
+ isUpAvailable: computed(() => {
3697
+ const node = store.currentNode();
3698
+ return node?.parentId != null;
3699
+ }),
3700
+ selectedCount: computed(() => store.selectedNodes().length),
3701
+ hasSelectedItems: computed(() => store.selectedNodes().length > 0),
3702
+ hasMultipleSelectedItems: computed(() => store.selectedNodes().length > 1),
3703
+ isMultiSelect: computed(() => store.selectionMode() === 'multiple'),
3704
+ selectedNode: computed(() => store.selectedNodes()[0] ?? null),
3705
+ isDetailPanelOpen: computed(() => store.detailPanel()),
3706
+ })), withMethods((store, fileTypeService = inject(AXPFileTypeProviderService), driveService = inject(AXMDocumentManagerService), settingService = inject(AXPSettingService), translateService = inject(AXTranslationService)) => ({
3707
+ async initialize(options) {
3718
3708
  // Load file types
3719
3709
  const fileTypes = await fileTypeService.items();
3720
3710
  patchState(store, { fileTypes });
3721
3711
  // Load initial settings
3722
- const viewMode = await settingService.get(AXPDocumentExplorerSettings.ViewMode);
3723
- const sortField = await settingService.get(AXPDocumentExplorerSettings.SortField);
3724
- const sortDirection = await settingService.get(AXPDocumentExplorerSettings.SortDirection);
3712
+ const viewMode = await settingService.scope(AXPSettingScope.User).get(AXPDocumentExplorerSettings.ViewMode);
3713
+ const sortField = await settingService.scope(AXPSettingScope.User).get(AXPDocumentExplorerSettings.SortField);
3714
+ const sortDirection = await settingService.scope(AXPSettingScope.User).get(AXPDocumentExplorerSettings.SortDirection);
3725
3715
  patchState(store, {
3726
- viewMode: viewMode || 'grid',
3716
+ viewMode: viewMode || 'large-tiles',
3727
3717
  sortField: sortField || 'name',
3728
3718
  sortDirection: sortDirection || 'asc',
3719
+ browseMode: options?.browseMode || 'file',
3729
3720
  });
3730
3721
  },
3731
3722
  _load: async (folderId) => {
@@ -3737,7 +3728,7 @@ const AXPDocumentExplorerViewModel = signalStore({ providedIn: 'root' }, withSta
3737
3728
  currentNode: node.result,
3738
3729
  currentPath: node.path,
3739
3730
  folders: node.result.children?.filter((item) => item.type === 'folder') || [],
3740
- files: node.result.children?.filter((item) => item.type === 'file') || [],
3731
+ files: node.result.children?.filter((item) => store.browseMode() == 'file' && item.type === 'file') || [],
3741
3732
  itemsCount: node.result.children?.length || 0,
3742
3733
  availableSpace: await driveService.getAvailableSpace(),
3743
3734
  loadingFolderId: null,
@@ -3754,15 +3745,25 @@ const AXPDocumentExplorerViewModel = signalStore({ providedIn: 'root' }, withSta
3754
3745
  }
3755
3746
  },
3756
3747
  navigateToFolder(folderId) {
3748
+ const currentNode = store.currentNode();
3749
+ if (currentNode) {
3750
+ patchState(store, {
3751
+ backHistory: [...store.backHistory(), { folderId: currentNode.id, path: store.currentPath() }],
3752
+ });
3753
+ }
3757
3754
  patchState(store, { navigatingFolderId: folderId });
3758
3755
  },
3759
3756
  async loadFolderContents(folderId) {
3760
3757
  await this._load(folderId);
3758
+ this.deselectAll();
3761
3759
  },
3762
3760
  setViewMode(mode) {
3763
3761
  patchState(store, { viewMode: mode });
3764
3762
  settingService.scope(AXPSettingScope.User).set(AXPDocumentExplorerSettings.ViewMode, mode);
3765
3763
  },
3764
+ isViewMode(mode) {
3765
+ return store.viewMode() === mode;
3766
+ },
3766
3767
  setSortField(field) {
3767
3768
  patchState(store, { sortField: field });
3768
3769
  settingService.scope(AXPSettingScope.User).set(AXPDocumentExplorerSettings.SortField, field);
@@ -3771,6 +3772,9 @@ const AXPDocumentExplorerViewModel = signalStore({ providedIn: 'root' }, withSta
3771
3772
  patchState(store, { sortDirection: direction });
3772
3773
  settingService.scope(AXPSettingScope.User).set(AXPDocumentExplorerSettings.SortDirection, direction);
3773
3774
  },
3775
+ setSelectionMode(mode) {
3776
+ patchState(store, { selectionMode: mode });
3777
+ },
3774
3778
  setDrive(scope) {
3775
3779
  patchState(store, { currentDrive: scope });
3776
3780
  },
@@ -3787,6 +3791,107 @@ const AXPDocumentExplorerViewModel = signalStore({ providedIn: 'root' }, withSta
3787
3791
  type: fileType?.name || 'Unknown',
3788
3792
  };
3789
3793
  },
3794
+ getNodeInfo(node) {
3795
+ // If no node, return a default object
3796
+ if (!node) {
3797
+ return {
3798
+ name: '---',
3799
+ icon: 'fa-light fa-folder',
3800
+ type: 'Folder',
3801
+ sections: [
3802
+ {
3803
+ title: 'Details',
3804
+ details: [],
3805
+ },
3806
+ ],
3807
+ };
3808
+ }
3809
+ // If the node is a file, return the file info
3810
+ if (node.type === 'file') {
3811
+ const fileTypes = store.fileTypes();
3812
+ const extension = node.name.split('.').pop()?.toLowerCase() || '';
3813
+ const extensions = fileTypes.flatMap((type) => type.extensions);
3814
+ const fileType = extensions.find((e) => e.name === extension);
3815
+ return {
3816
+ name: node.name,
3817
+ icon: fileType?.icon || 'fa-light fa-file',
3818
+ type: 'File',
3819
+ sections: [
3820
+ {
3821
+ title: 'Details',
3822
+ details: [
3823
+ {
3824
+ title: 'Description',
3825
+ content: node.description,
3826
+ icon: 'fa-solid fa-file-lines',
3827
+ },
3828
+ {
3829
+ title: 'Size',
3830
+ content: node.size || 0,
3831
+ format: 'filesize',
3832
+ icon: 'fa-solid fa-file-lines',
3833
+ },
3834
+ {
3835
+ title: 'Created at',
3836
+ content: node.createdAt || new Date(),
3837
+ format: 'datetime',
3838
+ icon: 'fa-solid fa-calendar-days',
3839
+ },
3840
+ {
3841
+ title: 'Modified at',
3842
+ content: node.modifiedAt || new Date(),
3843
+ format: 'datetime',
3844
+ icon: 'fa-solid fa-calendar-days',
3845
+ }
3846
+ ]
3847
+ }
3848
+ ]
3849
+ };
3850
+ }
3851
+ // If the node is a folder, return the folder info
3852
+ else {
3853
+ return {
3854
+ name: node.name,
3855
+ icon: 'fa-light fa-folder ax-text-yellow-500',
3856
+ type: 'Folder',
3857
+ sections: [
3858
+ {
3859
+ title: 'Details',
3860
+ details: [
3861
+ {
3862
+ title: 'Description',
3863
+ content: node.description,
3864
+ icon: 'fa-solid fa-file-lines',
3865
+ },
3866
+ {
3867
+ title: 'Items',
3868
+ content: node.childrenCount,
3869
+ icon: 'fa-solid fa-file-lines',
3870
+ },
3871
+ {
3872
+ title: 'Size',
3873
+ content: node.size || 0,
3874
+ format: 'filesize',
3875
+ icon: 'fa-solid fa-file-lines',
3876
+ },
3877
+ {
3878
+ title: 'Created at',
3879
+ content: node.createdAt || new Date(),
3880
+ format: 'datetime',
3881
+ icon: 'fa-solid fa-calendar-days',
3882
+ },
3883
+ {
3884
+ title: 'Modified at',
3885
+ content: node.modifiedAt || new Date(),
3886
+ format: 'datetime',
3887
+ icon: 'fa-solid fa-calendar-days',
3888
+ }
3889
+ ]
3890
+ }
3891
+ ]
3892
+ };
3893
+ }
3894
+ },
3790
3895
  sortItems(items) {
3791
3896
  const field = store.sortField();
3792
3897
  const direction = store.sortDirection();
@@ -3797,8 +3902,8 @@ const AXPDocumentExplorerViewModel = signalStore({ providedIn: 'root' }, withSta
3797
3902
  comparison = a.name.localeCompare(b.name);
3798
3903
  break;
3799
3904
  case 'modified':
3800
- const aDate = a.lastModified ? new Date(a.lastModified) : new Date(0);
3801
- const bDate = b.lastModified ? new Date(b.lastModified) : new Date(0);
3905
+ const aDate = a.modifiedAt ? new Date(a.modifiedAt) : new Date(0);
3906
+ const bDate = b.modifiedAt ? new Date(b.modifiedAt) : new Date(0);
3802
3907
  comparison = aDate.getTime() - bDate.getTime();
3803
3908
  break;
3804
3909
  case 'size':
@@ -3814,6 +3919,99 @@ const AXPDocumentExplorerViewModel = signalStore({ providedIn: 'root' }, withSta
3814
3919
  await this._load(currentFolder.id);
3815
3920
  }
3816
3921
  },
3922
+ navigateToUp() {
3923
+ const currentNode = store.currentNode();
3924
+ const parentId = currentNode?.parentId;
3925
+ if (parentId && currentNode) {
3926
+ patchState(store, {
3927
+ backHistory: [...store.backHistory(), { folderId: currentNode.id, path: store.currentPath() }],
3928
+ });
3929
+ patchState(store, { navigatingFolderId: parentId });
3930
+ this.loadFolderContents(parentId);
3931
+ }
3932
+ },
3933
+ async navigateBack() {
3934
+ const history = store.backHistory();
3935
+ if (history.length === 0) {
3936
+ return;
3937
+ }
3938
+ const lastEntry = history[history.length - 1];
3939
+ patchState(store, { backHistory: history.slice(0, history.length - 1) });
3940
+ patchState(store, { navigatingFolderId: lastEntry.folderId });
3941
+ await this.loadFolderContents(lastEntry.folderId);
3942
+ },
3943
+ async openFile(file) {
3944
+ await driveService.openFile(file);
3945
+ },
3946
+ //TODO: Delete only one node at a time
3947
+ async deleteNodes(nodes = store.selectedNodes()) {
3948
+ const result = await driveService.showDeleteNodesDialog(nodes);
3949
+ if (result) {
3950
+ this.deselectAll();
3951
+ await this.refresh();
3952
+ }
3953
+ },
3954
+ toggleSelect(node) {
3955
+ if (store.selectionMode() === 'multiple') {
3956
+ patchState(store, { selectedNodes: store.selectedNodes().includes(node) ? store.selectedNodes().filter(n => n.id !== node.id) : [...store.selectedNodes(), node] });
3957
+ }
3958
+ else {
3959
+ patchState(store, { selectedNodes: [node] });
3960
+ }
3961
+ console.log(store.currentPath());
3962
+ },
3963
+ isItemSelected(node) {
3964
+ return store.selectedNodes().some(selectedNode => selectedNode.id === node.id);
3965
+ },
3966
+ selectAll() {
3967
+ patchState(store, { selectedNodes: [...store.folders(), ...store.files()] });
3968
+ },
3969
+ deselectAll() {
3970
+ patchState(store, { selectedNodes: [] });
3971
+ },
3972
+ openDetailPanel() {
3973
+ patchState(store, { detailPanel: true });
3974
+ },
3975
+ closeDetailPanel() {
3976
+ patchState(store, { detailPanel: false });
3977
+ },
3978
+ toggleDetailPanel() {
3979
+ patchState(store, { detailPanel: !store.detailPanel() });
3980
+ },
3981
+ //#region Menu Items
3982
+ getFolderAddMenuItems() {
3983
+ const scope = RootConfig.config.i18n;
3984
+ return [
3985
+ {
3986
+ name: 'new-folder',
3987
+ title: `t("actions.create-folder",{scope:"${scope}"})`,
3988
+ icon: 'fa-light fa-folder-plus',
3989
+ break: true,
3990
+ },
3991
+ {
3992
+ name: 'upload-file',
3993
+ title: `t("actions.upload-file",{scope:"${scope}"})`,
3994
+ icon: 'fa-light fa-file-arrow-up',
3995
+ },
3996
+ ];
3997
+ },
3998
+ getFolderActionMenuItems() {
3999
+ return [
4000
+ {
4001
+ name: 'refresh',
4002
+ title: 'Refresh',
4003
+ icon: 'fa-light fa-rotate-right',
4004
+ break: true,
4005
+ },
4006
+ {
4007
+ name: 'delete',
4008
+ title: 'Delete',
4009
+ color: 'danger',
4010
+ icon: 'fa-light fa-trash',
4011
+ },
4012
+ ];
4013
+ }
4014
+ //#endregion
3817
4015
  })));
3818
4016
 
3819
4017
  class AXMDocumentExplorerComponent {
@@ -3823,22 +4021,51 @@ class AXMDocumentExplorerComponent {
3823
4021
  this.rootContextMenu = viewChild('rootContextMenu');
3824
4022
  this.driveService = inject(AXMDocumentManagerService);
3825
4023
  this.translateService = inject(AXTranslationService);
4024
+ this.layout = inject(AXPLayoutThemeService);
4025
+ this.browseMode = input('file');
4026
+ this.viewMode = input();
4027
+ this.selectionMode = input('none');
4028
+ this.showContextMenu = input(true);
4029
+ this.view = signal(null);
4030
+ this.viewMap = {
4031
+ list: async () => (await import('./acorex-modules-document-management-list-view.component-DjULM8Me.mjs')).AXMDocumentExplorerListViewComponent,
4032
+ 'small-tiles': async () => (await import('./acorex-modules-document-management-small-tiles-view.component-CXPXrH4g.mjs')).AXMDocumentExplorerSmallTilesViewComponent,
4033
+ 'large-tiles': async () => (await import('./acorex-modules-document-management-large-tiles-view.component-D9PFgzMQ.mjs')).AXMDocumentExplorerLargeTilesViewComponent,
4034
+ details: async () => (await import('./acorex-modules-document-management-details-view.component-CZyOdjEl.mjs')).AXMDocumentExplorerDetailsViewComponent,
4035
+ 'large-icons': async () => (await import('./acorex-modules-document-management-large-icons-view.component-C5pB5bc2.mjs')).AXMDocumentExplorerLargeIconsViewComponent,
4036
+ 'small-icons': async () => (await import('./acorex-modules-document-management-small-icons-view.component-4M8c_1Dt.mjs')).AXMDocumentExplorerSmallIconsViewComponent,
4037
+ };
3826
4038
  this.#effect = effect(() => {
3827
4039
  const navigatingFolderId = this.vm.loadingFolderId();
3828
4040
  if (!navigatingFolderId) {
3829
4041
  setTimeout(() => {
3830
4042
  this.contextMenu()?.refresh();
3831
4043
  this.rootContextMenu()?.refresh();
3832
- }, 100);
4044
+ }, 300);
4045
+ }
4046
+ });
4047
+ this.#effect2 = effect(() => {
4048
+ if (this.viewMode()) {
4049
+ this.vm.setViewMode(this.viewMode());
3833
4050
  }
4051
+ if (this.selectionMode()) {
4052
+ this.vm.setSelectionMode(this.selectionMode());
4053
+ }
4054
+ });
4055
+ this.#effect3 = effect(async () => {
4056
+ const func = get$1(this.viewMap, this.vm.viewMode()) ?? this.viewMap['large-tiles'];
4057
+ const comp = await func();
4058
+ this.view.set(comp);
3834
4059
  });
3835
4060
  }
3836
4061
  #effect;
4062
+ #effect2;
4063
+ #effect3;
3837
4064
  handleNavigateToFolder(folderId) {
3838
4065
  this.vm.navigateToFolder(folderId);
3839
4066
  console.log(this.vm.currentFolder());
3840
4067
  }
3841
- // Context Menu Handlers
4068
+ //#region Menu and Context Menu
3842
4069
  async handleContextMenuOnOpening(e) {
3843
4070
  const node = get$1(e.targetElement, '__data__');
3844
4071
  if (!node) {
@@ -3973,37 +4200,15 @@ class AXMDocumentExplorerComponent {
3973
4200
  },
3974
4201
  ];
3975
4202
  if (node.type == 'file') {
3976
- e.items.splice(e.items.length - 1, 0, openWith);
4203
+ e.items.splice(1, 0, openWith);
3977
4204
  }
3978
4205
  }
3979
4206
  handleContextMenuRootOnOpening(e) {
3980
4207
  //TODO: check async translate method in acorex
3981
- const scope = RootConfig.config.i18n;
3982
- e.items = [
3983
- {
3984
- name: 'new-folder',
3985
- text: this.translateService.translateSync('actions.create-folder', { scope }),
3986
- icon: 'fa-light fa-folder-plus',
3987
- },
3988
- {
3989
- name: 'upload-file',
3990
- text: this.translateService.translateSync('actions.upload-file', { scope }),
3991
- icon: 'fa-light fa-file-arrow-up',
3992
- break: true,
3993
- },
3994
- {
3995
- name: 'refresh',
3996
- text: 'Refresh',
3997
- icon: 'fa-light fa-rotate-right',
3998
- break: true,
3999
- },
4000
- {
4001
- name: 'delete',
4002
- text: 'Delete',
4003
- color: 'danger',
4004
- icon: 'fa-light fa-trash',
4005
- },
4006
- ];
4208
+ e.items = [...this.vm.getFolderAddMenuItems(), ...this.vm.getFolderActionMenuItems()].map(m => ({
4209
+ ...m,
4210
+ text: `t("${m.name}")`,
4211
+ }));
4007
4212
  }
4008
4213
  async handleContextMenuItemClick(e) {
4009
4214
  const node = e.item.data;
@@ -4031,16 +4236,16 @@ class AXMDocumentExplorerComponent {
4031
4236
  // Handle paste operation
4032
4237
  break;
4033
4238
  case 'move-to':
4034
- this.moveNode(node);
4239
+ this.moveTo(node);
4035
4240
  break;
4036
4241
  case 'copy-to':
4037
- this.copyNodeToNewPath(node);
4242
+ this.copyTo(node);
4038
4243
  break;
4039
4244
  case 'rename':
4040
4245
  this.renameNode(node);
4041
4246
  break;
4042
4247
  case 'delete':
4043
- this.deleteNode(node);
4248
+ this.vm.deleteNodes([node]);
4044
4249
  break;
4045
4250
  case 'refresh':
4046
4251
  this.vm.refresh();
@@ -4050,6 +4255,7 @@ class AXMDocumentExplorerComponent {
4050
4255
  break;
4051
4256
  }
4052
4257
  }
4258
+ //#endregion
4053
4259
  async openGallery(node) {
4054
4260
  await this.driveService.showFileViewerPopup(node);
4055
4261
  }
@@ -4068,12 +4274,6 @@ class AXMDocumentExplorerComponent {
4068
4274
  }
4069
4275
  }
4070
4276
  }
4071
- async deleteNode(node) {
4072
- if (node) {
4073
- await this.driveService.showDeleteNodesDialog([node.id]);
4074
- await this.vm.refresh();
4075
- }
4076
- }
4077
4277
  async renameNode(node) {
4078
4278
  if (node) {
4079
4279
  const result = await this.driveService.rename(node);
@@ -4085,10 +4285,10 @@ class AXMDocumentExplorerComponent {
4085
4285
  async uploadFile(node) {
4086
4286
  const folderId = node?.id ?? this.vm.currentFolder()?.id;
4087
4287
  if (folderId) {
4088
- // const result = await this.driveService.showCreateFolderDialog(this.vm.currentFolder()?.id);
4089
- // if (result) {
4090
- // await this.vm.refresh();
4091
- // }
4288
+ const res = await this.driveService.uploadFile(folderId);
4289
+ if (res) {
4290
+ await this.vm.refresh();
4291
+ }
4092
4292
  }
4093
4293
  }
4094
4294
  async chooseFile() {
@@ -4106,50 +4306,28 @@ class AXMDocumentExplorerComponent {
4106
4306
  }
4107
4307
  }
4108
4308
  }
4109
- async moveNode(node) {
4309
+ async moveTo(node) {
4110
4310
  if (node) {
4111
- const result = await this.driveService.showTreeFolderPopup();
4311
+ const result = await this.driveService.moveTo({ browseMode: 'folder', node: node });
4112
4312
  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
4313
  await this.vm.refresh();
4120
4314
  }
4121
4315
  }
4122
4316
  }
4123
- async copyNodeToNewPath(node) {
4317
+ async copyTo(node) {
4124
4318
  if (node) {
4125
- const result = await this.driveService.showTreeFolderPopup();
4319
+ const result = await this.driveService.copyTo({ browseMode: 'folder', node: node });
4126
4320
  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
4321
  await this.vm.refresh();
4144
4322
  }
4145
4323
  }
4146
4324
  }
4147
4325
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXMDocumentExplorerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
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"] }] }); }
4326
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.3", type: AXMDocumentExplorerComponent, isStandalone: true, selector: "axm-document-explorer", inputs: { browseMode: { classPropertyName: "browseMode", publicName: "browseMode", isSignal: true, isRequired: false, transformFunction: null }, viewMode: { classPropertyName: "viewMode", publicName: "viewMode", isSignal: true, isRequired: false, transformFunction: null }, selectionMode: { classPropertyName: "selectionMode", publicName: "selectionMode", isSignal: true, isRequired: false, transformFunction: null }, showContextMenu: { classPropertyName: "showContextMenu", publicName: "showContextMenu", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "contextMenu", first: true, predicate: ["itemsContextMenu"], descendants: true, isSignal: true }, { propertyName: "rootContextMenu", first: true, predicate: ["rootContextMenu"], descendants: true, isSignal: true }], ngImport: i0, template: "<!-- Empty State -->\n<div class=\"view-container\">\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 <ng-container [ngComponentOutlet]=\"view()\"></ng-container>\n }\n</div>\n\n<!-- Context Menu -->\n@if (showContextMenu()) {\n<!-- Item Context Menu-->\n<ax-context-menu\n #itemsContextMenu\n [target]=\"'.__explorer-item'\"\n [orientation]=\"'vertical'\"\n [closeOn]=\"'leave'\"\n (onItemClick)=\"handleContextMenuItemClick($event)\"\n (onOpening)=\"handleContextMenuOnOpening($event)\"\n>\n</ax-context-menu>\n<!-- Root Context Menu-->\n<ax-context-menu\n #rootContextMenu\n [target]=\"'.view-container'\"\n [orientation]=\"'vertical'\"\n [closeOn]=\"'leave'\"\n (onItemClick)=\"handleContextMenuItemClick($event)\"\n (onOpening)=\"handleContextMenuRootOnOpening($event)\"\n>\n</ax-context-menu>\n}\n", styles: ["axm-document-explorer{display:flex;height:100%;width:100%;flex-direction:row;gap:1rem;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))}axm-document-explorer>.view-container{display:flex;flex:1 1 0%;-webkit-user-select:none;-moz-user-select:-moz-none;user-select:none;flex-direction:column;gap:1rem}axm-document-explorer .animation-duration-2s{--fa-animation-duration: 2s}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"] }, { kind: "ngmodule", type: RouterModule }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i3.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "ngmodule", type: AXLoadingModule }, { kind: "ngmodule", type: AXFormatModule }, { kind: "ngmodule", type: AXDateTimeModule }, { kind: "ngmodule", type: AXMenuModule }, { kind: "component", type: i3$1.AXContextMenuComponent, selector: "ax-context-menu", inputs: ["orientation", "openOn", "closeOn", "items", "target"], outputs: ["onItemClick", "onOpening"] }], encapsulation: i0.ViewEncapsulation.None }); }
4149
4327
  }
4150
4328
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXMDocumentExplorerComponent, decorators: [{
4151
4329
  type: Component,
4152
- args: [{ selector: 'axm-document-explorer', standalone: true, imports: [
4330
+ args: [{ selector: 'axm-document-explorer', standalone: true, encapsulation: ViewEncapsulation.None, imports: [
4153
4331
  CommonModule,
4154
4332
  RouterModule,
4155
4333
  AXDecoratorModule,
@@ -4157,10 +4335,117 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImpor
4157
4335
  AXFormatModule,
4158
4336
  AXDateTimeModule,
4159
4337
  AXMenuModule,
4160
- AXPElementDataDirective,
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"] }]
4338
+ ], template: "<!-- Empty State -->\n<div class=\"view-container\">\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 <ng-container [ngComponentOutlet]=\"view()\"></ng-container>\n }\n</div>\n\n<!-- Context Menu -->\n@if (showContextMenu()) {\n<!-- Item Context Menu-->\n<ax-context-menu\n #itemsContextMenu\n [target]=\"'.__explorer-item'\"\n [orientation]=\"'vertical'\"\n [closeOn]=\"'leave'\"\n (onItemClick)=\"handleContextMenuItemClick($event)\"\n (onOpening)=\"handleContextMenuOnOpening($event)\"\n>\n</ax-context-menu>\n<!-- Root Context Menu-->\n<ax-context-menu\n #rootContextMenu\n [target]=\"'.view-container'\"\n [orientation]=\"'vertical'\"\n [closeOn]=\"'leave'\"\n (onItemClick)=\"handleContextMenuItemClick($event)\"\n (onOpening)=\"handleContextMenuRootOnOpening($event)\"\n>\n</ax-context-menu>\n}\n", styles: ["axm-document-explorer{display:flex;height:100%;width:100%;flex-direction:row;gap:1rem;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))}axm-document-explorer>.view-container{display:flex;flex:1 1 0%;-webkit-user-select:none;-moz-user-select:-moz-none;user-select:none;flex-direction:column;gap:1rem}axm-document-explorer .animation-duration-2s{--fa-animation-duration: 2s}\n"] }]
4339
+ }] });
4340
+
4341
+ class AXMChooseDocumentTypeComponent extends AXBasePageComponent {
4342
+ constructor() {
4343
+ super(...arguments);
4344
+ this.documentTypeService = inject(AXMDocumentTypeService);
4345
+ this.fileTypeService = inject(AXPFileTypeProviderService);
4346
+ this.documentTypeSelected = signal([]);
4347
+ this.context = signal({});
4348
+ this.documentTypesSource = new AXDataSource({
4349
+ load: async (_) => {
4350
+ return await this.documentTypeService.query();
4351
+ },
4352
+ pageSize: 10,
4353
+ key: 'id',
4354
+ });
4355
+ this.uploadNode = signal({
4356
+ name: 'upload',
4357
+ path: 'upload',
4358
+ type: 'file',
4359
+ options: {
4360
+ accept: '.pdf',
4361
+ multiple: false,
4362
+ },
4363
+ });
4364
+ }
4365
+ async handleChangeDocumentType(event) {
4366
+ const item = event.component.selectedItems[0];
4367
+ this.uploadNode.update((old) => {
4368
+ return {
4369
+ ...old,
4370
+ options: {
4371
+ multiple: item.isMultiple,
4372
+ accept: item.name == 'any' ? '' : item.type.selectedItems.map((i) => `.${i.name.split('.')[1]}`).join(','),
4373
+ },
4374
+ };
4375
+ });
4376
+ for (const i of item.meta) {
4377
+ console.log(JSON.parse(i.interface)['children'][0]);
4378
+ if (!get(i, '__node__')) {
4379
+ set$1(i, '__node__', typeof i.interface == 'function' ? await i.interface() :
4380
+ JSON.parse(i.interface)['children'][0]['children'][0]);
4381
+ }
4382
+ }
4383
+ this.documentTypeSelected.set([item]);
4384
+ }
4385
+ handleContextChanged(e) {
4386
+ this.context.set(e.data);
4387
+ }
4388
+ handleCancel() {
4389
+ this.close();
4390
+ }
4391
+ handlesubmit() {
4392
+ this.close({
4393
+ documentType: this.documentTypeSelected(),
4394
+ context: this.context(),
4395
+ });
4396
+ }
4397
+ getNode(meta) {
4398
+ console.log(meta);
4399
+ return get(meta, '__node__');
4400
+ }
4401
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXMChooseDocumentTypeComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
4402
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.3", type: AXMChooseDocumentTypeComponent, isStandalone: true, selector: "axm-choose-document-type", usesInheritance: true, ngImport: i0, template: "<ax-header> </ax-header>\n<ax-content>\n <div class=\"ax-flex ax-flex-col ax-py-4 ax-px-6\">\n <ax-label> Select Document Type </ax-label>\n <ax-select-box\n [dataSource]=\"documentTypesSource\"\n textField=\"title\"\n valueField=\"id\"\n (onValueChanged)=\"handleChangeDocumentType($event)\"\n >\n </ax-select-box>\n @if (documentTypeSelected().length > 0) {\n <axp-widgets-container [context]=\"context()\" (onContextChanged)=\"handleContextChanged($event)\">\n <ax-form>\n @for(doc of documentTypeSelected()[0].meta; track doc.name) {\n <ax-form-field>\n <ax-label >{{ doc.title }}</ax-label>\n <ng-container axp-widget-renderer [node]=\"getNode(doc)\" [mode]=\"'edit'\"></ng-container>\n </ax-form-field>\n }\n\n <ng-container axp-widget-renderer [node]=\"uploadNode()\" mode=\"edit\"></ng-container>\n\n </ax-form>\n </axp-widgets-container>\n }\n </div>\n</ax-content>\n<ax-footer>\n <ax-suffix>\n <ax-button text=\"Cancel\" look=\"blank\" (onClick)=\"handleCancel()\"> </ax-button>\n <ax-button text=\"Next\" (onClick)=\"handlesubmit()\"> </ax-button>\n </ax-suffix>\n</ax-footer>\n", dependencies: [{ 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: AXDecoratorModule }, { 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: AXFormModule }, { kind: "component", type: i7.AXFormFieldComponent, selector: "ax-form-field", inputs: ["labelMode"] }, { kind: "component", type: i7.AXFormComponent, selector: "ax-form", inputs: ["labelMode", "look", "messageStyle", "updateOn"], outputs: ["onValidate", "updateOnChange"] }, { kind: "ngmodule", type: AXLabelModule }, { kind: "component", type: i4.AXLabelComponent, selector: "ax-label", inputs: ["required", "for"], outputs: ["requiredChange"] }, { kind: "ngmodule", type: AXSelectBoxModule }, { kind: "component", type: i1.AXSelectBoxComponent, selector: "ax-select-box", inputs: ["disabled", "readonly", "tabIndex", "placeholder", "minValue", "maxValue", "value", "state", "name", "id", "type", "look", "multiple", "valueField", "textField", "disabledField", "textTemplate", "selectedItems", "dataSource", "minRecordsForSearch", "caption", "itemTemplate", "selectedTemplate", "emptyTemplate", "loadingTemplate", "dropdownWidth", "searchBoxAutoFocus"], outputs: ["valueChange", "stateChange", "onValueChanged", "onBlur", "onFocus", "readonlyChange", "disabledChange", "onOpened", "onClosed"] }, { kind: "ngmodule", type: AXPLayoutBuilderModule }, { kind: "component", type: i6.AXPWidgetContainerComponent, selector: "axp-widgets-container", inputs: ["context", "functions"], outputs: ["onContextChanged"] }, { kind: "directive", type: i6.AXPWidgetRendererDirective, selector: "[axp-widget-renderer]", inputs: ["parentNode", "index", "mode", "node"], exportAs: ["widgetRenderer"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
4403
+ }
4404
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXMChooseDocumentTypeComponent, decorators: [{
4405
+ type: Component,
4406
+ args: [{ changeDetection: ChangeDetectionStrategy.OnPush, selector: 'axm-choose-document-type', imports: [AXButtonModule, AXDecoratorModule, AXFormModule, AXLabelModule, AXSelectBoxModule, AXPLayoutBuilderModule], template: "<ax-header> </ax-header>\n<ax-content>\n <div class=\"ax-flex ax-flex-col ax-py-4 ax-px-6\">\n <ax-label> Select Document Type </ax-label>\n <ax-select-box\n [dataSource]=\"documentTypesSource\"\n textField=\"title\"\n valueField=\"id\"\n (onValueChanged)=\"handleChangeDocumentType($event)\"\n >\n </ax-select-box>\n @if (documentTypeSelected().length > 0) {\n <axp-widgets-container [context]=\"context()\" (onContextChanged)=\"handleContextChanged($event)\">\n <ax-form>\n @for(doc of documentTypeSelected()[0].meta; track doc.name) {\n <ax-form-field>\n <ax-label >{{ doc.title }}</ax-label>\n <ng-container axp-widget-renderer [node]=\"getNode(doc)\" [mode]=\"'edit'\"></ng-container>\n </ax-form-field>\n }\n\n <ng-container axp-widget-renderer [node]=\"uploadNode()\" mode=\"edit\"></ng-container>\n\n </ax-form>\n </axp-widgets-container>\n }\n </div>\n</ax-content>\n<ax-footer>\n <ax-suffix>\n <ax-button text=\"Cancel\" look=\"blank\" (onClick)=\"handleCancel()\"> </ax-button>\n <ax-button text=\"Next\" (onClick)=\"handlesubmit()\"> </ax-button>\n </ax-suffix>\n</ax-footer>\n" }]
4407
+ }] });
4408
+
4409
+ class AXMFileViewerPopupComponent extends AXBasePageComponent {
4410
+ onClose() {
4411
+ this.close();
4412
+ }
4413
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXMFileViewerPopupComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
4414
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.0.3", type: AXMFileViewerPopupComponent, isStandalone: true, selector: "ng-component", usesInheritance: true, ngImport: i0, template: "<div>\n <ax-content>\n <ax-media-viewer-container #c [dataArray]=\"nodes\">\n <ax-header>\n <ax-file-info></ax-file-info>\n </ax-header>\n\n <ax-prefix>\n <ax-button (click)=\"c.next()\">\n <ax-icon class=\"ax-icon ax-icon-chevron-right\"> </ax-icon>\n </ax-button>\n </ax-prefix>\n\n <ax-suffix>\n <ax-button (click)=\"c.prev()\">\n <ax-icon class=\"ax-icon ax-icon-chevron-left\"> </ax-icon>\n </ax-button>\n </ax-suffix>\n </ax-media-viewer-container>\n </ax-content>\n\n <ax-footer>\n <ax-suffix>\n <ax-button [text]=\"'close'\" (click)=\"onClose()\" />\n </ax-suffix>\n </ax-footer>\n</div>\n", dependencies: [{ kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i3.AXDecoratorIconComponent, selector: "ax-icon", 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: 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: AXMediaViewerModule }, { kind: "component", type: i3$2.AXMediaViewerContainerComponent, selector: "ax-media-viewer-container", inputs: ["dataArray", "thumbnail"] }, { kind: "component", type: i3$2.AXFileInfoComponent, selector: "ax-file-info" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
4415
+ }
4416
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXMFileViewerPopupComponent, decorators: [{
4417
+ type: Component,
4418
+ args: [{ changeDetection: ChangeDetectionStrategy.OnPush, imports: [AXDecoratorModule, AXButtonModule, AXMediaViewerModule], template: "<div>\n <ax-content>\n <ax-media-viewer-container #c [dataArray]=\"nodes\">\n <ax-header>\n <ax-file-info></ax-file-info>\n </ax-header>\n\n <ax-prefix>\n <ax-button (click)=\"c.next()\">\n <ax-icon class=\"ax-icon ax-icon-chevron-right\"> </ax-icon>\n </ax-button>\n </ax-prefix>\n\n <ax-suffix>\n <ax-button (click)=\"c.prev()\">\n <ax-icon class=\"ax-icon ax-icon-chevron-left\"> </ax-icon>\n </ax-button>\n </ax-suffix>\n </ax-media-viewer-container>\n </ax-content>\n\n <ax-footer>\n <ax-suffix>\n <ax-button [text]=\"'close'\" (click)=\"onClose()\" />\n </ax-suffix>\n </ax-footer>\n</div>\n" }]
4162
4419
  }] });
4163
4420
 
4421
+ var fileViewerPopup_component = /*#__PURE__*/Object.freeze({
4422
+ __proto__: null,
4423
+ AXMFileViewerPopupComponent: AXMFileViewerPopupComponent
4424
+ });
4425
+
4426
+ class AXMFolderPathBreadcrumbsComponent {
4427
+ constructor() {
4428
+ this.vm = inject(AXPDocumentExplorerViewModel);
4429
+ this.layout = inject(AXPLayoutThemeService);
4430
+ }
4431
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXMFolderPathBreadcrumbsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
4432
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.3", type: AXMFolderPathBreadcrumbsComponent, isStandalone: true, selector: "axm-folder-path-breadcrumbs", ngImport: i0, template: "<!-- Breadcrumbs Section -->\n<div class=\"__breadcrumb ax-xs\">\n <!-- Desktop Breadcrumb -->\n @for (item of vm.currentPath(); track item.id; let i = $index;let last = $last) {\n <!-- Navigation Button -->\n <ax-button look=\"blank\" (onClick)=\"vm.navigateToFolder(item.id)\" [text]=\"item.name\" [disabled]=\"last\">\n @if(i === 0) {\n <ax-icon icon=\"fa-light fa-cloud\"></ax-icon>\n }@else {\n <ax-icon icon=\"fa-light fa-folder-closed\"></ax-icon>\n }\n </ax-button>\n <!-- Separator -->\n @if(!last) {\n <i class=\"far fa-chevron-right rtl:ax-rotate-180 fa-fw fa-xs ax-me-2\"></i>\n }\n <!-- End Navigation Button -->\n }\n</div>\n", styles: [":host{display:flex;width:100%;align-items:center}:host .__nav{display:flex;flex-direction:row;align-items:center;gap:.25rem;border-inline-end-width:1px;padding-inline-start:.25rem;padding-inline-end:.5rem}:host .__breadcrumb{display:flex;flex-direction:row;flex-wrap:wrap;align-items:center;padding-inline-start:.5rem;padding-inline-end:.25rem}:host .__breadcrumb .ax-state-disabled button,:host .__breadcrumb .ax-state-loading button{cursor:default!important}\n"], dependencies: [{ 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: AXDecoratorModule }, { kind: "component", type: i3.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }] }); }
4433
+ }
4434
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXMFolderPathBreadcrumbsComponent, decorators: [{
4435
+ type: Component,
4436
+ args: [{ selector: 'axm-folder-path-breadcrumbs', standalone: true, imports: [
4437
+ AXButtonModule,
4438
+ AXDecoratorModule,
4439
+ ], template: "<!-- Breadcrumbs Section -->\n<div class=\"__breadcrumb ax-xs\">\n <!-- Desktop Breadcrumb -->\n @for (item of vm.currentPath(); track item.id; let i = $index;let last = $last) {\n <!-- Navigation Button -->\n <ax-button look=\"blank\" (onClick)=\"vm.navigateToFolder(item.id)\" [text]=\"item.name\" [disabled]=\"last\">\n @if(i === 0) {\n <ax-icon icon=\"fa-light fa-cloud\"></ax-icon>\n }@else {\n <ax-icon icon=\"fa-light fa-folder-closed\"></ax-icon>\n }\n </ax-button>\n <!-- Separator -->\n @if(!last) {\n <i class=\"far fa-chevron-right rtl:ax-rotate-180 fa-fw fa-xs ax-me-2\"></i>\n }\n <!-- End Navigation Button -->\n }\n</div>\n", styles: [":host{display:flex;width:100%;align-items:center}:host .__nav{display:flex;flex-direction:row;align-items:center;gap:.25rem;border-inline-end-width:1px;padding-inline-start:.25rem;padding-inline-end:.5rem}:host .__breadcrumb{display:flex;flex-direction:row;flex-wrap:wrap;align-items:center;padding-inline-start:.5rem;padding-inline-end:.25rem}:host .__breadcrumb .ax-state-disabled button,:host .__breadcrumb .ax-state-loading button{cursor:default!important}\n"] }]
4440
+ }] });
4441
+
4442
+ var index = /*#__PURE__*/Object.freeze({
4443
+ __proto__: null,
4444
+ AXMChooseDocumentTypeComponent: AXMChooseDocumentTypeComponent,
4445
+ AXMFileViewerPopupComponent: AXMFileViewerPopupComponent,
4446
+ AXMFolderPathBreadcrumbsComponent: AXMFolderPathBreadcrumbsComponent
4447
+ });
4448
+
4164
4449
  class AXMDocumentAttachmentWidgetEditComponent extends AXPWidgetComponent {
4165
4450
  constructor() {
4166
4451
  super(...arguments);
@@ -4178,7 +4463,7 @@ class AXMDocumentAttachmentWidgetEditComponent extends AXPWidgetComponent {
4178
4463
  #navigateEffect;
4179
4464
  ngOnInit() {
4180
4465
  super.ngOnInit();
4181
- this.vm.initialize();
4466
+ this.vm.initialize({ browseMode: 'file' });
4182
4467
  this.loadDrive();
4183
4468
  }
4184
4469
  async loadDrive(folderId) {
@@ -4196,7 +4481,7 @@ class AXMDocumentAttachmentWidgetEditComponent extends AXPWidgetComponent {
4196
4481
  this.vm.navigateToFolder(folderId);
4197
4482
  }
4198
4483
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXMDocumentAttachmentWidgetEditComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
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 }); }
4484
+ 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", inputs: ["browseMode", "viewMode", "selectionMode", "showContextMenu"] }, { kind: "component", type: 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: 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: AXDecoratorModule }, { kind: "component", type: i3.AXDecoratorIconComponent, selector: "ax-icon", 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: AXTranslationModule }, { kind: "directive", type: i3$3.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 }); }
4200
4485
  }
4201
4486
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXMDocumentAttachmentWidgetEditComponent, decorators: [{
4202
4487
  type: Component,
@@ -4307,6 +4592,85 @@ const AXMDocumentAttachmentWidget = {
4307
4592
  },
4308
4593
  };
4309
4594
 
4595
+ class AXMCheckDocumentTypeWorkflowAction extends AXPWorkflowAction {
4596
+ async execute(context) {
4597
+ const documentType = context.getVariable('documentType');
4598
+ if (documentType) {
4599
+ context.setOutput('need-choose-document-type', false);
4600
+ }
4601
+ else {
4602
+ context.setOutput('need-choose-document-type', true);
4603
+ }
4604
+ }
4605
+ }
4606
+ class AXMChooseDocumentTypeWorkflowAction extends AXPWorkflowAction {
4607
+ constructor() {
4608
+ super(...arguments);
4609
+ this.popupService = inject(AXPopupService);
4610
+ }
4611
+ async execute(context) {
4612
+ const comp = (await Promise.resolve().then(function () { return index; })).AXMChooseDocumentTypeComponent;
4613
+ const result = await this.popupService.open(comp);
4614
+ if (result.data != null && result.data.documentTypeId != null) {
4615
+ context.setVariable('documentTypeId', result.data.documentTypeId);
4616
+ context.setOutput('isCanceled', false);
4617
+ }
4618
+ else {
4619
+ context.setOutput('isCanceled', true);
4620
+ }
4621
+ }
4622
+ }
4623
+ class AXMChooseFileWorkflowAction extends AXPWorkflowAction {
4624
+ constructor() {
4625
+ super(...arguments);
4626
+ this.documentTypeService = inject(AXMDocumentTypeService);
4627
+ this.uploadService = inject(AXUploaderService);
4628
+ }
4629
+ async execute(context) {
4630
+ var doc = context.getVariable('documentType');
4631
+ if (!doc) {
4632
+ const docId = context.getVariable('documentTypeId');
4633
+ doc = await this.documentTypeService.getOne(docId);
4634
+ }
4635
+ this.uploadService.browse({
4636
+ //accept: doc.type,
4637
+ multiple: doc.isMultiple,
4638
+ });
4639
+ }
4640
+ }
4641
+ const AXMUploadWorkflow = {
4642
+ startStepId: 'check-document-type',
4643
+ steps: {
4644
+ 'check-document-type': {
4645
+ action: 'AXMCheckDocumentTypeWorkflowAction',
4646
+ nextSteps: [
4647
+ {
4648
+ conditions: [{ type: 'SINGLE', expression: 'context.getOutput("need-choose-document-type") == true' }],
4649
+ nextStepId: 'choose-document-type',
4650
+ },
4651
+ ],
4652
+ },
4653
+ 'choose-document-type': {
4654
+ action: 'AXMChooseDocumentTypeWorkflowAction',
4655
+ nextSteps: [
4656
+ {
4657
+ conditions: [{ type: 'SINGLE', expression: 'context.getOutput("isCanceled") == false' }],
4658
+ nextStepId: 'file-browser',
4659
+ },
4660
+ ],
4661
+ },
4662
+ 'file-browser': {
4663
+ action: 'AXMChooseFileWorkflowAction',
4664
+ nextSteps: [
4665
+ {
4666
+ conditions: [],
4667
+ nextStepId: 'dispatch-event',
4668
+ },
4669
+ ],
4670
+ },
4671
+ },
4672
+ };
4673
+
4310
4674
  function routesFacory() {
4311
4675
  const config = inject(AXP_ENTITY_CONFIG_TOKEN);
4312
4676
  const routes = [
@@ -4320,11 +4684,11 @@ function routesFacory() {
4320
4684
  children: [
4321
4685
  {
4322
4686
  path: '',
4323
- loadComponent: () => import('./acorex-modules-document-management-drive.component-B6az6-_w.mjs').then((c) => c.AXMDocumentDriveComponent),
4687
+ loadComponent: () => import('./acorex-modules-document-management-drive.component-CZR-optD.mjs').then((c) => c.AXMDocumentDriveComponent),
4324
4688
  },
4325
4689
  {
4326
4690
  path: ':id',
4327
- loadComponent: () => import('./acorex-modules-document-management-drive.component-B6az6-_w.mjs').then((c) => c.AXMDocumentDriveComponent),
4691
+ loadComponent: () => import('./acorex-modules-document-management-drive.component-CZR-optD.mjs').then((c) => c.AXMDocumentDriveComponent),
4328
4692
  },
4329
4693
  ],
4330
4694
  },
@@ -4337,7 +4701,7 @@ class AXMDocumentManagementModule {
4337
4701
  AXMDocumentManagementDocumentTypeMetaValueEntityModule,
4338
4702
  AXMDocumentManagementDocumentTypeMetaDefinitionEntityModule,
4339
4703
  AXMDocumentManagementDocumentTypeEntityModule,
4340
- AXMDocumentManagementDocumentEntityModule, i6.AXPLayoutBuilderModule, AXMFileTypeModule, i3$2.AXMediaViewerModule] }); }
4704
+ AXMDocumentManagementDocumentEntityModule, i6.AXPLayoutBuilderModule, AXMFileTypeModule, i3$2.AXMediaViewerModule, i3$4.AXPWorkflowModule] }); }
4341
4705
  static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXMDocumentManagementModule, providers: [
4342
4706
  {
4343
4707
  provide: AXMFolderService,
@@ -4382,7 +4746,17 @@ class AXMDocumentManagementModule {
4382
4746
  widgets: [AXmFileTypeExtensionWidget, AXMDocumentAttachmentWidget],
4383
4747
  }),
4384
4748
  AXMFileTypeModule,
4385
- AXMediaViewerModule.forRoot()] }); }
4749
+ AXMediaViewerModule.forRoot(),
4750
+ AXPWorkflowModule.forChild({
4751
+ actions: {
4752
+ AXMCheckDocumentTypeWorkflowAction,
4753
+ AXMChooseDocumentTypeWorkflowAction,
4754
+ AXMChooseFileWorkflowAction,
4755
+ },
4756
+ workflows: {
4757
+ 'upload-document': AXMUploadWorkflow,
4758
+ },
4759
+ })] }); }
4386
4760
  }
4387
4761
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXMDocumentManagementModule, decorators: [{
4388
4762
  type: NgModule,
@@ -4398,6 +4772,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImpor
4398
4772
  }),
4399
4773
  AXMFileTypeModule,
4400
4774
  AXMediaViewerModule.forRoot(),
4775
+ AXPWorkflowModule.forChild({
4776
+ actions: {
4777
+ AXMCheckDocumentTypeWorkflowAction,
4778
+ AXMChooseDocumentTypeWorkflowAction,
4779
+ AXMChooseFileWorkflowAction,
4780
+ },
4781
+ workflows: {
4782
+ 'upload-document': AXMUploadWorkflow,
4783
+ },
4784
+ }),
4401
4785
  ],
4402
4786
  exports: [],
4403
4787
  providers: [
@@ -4443,5 +4827,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImpor
4443
4827
  * Generated bundle index. Do not edit.
4444
4828
  */
4445
4829
 
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 };
4447
- //# sourceMappingURL=acorex-modules-document-management-acorex-modules-document-management-BmLGtKDq.mjs.map
4830
+ export { AXPDocumentExplorerViewModel as A, AXMFolderService as B, AXMFolderServiceImpl as C, AXMEntityProvider as D, AXMMenuProvider as E, AXMSearchCommandProvider as F, AXMSettingProvider as G, RootConfig as R, AXMDocumentManagerService as a, AXMDocumentExplorerComponent as b, AXMDriveScope as c, AXMFolderPathBreadcrumbsComponent as d, AXMDocumentManagementModule as e, documentFactory as f, AXMDocumentManagementDocumentEntityModule as g, AXMDocumentService as h, AXMDocumentServiceImpl as i, documentTypeFactory as j, AXMDocumentManagementDocumentTypeEntityModule as k, AXMDocumentTypeService as l, AXMDocumentManagementDocumentTypeEntityServiceImpl as m, documentTypeMetaDefinitionfactory as n, AXMDocumentManagementDocumentTypeMetaDefinitionEntityModule as o, AXMDocumentManagementDocumentTypeMetaDefinitionEntityService as p, AXMDocumentManagementDocumentTypeMetaDefinitionEntityServiceImpl as q, documentTypeMetaValueFactory as r, AXMDocumentManagementDocumentTypeMetaValueEntityModule as s, AXMDocumentManagementDocumentTypeMetaValueEntityService as t, AXMDocumentManagementDocumentTypeMetaValueEntityServiceImpl as u, documentTypeStatusDefinitionFactory as v, AXMDocumentManagementDocumentTypeStatusDefinitionEntityModule as w, AXMDocumentManagementDocumentTypeStatusDefinitionEntityService as x, AXMDocumentManagementDocumentTypeStatusDefinitionEntityServiceImpl as y, folderFactory as z };
4831
+ //# sourceMappingURL=acorex-modules-document-management-acorex-modules-document-management-CpoLrul7.mjs.map