@acorex/modules 19.2.20 → 19.3.0-next.1

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 (218) hide show
  1. package/application-management/lib/layouts/module-entity-detail-view/module-entity-detail-view.component.d.ts +2 -2
  2. package/auth/lib/setting.provider.d.ts +4 -0
  3. package/common/index.d.ts +1 -0
  4. package/common/lib/entities/dashboard/dashboard.types.d.ts +1 -1
  5. package/common/lib/features/{dashboard-home/dashboard-home.d.ts → home-dashboard/dashboard-home/home-dashboard.d.ts} +72 -52
  6. package/common/lib/features/{dashboard-home/dashboard-home.store.d.ts → home-dashboard/dashboard-home/home-dashboard.store.d.ts} +9 -4
  7. package/common/lib/features/home-dashboard/dashboard-home/index.d.ts +3 -0
  8. package/common/lib/features/{dashboard-popups → home-dashboard/dashboard-popups}/add-dashboard-popup.d.ts +7 -5
  9. package/common/lib/features/home-dashboard/dashboard-popups/configuration-popup.d.ts +14 -0
  10. package/common/lib/features/{dashboard-popups → home-dashboard/dashboard-popups}/dashboard-popup.service.d.ts +5 -4
  11. package/common/lib/features/home-dashboard/setrting.keys.d.ts +3 -0
  12. package/common/lib/features/{widget-wrapper → home-dashboard/widget-wrapper}/dashboard-widget-wrapper.d.ts +2 -1
  13. package/common/lib/menu.provider.d.ts +1 -1
  14. package/conversation/lib/entities/chat/pages/chat/chat.component.d.ts +1 -1
  15. package/conversation/lib/entities/comments/comments.service.d.ts +4 -4
  16. package/conversation/lib/entities/comments/comments.type.d.ts +1 -1
  17. package/document-management/lib/badge.provider.d.ts +11 -0
  18. package/document-management/lib/entities/document/document.service.d.ts +1 -1
  19. package/document-management/lib/entities/document/document.types.d.ts +2 -0
  20. package/document-management/lib/entities/document-type/document-type.service.d.ts +3 -3
  21. package/document-management/lib/entities/folder/folder.service.d.ts +2 -7
  22. package/document-management/lib/entities/folder/folder.types.d.ts +2 -1
  23. package/document-management/lib/features/document-explorer/components/create-folder-dialog/create-folder-dialog.component.d.ts +9 -0
  24. package/document-management/lib/features/document-explorer/document-explorer.component.d.ts +20 -8
  25. package/document-management/lib/features/document-explorer/document-explorer.viewmodel.d.ts +10 -6
  26. package/document-management/lib/features/document-explorer/views/detail-panel/detail-panel.component.d.ts +40 -36
  27. package/document-management/lib/features/document-explorer/views/details/details-view.component.d.ts +40 -36
  28. package/document-management/lib/features/document-explorer/views/large-icons/large-icons-view.component.d.ts +40 -36
  29. package/document-management/lib/features/document-explorer/views/large-tiles/large-tiles-view.component.d.ts +40 -36
  30. package/document-management/lib/features/document-explorer/views/list/list-view.component.d.ts +40 -36
  31. package/document-management/lib/features/document-explorer/views/small-icons/small-icons-view.component.d.ts +40 -36
  32. package/document-management/lib/features/document-explorer/views/small-tiles/small-tiles-view.component.d.ts +40 -36
  33. package/document-management/lib/features/drive/drive.component.d.ts +15 -9
  34. package/document-management/lib/features/drive/index.d.ts +3 -0
  35. package/document-management/lib/features/drive-choose/drive-choose.component.d.ts +16 -8
  36. package/document-management/lib/features/shared/components/document-type-choose-file/document-type-choose-file.component.d.ts +16 -0
  37. package/document-management/lib/features/shared/components/file-viewer-popup/file-viewer-popup.component.d.ts +5 -1
  38. package/document-management/lib/features/shared/components/folder-path-breadcrumbs/folder-path-breadcrumbs.component.d.ts +10 -6
  39. package/document-management/lib/features/shared/components/index.d.ts +1 -0
  40. package/document-management/lib/features/shared/components/link-dialog/link-dialog.component.d.ts +24 -0
  41. package/document-management/lib/features/shared/components/lock-dialog/lock-dialog.component.d.ts +16 -0
  42. package/document-management/lib/features/shared/components/share-dialog/share-dialog.component.d.ts +22 -0
  43. package/document-management/lib/features/shared/components/share-email-dialog/share-email-dialog.component.d.ts +17 -0
  44. package/document-management/lib/features/shared/components/unlock-dialog/unlock-dialog.component.d.ts +10 -0
  45. package/document-management/lib/features/shared/document-manager.service.d.ts +45 -22
  46. package/document-management/lib/features/shared/document-manager.types.d.ts +5 -7
  47. package/document-management/lib/features/widgets/document-attachment/document-attachment-widget-column.component.d.ts +1 -1
  48. package/document-management/lib/features/widgets/document-attachment/document-attachment-widget-edit.component.d.ts +66 -44
  49. package/document-management/lib/features/widgets/document-attachment/document-attachment-widget-print.component.d.ts +1 -1
  50. package/document-management/lib/features/widgets/document-attachment/document-attachment-widget-view.component.d.ts +1 -1
  51. package/document-management/lib/features/widgets/document-attachment/index.d.ts +0 -1
  52. package/fesm2022/acorex-modules-application-management.mjs +0 -1
  53. package/fesm2022/acorex-modules-application-management.mjs.map +1 -1
  54. package/fesm2022/{acorex-modules-auth-acorex-modules-auth-DrcL7GCj.mjs → acorex-modules-auth-acorex-modules-auth-5o4GqqVA.mjs} +15 -19
  55. package/fesm2022/acorex-modules-auth-acorex-modules-auth-5o4GqqVA.mjs.map +1 -0
  56. package/fesm2022/{acorex-modules-auth-app-chooser.component-CbJb1P_k.mjs → acorex-modules-auth-app-chooser.component-NuQzP5DC.mjs} +2 -2
  57. package/fesm2022/{acorex-modules-auth-app-chooser.component-CbJb1P_k.mjs.map → acorex-modules-auth-app-chooser.component-NuQzP5DC.mjs.map} +1 -1
  58. package/fesm2022/{acorex-modules-auth-login.module-DFCB1l7W.mjs → acorex-modules-auth-login.module-B_WrZQJx.mjs} +4 -4
  59. package/fesm2022/{acorex-modules-auth-login.module-DFCB1l7W.mjs.map → acorex-modules-auth-login.module-B_WrZQJx.mjs.map} +1 -1
  60. package/fesm2022/{acorex-modules-auth-master.layout-CuKXvY0o.mjs → acorex-modules-auth-master.layout-hDbrFbwO.mjs} +2 -2
  61. package/fesm2022/{acorex-modules-auth-master.layout-CuKXvY0o.mjs.map → acorex-modules-auth-master.layout-hDbrFbwO.mjs.map} +1 -1
  62. package/fesm2022/{acorex-modules-auth-password.component-DacOjakT.mjs → acorex-modules-auth-password.component-BnT_IaqN.mjs} +2 -2
  63. package/fesm2022/{acorex-modules-auth-password.component-DacOjakT.mjs.map → acorex-modules-auth-password.component-BnT_IaqN.mjs.map} +1 -1
  64. package/fesm2022/{acorex-modules-auth-password.component-5gwz30CZ.mjs → acorex-modules-auth-password.component-DDE0M5GE.mjs} +2 -2
  65. package/fesm2022/{acorex-modules-auth-password.component-5gwz30CZ.mjs.map → acorex-modules-auth-password.component-DDE0M5GE.mjs.map} +1 -1
  66. package/fesm2022/{acorex-modules-auth-routes-D018Lg-b.mjs → acorex-modules-auth-routes-Da02kID6.mjs} +2 -2
  67. package/fesm2022/{acorex-modules-auth-routes-D018Lg-b.mjs.map → acorex-modules-auth-routes-Da02kID6.mjs.map} +1 -1
  68. package/fesm2022/acorex-modules-auth-setting.provider-D3A0WUgJ.mjs +271 -0
  69. package/fesm2022/acorex-modules-auth-setting.provider-D3A0WUgJ.mjs.map +1 -0
  70. package/fesm2022/{acorex-modules-auth-two-factor.module-DiEB7VWl.mjs → acorex-modules-auth-two-factor.module-BrDpX4X1.mjs} +2 -2
  71. package/fesm2022/{acorex-modules-auth-two-factor.module-DiEB7VWl.mjs.map → acorex-modules-auth-two-factor.module-BrDpX4X1.mjs.map} +1 -1
  72. package/fesm2022/acorex-modules-auth.mjs +1 -1
  73. package/fesm2022/acorex-modules-common-index-rvP9ISgL.mjs +717 -0
  74. package/fesm2022/acorex-modules-common-index-rvP9ISgL.mjs.map +1 -0
  75. package/fesm2022/acorex-modules-common.mjs +34 -24
  76. package/fesm2022/acorex-modules-common.mjs.map +1 -1
  77. package/fesm2022/acorex-modules-conversation.mjs +4 -2
  78. package/fesm2022/acorex-modules-conversation.mjs.map +1 -1
  79. package/fesm2022/{acorex-modules-document-management-acorex-modules-document-management-_BOVaDOq.mjs → acorex-modules-document-management-acorex-modules-document-management-C36haVZ_.mjs} +1054 -266
  80. package/fesm2022/acorex-modules-document-management-acorex-modules-document-management-C36haVZ_.mjs.map +1 -0
  81. package/fesm2022/acorex-modules-document-management-create-folder-dialog.component-C9YP1aFi.mjs +135 -0
  82. package/fesm2022/acorex-modules-document-management-create-folder-dialog.component-C9YP1aFi.mjs.map +1 -0
  83. package/fesm2022/{acorex-modules-document-management-details-view.component-BHcu_gYH.mjs → acorex-modules-document-management-details-view.component-BFMgAxeK.mjs} +2 -2
  84. package/fesm2022/{acorex-modules-document-management-details-view.component-BHcu_gYH.mjs.map → acorex-modules-document-management-details-view.component-BFMgAxeK.mjs.map} +1 -1
  85. package/fesm2022/{acorex-modules-document-management-drive-choose.component-WoZfDyLK.mjs → acorex-modules-document-management-drive-choose.component-Bo-I7TN5.mjs} +22 -16
  86. package/fesm2022/acorex-modules-document-management-drive-choose.component-Bo-I7TN5.mjs.map +1 -0
  87. package/fesm2022/{acorex-modules-document-management-large-icons-view.component-DvriE0YR.mjs → acorex-modules-document-management-large-icons-view.component-CZ-GUtnO.mjs} +2 -2
  88. package/fesm2022/{acorex-modules-document-management-large-icons-view.component-DvriE0YR.mjs.map → acorex-modules-document-management-large-icons-view.component-CZ-GUtnO.mjs.map} +1 -1
  89. package/fesm2022/{acorex-modules-document-management-large-tiles-view.component-ByWrKvZe.mjs → acorex-modules-document-management-large-tiles-view.component-Cw5yZ851.mjs} +2 -2
  90. package/fesm2022/{acorex-modules-document-management-large-tiles-view.component-ByWrKvZe.mjs.map → acorex-modules-document-management-large-tiles-view.component-Cw5yZ851.mjs.map} +1 -1
  91. package/fesm2022/acorex-modules-document-management-link-dialog.component-1iPUnhr1.mjs +70 -0
  92. package/fesm2022/acorex-modules-document-management-link-dialog.component-1iPUnhr1.mjs.map +1 -0
  93. package/fesm2022/{acorex-modules-document-management-list-view.component-B6J6Tokv.mjs → acorex-modules-document-management-list-view.component-BPkaAGjR.mjs} +2 -2
  94. package/fesm2022/{acorex-modules-document-management-list-view.component-B6J6Tokv.mjs.map → acorex-modules-document-management-list-view.component-BPkaAGjR.mjs.map} +1 -1
  95. package/fesm2022/acorex-modules-document-management-lock-dialog.component-BwKdUUcf.mjs +52 -0
  96. package/fesm2022/acorex-modules-document-management-lock-dialog.component-BwKdUUcf.mjs.map +1 -0
  97. package/fesm2022/{acorex-modules-document-management-rename-node-dialog.component-Dae6RWb8.mjs → acorex-modules-document-management-rename-node-dialog.component-DEhPxW3b.mjs} +10 -10
  98. package/fesm2022/acorex-modules-document-management-rename-node-dialog.component-DEhPxW3b.mjs.map +1 -0
  99. package/fesm2022/acorex-modules-document-management-share-dialog.component-BiNdRpqs.mjs +143 -0
  100. package/fesm2022/acorex-modules-document-management-share-dialog.component-BiNdRpqs.mjs.map +1 -0
  101. package/fesm2022/acorex-modules-document-management-share-email-dialog.component-BvR5OuCV.mjs +55 -0
  102. package/fesm2022/acorex-modules-document-management-share-email-dialog.component-BvR5OuCV.mjs.map +1 -0
  103. package/fesm2022/{acorex-modules-document-management-small-icons-view.component-TrYeB22e.mjs → acorex-modules-document-management-small-icons-view.component-Cz-sHFPj.mjs} +2 -2
  104. package/fesm2022/{acorex-modules-document-management-small-icons-view.component-TrYeB22e.mjs.map → acorex-modules-document-management-small-icons-view.component-Cz-sHFPj.mjs.map} +1 -1
  105. package/fesm2022/{acorex-modules-document-management-small-tiles-view.component-DDKdWg8I.mjs → acorex-modules-document-management-small-tiles-view.component-C_SlJ79h.mjs} +2 -2
  106. package/fesm2022/{acorex-modules-document-management-small-tiles-view.component-DDKdWg8I.mjs.map → acorex-modules-document-management-small-tiles-view.component-C_SlJ79h.mjs.map} +1 -1
  107. package/fesm2022/acorex-modules-document-management-unlock-dialog.component-DkZQ84kg.mjs +37 -0
  108. package/fesm2022/acorex-modules-document-management-unlock-dialog.component-DkZQ84kg.mjs.map +1 -0
  109. package/fesm2022/acorex-modules-document-management.mjs +1 -1
  110. package/fesm2022/{acorex-modules-form-template-management-acorex-modules-form-template-management-CJYrDtq6.mjs → acorex-modules-form-template-management-acorex-modules-form-template-management-C3bCqH0S.mjs} +30 -24
  111. package/fesm2022/acorex-modules-form-template-management-acorex-modules-form-template-management-C3bCqH0S.mjs.map +1 -0
  112. package/fesm2022/{acorex-modules-form-template-management-category.entity-BdiYytzK.mjs → acorex-modules-form-template-management-category.entity-B8FoSfDd.mjs} +7 -3
  113. package/fesm2022/acorex-modules-form-template-management-category.entity-B8FoSfDd.mjs.map +1 -0
  114. package/fesm2022/{acorex-modules-form-template-management-setting.provider-CoETMkEC.mjs → acorex-modules-form-template-management-setting.provider-2gDLkJ82.mjs} +20 -17
  115. package/fesm2022/acorex-modules-form-template-management-setting.provider-2gDLkJ82.mjs.map +1 -0
  116. package/fesm2022/{acorex-modules-form-template-management-template-picker.component-0JfGxdMv.mjs → acorex-modules-form-template-management-template-picker.component-M-R2U9CH.mjs} +5 -4
  117. package/fesm2022/acorex-modules-form-template-management-template-picker.component-M-R2U9CH.mjs.map +1 -0
  118. package/fesm2022/{acorex-modules-form-template-management-template-widget-edit.component-BkJ3ieIg.mjs → acorex-modules-form-template-management-template-widget-edit.component-CGLJ_4tB.mjs} +2 -2
  119. package/fesm2022/{acorex-modules-form-template-management-template-widget-edit.component-BkJ3ieIg.mjs.map → acorex-modules-form-template-management-template-widget-edit.component-CGLJ_4tB.mjs.map} +1 -1
  120. package/fesm2022/{acorex-modules-form-template-management-template.entity-ByE2p0Mu.mjs → acorex-modules-form-template-management-template.entity-Cm57FCm7.mjs} +53 -33
  121. package/fesm2022/acorex-modules-form-template-management-template.entity-Cm57FCm7.mjs.map +1 -0
  122. package/fesm2022/{acorex-modules-form-template-management-viewer-popup.component-CThcXWpt.mjs → acorex-modules-form-template-management-viewer-popup.component-C8QVMY0f.mjs} +2 -2
  123. package/fesm2022/{acorex-modules-form-template-management-viewer-popup.component-CThcXWpt.mjs.map → acorex-modules-form-template-management-viewer-popup.component-C8QVMY0f.mjs.map} +1 -1
  124. package/fesm2022/acorex-modules-form-template-management.mjs +1 -1
  125. package/fesm2022/acorex-modules-notification-management.mjs +43 -35
  126. package/fesm2022/acorex-modules-notification-management.mjs.map +1 -1
  127. package/fesm2022/{acorex-modules-organization-management-org-chart-configuration.page-JKQwYEPq.mjs → acorex-modules-organization-management-org-chart-configuration.page-BFu7TUGC.mjs} +3 -3
  128. package/fesm2022/{acorex-modules-organization-management-org-chart-configuration.page-JKQwYEPq.mjs.map → acorex-modules-organization-management-org-chart-configuration.page-BFu7TUGC.mjs.map} +1 -1
  129. package/fesm2022/{acorex-modules-organization-management-org-chart-configuration.service-QLdDEdqL.mjs → acorex-modules-organization-management-org-chart-configuration.service-B4ohp4o5.mjs} +5 -4
  130. package/fesm2022/acorex-modules-organization-management-org-chart-configuration.service-B4ohp4o5.mjs.map +1 -0
  131. package/fesm2022/{acorex-modules-organization-management-org-chart.page-C2ZtUVKI.mjs → acorex-modules-organization-management-org-chart.page-BIytyLYP.mjs} +3 -4
  132. package/fesm2022/acorex-modules-organization-management-org-chart.page-BIytyLYP.mjs.map +1 -0
  133. package/fesm2022/{acorex-modules-organization-management-setting.provider-CMDpwkG2.mjs → acorex-modules-organization-management-setting.provider-BPjFNA5E.mjs} +44 -23
  134. package/fesm2022/acorex-modules-organization-management-setting.provider-BPjFNA5E.mjs.map +1 -0
  135. package/fesm2022/acorex-modules-organization-management.mjs +6 -6
  136. package/fesm2022/acorex-modules-organization-management.mjs.map +1 -1
  137. package/fesm2022/acorex-modules-platform-management-acorex-modules-platform-management-C-vMSeD0.mjs +4746 -0
  138. package/fesm2022/acorex-modules-platform-management-acorex-modules-platform-management-C-vMSeD0.mjs.map +1 -0
  139. package/fesm2022/{acorex-modules-platform-management-list-version.component-C9764yzu.mjs → acorex-modules-platform-management-list-version.component-EHtlPye1.mjs} +2 -2
  140. package/fesm2022/acorex-modules-platform-management-list-version.component-EHtlPye1.mjs.map +1 -0
  141. package/fesm2022/acorex-modules-platform-management-setting.provider-Bbd_enhk.mjs +335 -0
  142. package/fesm2022/acorex-modules-platform-management-setting.provider-Bbd_enhk.mjs.map +1 -0
  143. package/fesm2022/acorex-modules-platform-management.mjs +1 -4866
  144. package/fesm2022/acorex-modules-platform-management.mjs.map +1 -1
  145. package/fesm2022/acorex-modules-security-management.mjs +18 -12
  146. package/fesm2022/acorex-modules-security-management.mjs.map +1 -1
  147. package/form-template-management/lib/entities/category/category.service.d.ts +2 -2
  148. package/form-template-management/lib/entities/category/category.types.d.ts +2 -1
  149. package/form-template-management/lib/entities/template/template.service.d.ts +2 -2
  150. package/form-template-management/lib/entities/template/template.types.d.ts +38 -5
  151. package/form-template-management/lib/features/designer/template.provider.d.ts +1 -1
  152. package/form-template-management/lib/features/designer/widgets/template-picker/template.provider.d.ts +3 -3
  153. package/form-template-management/lib/setting.provider.d.ts +4 -0
  154. package/notification-management/lib/{components → features/components}/admin-notification-item/admin-notification-item.component.d.ts +1 -1
  155. package/notification-management/lib/{components → features/components}/admin-notification-panel/admin-notification-panel.component.d.ts +1 -1
  156. package/notification-management/lib/setting.provider.d.ts +4 -0
  157. package/organization-management/lib/features/organization-chart/org-chart-configuration.page.d.ts +2 -2
  158. package/organization-management/lib/features/organization-chart/org-chart.page.d.ts +2 -2
  159. package/organization-management/lib/setting.provider.d.ts +5 -3
  160. package/package.json +1 -1
  161. package/platform-management/index.d.ts +1 -1
  162. package/platform-management/lib/entities/app-term/index.d.ts +2 -2
  163. package/platform-management/lib/entities/app-version/index.d.ts +2 -2
  164. package/platform-management/lib/entities/index.d.ts +0 -1
  165. package/platform-management/lib/entities/promotion/index.d.ts +1 -1
  166. package/platform-management/lib/features/app-terms/check-terms.service.d.ts +11 -0
  167. package/platform-management/lib/{entities/app-term → features/app-terms}/components/notify-app/notify-app.component.d.ts +1 -1
  168. package/platform-management/lib/{entities/app-term → features/app-terms}/pages/list/list-terms.component.d.ts +2 -2
  169. package/platform-management/lib/{entities/check-version.d.ts → features/app-version/check-version.service.d.ts} +3 -4
  170. package/platform-management/lib/{entities → features}/app-version/components/list-versions/list-version.component.d.ts +1 -1
  171. package/platform-management/lib/{entities → features}/app-version/components/notify-app/notify-app.component.d.ts +1 -1
  172. package/platform-management/lib/{common → features/common}/index.d.ts +1 -1
  173. package/platform-management/lib/{common → features/common}/regional/setting.keys.d.ts +3 -1
  174. package/platform-management/lib/{common → features/common}/regional/setting.provider.d.ts +4 -1
  175. package/platform-management/lib/{entities → features}/promotion/components/promotion-slot/promotion-slot.component.d.ts +2 -2
  176. package/platform-management/lib/platform-management.module.d.ts +4 -3
  177. package/security-management/lib/entities/users/users.service.d.ts +4 -4
  178. package/security-management/lib/entities/users/users.types.d.ts +0 -4
  179. package/common/lib/features/dashboard-home/index.d.ts +0 -1
  180. package/document-management/lib/features/widgets/document-attachment/document-attachment-widget-filter.component.d.ts +0 -6
  181. package/fesm2022/acorex-modules-auth-acorex-modules-auth-DrcL7GCj.mjs.map +0 -1
  182. package/fesm2022/acorex-modules-auth-setting.provider-DDl3OHw6.mjs +0 -59
  183. package/fesm2022/acorex-modules-auth-setting.provider-DDl3OHw6.mjs.map +0 -1
  184. package/fesm2022/acorex-modules-common-index-D90SN6SH.mjs +0 -507
  185. package/fesm2022/acorex-modules-common-index-D90SN6SH.mjs.map +0 -1
  186. package/fesm2022/acorex-modules-document-management-acorex-modules-document-management-_BOVaDOq.mjs.map +0 -1
  187. package/fesm2022/acorex-modules-document-management-create-folder-dialog.component-D66KoQNb.mjs +0 -92
  188. package/fesm2022/acorex-modules-document-management-create-folder-dialog.component-D66KoQNb.mjs.map +0 -1
  189. package/fesm2022/acorex-modules-document-management-drive-choose.component-WoZfDyLK.mjs.map +0 -1
  190. package/fesm2022/acorex-modules-document-management-drive.component-B3BCzdVv.mjs +0 -305
  191. package/fesm2022/acorex-modules-document-management-drive.component-B3BCzdVv.mjs.map +0 -1
  192. package/fesm2022/acorex-modules-document-management-rename-node-dialog.component-Dae6RWb8.mjs.map +0 -1
  193. package/fesm2022/acorex-modules-form-template-management-acorex-modules-form-template-management-CJYrDtq6.mjs.map +0 -1
  194. package/fesm2022/acorex-modules-form-template-management-category.entity-BdiYytzK.mjs.map +0 -1
  195. package/fesm2022/acorex-modules-form-template-management-setting.provider-CoETMkEC.mjs.map +0 -1
  196. package/fesm2022/acorex-modules-form-template-management-template-picker.component-0JfGxdMv.mjs.map +0 -1
  197. package/fesm2022/acorex-modules-form-template-management-template.entity-ByE2p0Mu.mjs.map +0 -1
  198. package/fesm2022/acorex-modules-organization-management-org-chart-configuration.service-QLdDEdqL.mjs.map +0 -1
  199. package/fesm2022/acorex-modules-organization-management-org-chart.page-C2ZtUVKI.mjs.map +0 -1
  200. package/fesm2022/acorex-modules-organization-management-setting.provider-CMDpwkG2.mjs.map +0 -1
  201. package/fesm2022/acorex-modules-platform-management-list-version.component-C9764yzu.mjs.map +0 -1
  202. /package/common/lib/features/{dashboard-home/dashboard.type.d.ts → home-dashboard/dashboard-home/home-dashboard.type.d.ts} +0 -0
  203. /package/notification-management/lib/{components → features/components}/admin-notification-slot/admin-notification-slot.component.d.ts +0 -0
  204. /package/platform-management/lib/{entities/app-term → features/app-terms}/pages/index.d.ts +0 -0
  205. /package/platform-management/lib/{entities/app-term → features/app-terms}/workflows/index.d.ts +0 -0
  206. /package/platform-management/lib/{entities/app-term → features/app-terms}/workflows/notify-new-term.workflow.d.ts +0 -0
  207. /package/platform-management/lib/{entities → features}/app-version/components/index.d.ts +0 -0
  208. /package/platform-management/lib/{entities → features}/app-version/components/slots/app-version-slot.component.d.ts +0 -0
  209. /package/platform-management/lib/{entities → features}/app-version/workflows/change-log.workflow.d.ts +0 -0
  210. /package/platform-management/lib/{entities → features}/app-version/workflows/index.d.ts +0 -0
  211. /package/platform-management/lib/{entities → features}/app-version/workflows/show-release-notes.workflow.d.ts +0 -0
  212. /package/platform-management/lib/{common → features/common}/common.module.d.ts +0 -0
  213. /package/platform-management/lib/{common → features/common}/entity.provider.d.ts +0 -0
  214. /package/platform-management/lib/{common → features/common}/regional/data-source.provider.d.ts +0 -0
  215. /package/platform-management/lib/{common → features/common}/regional/index.d.ts +0 -0
  216. /package/platform-management/lib/{common → features/common}/regional/language-slot/language-slot.component.d.ts +0 -0
  217. /package/platform-management/lib/{common → features/common}/regional/regional-store.service.d.ts +0 -0
  218. /package/platform-management/lib/{entities → features}/promotion/components/index.d.ts +0 -0
@@ -1,21 +1,21 @@
1
1
  import { AXPSessionService, AXPAuthGuard, AXP_PERMISSION_PROVIDER } from '@acorex/platform/auth';
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';
2
+ import { AXPSearchCommandProvider, createAllQueryView, AXPEntityCommandScope, AXPEntityQueryType, AXPFileTypeProviderService, AXP_FILE_TYPE_INFO_PROVIDER, AXPFileStorageService, AXPSettingService, AXP_MENU_PROVIDER, AXP_SETTING_DEFINITION_PROVIDER, AXP_SEARCH_PROVIDER, AXP_TASK_BADGE_PROVIDERS } 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, input, effect, ViewEncapsulation } from '@angular/core';
5
+ import { inject, Injector, Injectable, NgModule, ChangeDetectionStrategy, Component, signal, computed, viewChild, input, effect, ViewEncapsulation, afterNextRender, untracked, HostListener } from '@angular/core';
6
6
  import { firstValueFrom } from 'rxjs';
7
7
  import * as i6 from '@acorex/platform/layout/builder';
8
- import { AXPWidgetsCatalog, AXPWidgetComponent, AXPLayoutBuilderModule, AXP_WIDGETS_ADVANCE_GROUP, AXP_WIDGETS_EDITOR_GROUP } from '@acorex/platform/layout/builder';
9
- import { RouterModule, ROUTES } from '@angular/router';
8
+ import { AXPWidgetsCatalog, AXPWidgetComponent, AXPLayoutBuilderModule, AXP_WIDGETS_ADVANCE_CATEGORY, AXPPageStatus, AXP_WIDGETS_EDITOR_CATEGORY } from '@acorex/platform/layout/builder';
9
+ import { RouterModule, Router, ActivatedRoute, ROUTES } from '@angular/router';
10
10
  import { AXDataSource } from '@acorex/components/common';
11
11
  import { AXMMetaDataDefinitionService } from '@acorex/modules/platform-management';
12
12
  import * as i1$1 from '@angular/common';
13
13
  import { CommonModule } from '@angular/common';
14
- import * as i7$1 from '@acorex/components/collapse';
14
+ import * as i7 from '@acorex/components/collapse';
15
15
  import { AXCollapseModule } from '@acorex/components/collapse';
16
- import * as i3 from '@acorex/components/decorators';
16
+ import * as i2$1 from '@acorex/components/decorators';
17
17
  import { AXDecoratorModule } from '@acorex/components/decorators';
18
- import * as i7 from '@acorex/components/form';
18
+ import * as i3 from '@acorex/components/form';
19
19
  import { AXFormModule } from '@acorex/components/form';
20
20
  import * as i4 from '@acorex/components/label';
21
21
  import { AXLabelModule } from '@acorex/components/label';
@@ -27,28 +27,35 @@ 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
29
  import * as i3$2 from '@acorex/components/media-viewer';
30
- import { AXMediaViewerModule } from '@acorex/components/media-viewer';
30
+ import { AXMediaViewerContainerComponent, AXMediaViewerModule } from '@acorex/components/media-viewer';
31
31
  import * as i3$4 from '@acorex/platform/workflow';
32
32
  import { AXPWorkflowService, AXPWorkflowAction, AXPWorkflowModule } from '@acorex/platform/workflow';
33
- import * as i2$1 from '@acorex/components/button';
33
+ import * as i2$3 from '@acorex/components/button';
34
34
  import { AXButtonModule, AXButtonComponent } from '@acorex/components/button';
35
35
  import { AXButtonGroupModule } from '@acorex/components/button-group';
36
- import * as i2$2 from '@acorex/components/dropdown';
36
+ import * as i3$3 from '@acorex/components/dropdown';
37
37
  import { AXDropdownModule } from '@acorex/components/dropdown';
38
38
  import { AXDropdownButtonModule } from '@acorex/components/dropdown-button';
39
- import * as i3$3 from '@acorex/core/translation';
39
+ import { AXFileService, AXFileModule } from '@acorex/core/file';
40
+ import * as i4$1 from '@acorex/core/translation';
40
41
  import { AXTranslationService, AXTranslationModule } from '@acorex/core/translation';
42
+ import { AXPPlatformScope, resolvePlatformScopeKey, resolvePlatformScopeName, AXPDataGenerator } from '@acorex/platform/core';
41
43
  import { AXLoadingModule } from '@acorex/components/loading';
42
44
  import * as i3$1 from '@acorex/components/menu';
43
45
  import { AXMenuModule } from '@acorex/components/menu';
44
46
  import { AXDateTimeModule } from '@acorex/core/date-time';
47
+ import * as i2$2 from '@acorex/core/format';
45
48
  import { AXFormatModule } from '@acorex/core/format';
46
- import { AXPLayoutThemeService } from '@acorex/platform/themes/shared';
47
- import { get as get$1, set as set$1 } from 'lodash-es';
49
+ import { AXPLayoutThemeService, AXPThemeLayoutBlockComponent } from '@acorex/platform/themes/shared';
50
+ import { castArray, get as get$1, set as set$1 } from 'lodash-es';
48
51
  import { AXDialogService } from '@acorex/components/dialog';
49
52
  import { AXPopupService } from '@acorex/components/popup';
50
- import { AXFileService } from '@acorex/core/file';
51
53
  import { signalStore, withState, withComputed, withMethods, patchState } from '@ngrx/signals';
54
+ import { AXBadgeModule } from '@acorex/components/badge';
55
+ import { AXBreadcrumbsModule } from '@acorex/components/breadcrumbs';
56
+ import * as i6$1 from '@acorex/components/search-box';
57
+ import { AXSearchBoxModule } from '@acorex/components/search-box';
58
+ import { AXPBasePageComponent, AXPPageLayoutComponent, AXPBasePage } from '@acorex/platform/themes/default';
52
59
  import { AXBasePageComponent } from '@acorex/components/page';
53
60
  import { AXUploaderService } from '@acorex/components/uploader';
54
61
 
@@ -155,12 +162,14 @@ class AXMMenuProvider {
155
162
  text: RootConfig.entities.documentType.title,
156
163
  path: this.entityService.createPath(RootConfig.module.name, RootConfig.entities.documentType.name),
157
164
  icon: RootConfig.entities.documentType.icon,
165
+ badgeKey: 'badge-1',
158
166
  priority: 2
159
167
  },
160
168
  {
161
- text: RootConfig.entities.document.titlePlural,
162
- path: `${this.sessionService.application?.name}/drive/company`,
169
+ text: `t('scope.tenant.title', {scope: "${RootConfig.config.i18n}"})`,
170
+ path: `${this.sessionService.application?.name}/drive/tenant`,
163
171
  icon: RootConfig.entities.document.icon,
172
+ badgeKey: 'badge-2',
164
173
  priority: 1
165
174
  }
166
175
  ]
@@ -170,9 +179,9 @@ class AXMMenuProvider {
170
179
  context.find('edit-profile').insert([
171
180
  {
172
181
  name: 'my-notifications',
173
- text: `t('my-drive.title', {scope: "${RootConfig.config.i18n}"})`,
182
+ text: `t('scope.user.title', {scope: "${RootConfig.config.i18n}"})`,
174
183
  icon: 'fa-light fa-folder-open',
175
- path: `${this.sessionService.application?.name}/drive/my`,
184
+ path: `${this.sessionService.application?.name}/drive/user`,
176
185
  data: {
177
186
  scope: 'user'
178
187
  },
@@ -296,6 +305,9 @@ async function documentFactory(injector) {
296
305
  dataType: 'string',
297
306
  interface: {
298
307
  type: AXPWidgetsCatalog.text,
308
+ options: {
309
+ placeholder: 't("name", { scope: "common" })',
310
+ },
299
311
  },
300
312
  },
301
313
  validations: [
@@ -674,14 +686,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImpor
674
686
 
675
687
  class AXMDocumentTypeService extends AXMEntityCrudServiceImpl {
676
688
  }
677
- class AXMDocumentManagementDocumentTypeEntityServiceImpl extends AXMDocumentTypeService {
689
+ class AXMDocumentTypeServiceImpl extends AXMDocumentTypeService {
678
690
  constructor() {
679
691
  super(`${RootConfig.module.name}.${RootConfig.entities.documentType.name}`);
680
692
  }
681
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXMDocumentManagementDocumentTypeEntityServiceImpl, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
682
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXMDocumentManagementDocumentTypeEntityServiceImpl }); }
693
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXMDocumentTypeServiceImpl, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
694
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXMDocumentTypeServiceImpl }); }
683
695
  }
684
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXMDocumentManagementDocumentTypeEntityServiceImpl, decorators: [{
696
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXMDocumentTypeServiceImpl, decorators: [{
685
697
  type: Injectable
686
698
  }], ctorParameters: () => [] });
687
699
 
@@ -1129,7 +1141,7 @@ class AXMDocumentManagementDocumentTypeEntityModule {
1129
1141
  static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXMDocumentManagementDocumentTypeEntityModule, providers: [
1130
1142
  {
1131
1143
  provide: AXMDocumentTypeService,
1132
- useClass: AXMDocumentManagementDocumentTypeEntityServiceImpl,
1144
+ useClass: AXMDocumentTypeServiceImpl,
1133
1145
  },
1134
1146
  ] }); }
1135
1147
  }
@@ -1142,7 +1154,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImpor
1142
1154
  providers: [
1143
1155
  {
1144
1156
  provide: AXMDocumentTypeService,
1145
- useClass: AXMDocumentManagementDocumentTypeEntityServiceImpl,
1157
+ useClass: AXMDocumentTypeServiceImpl,
1146
1158
  },
1147
1159
  ],
1148
1160
  }]
@@ -2209,7 +2221,6 @@ var index$1 = /*#__PURE__*/Object.freeze({
2209
2221
  __proto__: null,
2210
2222
  AXMDocumentManagementDocumentEntityModule: AXMDocumentManagementDocumentEntityModule,
2211
2223
  AXMDocumentManagementDocumentTypeEntityModule: AXMDocumentManagementDocumentTypeEntityModule,
2212
- AXMDocumentManagementDocumentTypeEntityServiceImpl: AXMDocumentManagementDocumentTypeEntityServiceImpl,
2213
2224
  AXMDocumentManagementDocumentTypeMetaDefinitionEntityModule: AXMDocumentManagementDocumentTypeMetaDefinitionEntityModule,
2214
2225
  AXMDocumentManagementDocumentTypeMetaDefinitionEntityService: AXMDocumentManagementDocumentTypeMetaDefinitionEntityService,
2215
2226
  AXMDocumentManagementDocumentTypeMetaDefinitionEntityServiceImpl: AXMDocumentManagementDocumentTypeMetaDefinitionEntityServiceImpl,
@@ -2222,6 +2233,7 @@ var index$1 = /*#__PURE__*/Object.freeze({
2222
2233
  AXMDocumentService: AXMDocumentService,
2223
2234
  AXMDocumentServiceImpl: AXMDocumentServiceImpl,
2224
2235
  AXMDocumentTypeService: AXMDocumentTypeService,
2236
+ AXMDocumentTypeServiceImpl: AXMDocumentTypeServiceImpl,
2225
2237
  AXMFolderService: AXMFolderService,
2226
2238
  AXMFolderServiceImpl: AXMFolderServiceImpl,
2227
2239
  documentFactory: documentFactory,
@@ -2651,7 +2663,6 @@ class AXMFileTypeExtensionWidgetEditComponent extends AXPWidgetComponent {
2651
2663
  super.ngOnInit();
2652
2664
  this.selectedItems.set(this.getValue()?.selectedItems ?? []);
2653
2665
  this.context.set(this.getValue()?.context ?? {});
2654
- console.log(this.selectedItems());
2655
2666
  }
2656
2667
  outputs() {
2657
2668
  return ['selectedItems', 'context'];
@@ -2772,7 +2783,7 @@ class AXMFileTypeExtensionWidgetEditComponent extends AXPWidgetComponent {
2772
2783
  </ax-collapse-group>
2773
2784
  }
2774
2785
  </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 }); }
2786
+ </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: i3.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: i2$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.AXCollapseComponent, selector: "ax-collapse", inputs: ["disabled", "look", "isCollapsed", "showHeader", "caption", "icon", "isLoading", "headerTemplate"], outputs: ["onClick", "isCollapsedChange"] }, { kind: "component", type: i7.AXCollapseGroupComponent, selector: "ax-collapse-group", inputs: ["look", "accordion", "activeIndex"], outputs: ["accordionChange", "activeIndexChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2776
2787
  }
2777
2788
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXMFileTypeExtensionWidgetEditComponent, decorators: [{
2778
2789
  type: Component,
@@ -2879,8 +2890,8 @@ const AXmFileTypeExtensionWidget = {
2879
2890
  name: 'file-type-extension',
2880
2891
  title: 'File Type Extension',
2881
2892
  description: 'Uploads and manages files',
2882
- icon: 'fa-solid fa-files',
2883
- group: AXP_WIDGETS_ADVANCE_GROUP,
2893
+ icon: 'fa-light fa-files',
2894
+ categories: AXP_WIDGETS_ADVANCE_CATEGORY,
2884
2895
  type: 'editor',
2885
2896
  properties: [AXP_NAME_PROPERTY, AXP_DATA_PATH_PROPERTY],
2886
2897
  components: {
@@ -2998,13 +3009,6 @@ var documentAttachmentWidgetColumn_component = /*#__PURE__*/Object.freeze({
2998
3009
  AXMDocumentAttachmentWidgetColumnComponent: AXMDocumentAttachmentWidgetColumnComponent
2999
3010
  });
3000
3011
 
3001
- var AXMDriveScope;
3002
- (function (AXMDriveScope) {
3003
- AXMDriveScope["Platform"] = "P";
3004
- AXMDriveScope["Tenant"] = "T";
3005
- AXMDriveScope["User"] = "U";
3006
- })(AXMDriveScope || (AXMDriveScope = {}));
3007
-
3008
3012
  /**
3009
3013
  * Service for handling document drive operations
3010
3014
  */
@@ -3016,9 +3020,28 @@ class AXMDocumentManagerService {
3016
3020
  this.popupService = inject(AXPopupService);
3017
3021
  this.dialogService = inject(AXDialogService);
3018
3022
  this.fileService = inject(AXPFileStorageService);
3019
- this.fileMangerService = inject(AXFileService);
3023
+ this.fileManagerService = inject(AXFileService);
3020
3024
  this.workflow = inject(AXPWorkflowService);
3021
3025
  this.scopedDriveCache = new Map();
3026
+ this.mapFolderDtoToFolderNode = (folder) => {
3027
+ return {
3028
+ id: folder.id,
3029
+ name: folder.name,
3030
+ type: 'folder',
3031
+ parentId: folder.parentId || null,
3032
+ modifiedAt: folder.updatedAt,
3033
+ createdAt: folder.createdAt,
3034
+ description: folder.description,
3035
+ childrenCount: folder.nodeCount,
3036
+ size: folder.size,
3037
+ documentTypes: folder.documentTypes,
3038
+ storageType: 'physical',
3039
+ children: [
3040
+ ...(folder.folders?.map(this.mapFolderDtoToFolderNode) || []),
3041
+ ...(folder.documents?.map(this.mapFileToNode) || []),
3042
+ ],
3043
+ };
3044
+ };
3022
3045
  }
3023
3046
  scope(scope, options) {
3024
3047
  const cacheKey = this.getScopeCacheKey(scope, options);
@@ -3059,7 +3082,7 @@ class AXMDocumentManagerService {
3059
3082
  * @param tenantId The tenant ID
3060
3083
  * @returns Tenant root folder
3061
3084
  */
3062
- async getTenantRootFolder(rootFolderId, tenantId) {
3085
+ async getTenantRootFolder(rootFolder, tenantId) {
3063
3086
  if (!tenantId) {
3064
3087
  throw new Error('Tenant ID is required');
3065
3088
  }
@@ -3070,7 +3093,11 @@ class AXMDocumentManagerService {
3070
3093
  operator: null,
3071
3094
  logic: 'and',
3072
3095
  filters: [
3073
- { field: 'parentId', operator: { type: 'equal' }, value: rootFolderId },
3096
+ {
3097
+ field: 'parentId',
3098
+ operator: { type: 'equal' },
3099
+ value: rootFolder.folders?.find((f) => f.name === 'Tenants')?.id,
3100
+ },
3074
3101
  { field: 'tenantId', operator: { type: 'equal' }, value: tenantId },
3075
3102
  { field: 'userId', operator: { type: 'isNull' } },
3076
3103
  ],
@@ -3110,63 +3137,94 @@ class AXMDocumentManagerService {
3110
3137
  }
3111
3138
  return result.items[0];
3112
3139
  }
3113
- mapFolderDtoToFolderNode(folder) {
3114
- return {
3115
- id: folder.id,
3116
- name: folder.name,
3117
- type: 'folder',
3118
- parentId: folder.parentId || null,
3119
- modifiedAt: folder.updatedAt,
3120
- createdAt: folder.createdAt,
3121
- description: folder.description,
3122
- childrenCount: folder.nodeCount,
3123
- size: folder.size,
3124
- children: [
3125
- ...(folder.folders?.map((child) => ({
3126
- id: child.id,
3127
- name: child.name,
3128
- type: 'folder',
3129
- parentId: child.parentId || null,
3130
- modifiedAt: child.updatedAt,
3131
- createdAt: child.createdAt,
3132
- childrenCount: child.nodeCount,
3133
- description: child.description,
3134
- size: child.size,
3135
- })) || []),
3136
- ...(folder.documents?.map((doc) => ({
3137
- id: doc.id,
3138
- name: doc.name,
3139
- type: 'file',
3140
- parentId: doc.parentId,
3141
- modifiedAt: doc.updatedAt,
3142
- createdAt: doc.createdAt,
3143
- size: doc.size,
3144
- description: doc.description,
3145
- })) || []),
3146
- ],
3147
- };
3148
- }
3149
- async buildPath(node) {
3140
+ async buildPath(node, stopFolderId) {
3150
3141
  if (node.type === 'file') {
3151
- return (await this.documentService.getPath(node.id)).map(this.mapFolderDtoToFolderNode);
3142
+ return (await this.documentService.getPath(node.id, stopFolderId)).map(this.mapFolderDtoToFolderNode);
3143
+ }
3144
+ else {
3145
+ return (await this.folderService.getPath(node.id, stopFolderId)).map(this.mapFolderDtoToFolderNode);
3152
3146
  }
3153
- return (await this.folderService.getPath(node.id)).map(this.mapFolderDtoToFolderNode);
3154
3147
  }
3155
- async findNodeById(id) {
3156
- const findNode = (nodes) => {
3157
- for (const node of nodes) {
3158
- if (node.id === id) {
3159
- return node;
3160
- }
3161
- if (node.children) {
3162
- const found = findNode(node.children);
3163
- if (found)
3164
- return found;
3165
- }
3166
- }
3167
- return null;
3168
- };
3169
- return findNode([(await this.getRoot(AXMDriveScope.Platform)).result]);
3148
+ async showShareDialog(node) {
3149
+ const comp = (await import('./acorex-modules-document-management-share-dialog.component-BiNdRpqs.mjs')).AXMShareDialogComponent;
3150
+ const popup = await this.popupService.open(comp, {
3151
+ title: 'Share',
3152
+ data: {
3153
+ node,
3154
+ },
3155
+ });
3156
+ if (popup.data?.result) {
3157
+ // Handle the share action with popup.data.data
3158
+ }
3159
+ }
3160
+ async showShareWithEmailDialog(node) {
3161
+ const comp = (await import('./acorex-modules-document-management-share-email-dialog.component-BvR5OuCV.mjs'))
3162
+ .AXMShareEmailDialogComponent;
3163
+ const popup = await this.popupService.open(comp, {
3164
+ title: 'Share via Email',
3165
+ data: {
3166
+ node,
3167
+ },
3168
+ });
3169
+ if (popup.data?.result) {
3170
+ // Handle the share via email action with popup.data.data
3171
+ }
3172
+ }
3173
+ async showLinkDialog(node) {
3174
+ const comp = (await import('./acorex-modules-document-management-link-dialog.component-1iPUnhr1.mjs')).AXMLinkDialogComponent;
3175
+ const popup = await this.popupService.open(comp, {
3176
+ title: 'Share Link',
3177
+ data: {
3178
+ node,
3179
+ },
3180
+ });
3181
+ if (popup.data?.result) {
3182
+ // Handle the link generation with popup.data.data
3183
+ }
3184
+ }
3185
+ async showLockDialog(node) {
3186
+ const comp = (await import('./acorex-modules-document-management-lock-dialog.component-BwKdUUcf.mjs')).AXMLockDialogComponent;
3187
+ const popup = await this.popupService.open(comp, {
3188
+ title: 'Lock Document',
3189
+ data: {
3190
+ node,
3191
+ },
3192
+ });
3193
+ if (popup.data?.result) {
3194
+ // Handle the lock action with popup.data.data
3195
+ }
3196
+ }
3197
+ async showUnlockDialog(node) {
3198
+ const comp = (await import('./acorex-modules-document-management-unlock-dialog.component-DkZQ84kg.mjs')).AXMUnlockDialogComponent;
3199
+ const popup = await this.popupService.open(comp, {
3200
+ title: 'Unlock Document',
3201
+ data: {
3202
+ node,
3203
+ },
3204
+ });
3205
+ if (popup.data?.result) {
3206
+ // Handle the unlock action with popup.data.data
3207
+ }
3208
+ }
3209
+ async showFolderEditDialog(node) {
3210
+ const comp = (await import('./acorex-modules-document-management-create-folder-dialog.component-C9YP1aFi.mjs'))
3211
+ .AXMCreateFolderDialog;
3212
+ const popup = await this.popupService.open(comp, {
3213
+ title: 't("actions.update-folder")',
3214
+ data: {
3215
+ defaultValue: node,
3216
+ },
3217
+ });
3218
+ return popup.data?.result;
3219
+ }
3220
+ async updateFileName(node, name) {
3221
+ if (node.storageType == 'physical') {
3222
+ return this.mapFileToNode(await this.documentService.updateOne(node.id, { name }));
3223
+ }
3224
+ else {
3225
+ node.name = name;
3226
+ return node;
3227
+ }
3170
3228
  }
3171
3229
  /**
3172
3230
  * Gets the root folder based on the specified scope
@@ -3177,31 +3235,34 @@ class AXMDocumentManagerService {
3177
3235
  async getRoot(scope, options) {
3178
3236
  const rootFolder = await this.getPlatformRootFolder();
3179
3237
  let result;
3238
+ let path = [];
3180
3239
  switch (scope) {
3181
- case AXMDriveScope.Platform:
3240
+ case AXPPlatformScope.Platform:
3182
3241
  result = this.mapFolderDtoToFolderNode(rootFolder);
3242
+ path = await this.buildPath(result);
3183
3243
  break;
3184
- case AXMDriveScope.Tenant: {
3244
+ case AXPPlatformScope.Tenant: {
3185
3245
  if (!options?.tenantId) {
3186
3246
  throw new Error('Tenant ID is required for tenant scope');
3187
3247
  }
3188
- const tenantRoot = await this.getTenantRootFolder(rootFolder.id, options.tenantId);
3248
+ const tenantRoot = await this.getTenantRootFolder(rootFolder, options.tenantId);
3189
3249
  result = this.mapFolderDtoToFolderNode(tenantRoot);
3250
+ path = await this.buildPath(result, tenantRoot.id);
3190
3251
  break;
3191
3252
  }
3192
- case AXMDriveScope.User: {
3253
+ case AXPPlatformScope.User: {
3193
3254
  if (!options?.tenantId || !options?.userId) {
3194
3255
  throw new Error('Both Tenant ID and User ID are required for user scope');
3195
3256
  }
3196
- const tenantFolder = await this.getTenantRootFolder(rootFolder.id, options.tenantId);
3197
- const userRoot = await this.getUserRootFolder(tenantFolder.id, options.tenantId, options.userId);
3257
+ const tenantFolder = await this.getTenantRootFolder(rootFolder, options.tenantId);
3258
+ const userRoot = await this.getUserRootFolder(tenantFolder.folders?.find((f) => f.name === 'Users')?.id, options.tenantId, options.userId);
3198
3259
  result = this.mapFolderDtoToFolderNode(userRoot);
3260
+ path = await this.buildPath(result, userRoot.id);
3199
3261
  break;
3200
3262
  }
3201
3263
  default:
3202
3264
  throw new Error(`Invalid scope: ${scope}`);
3203
3265
  }
3204
- const path = await this.buildPath(result);
3205
3266
  return { path, result };
3206
3267
  }
3207
3268
  /**
@@ -3209,7 +3270,7 @@ class AXMDocumentManagerService {
3209
3270
  * @param folderId The folder ID to retrieve
3210
3271
  * @returns The requested folder
3211
3272
  */
3212
- async getFolder(folderId) {
3273
+ async getFolder(scope, folderId, options) {
3213
3274
  if (!folderId) {
3214
3275
  throw new Error('Folder ID is required');
3215
3276
  }
@@ -3218,7 +3279,7 @@ class AXMDocumentManagerService {
3218
3279
  throw new Error('Folder not found');
3219
3280
  }
3220
3281
  const result = this.mapFolderDtoToFolderNode(folder);
3221
- const path = await this.buildPath(result);
3282
+ const path = await this.buildPath(result, (await this.getRoot(scope, options)).result.id);
3222
3283
  return { path, result };
3223
3284
  }
3224
3285
  async createFolder(data) {
@@ -3268,6 +3329,7 @@ class AXMDocumentManagerService {
3268
3329
  createdAt: file.createdAt,
3269
3330
  size: file.size,
3270
3331
  fileId: file.fileId,
3332
+ storageType: 'physical',
3271
3333
  };
3272
3334
  }
3273
3335
  async createFile(data) {
@@ -3276,9 +3338,6 @@ class AXMDocumentManagerService {
3276
3338
  return this.mapFileToNode(file);
3277
3339
  }
3278
3340
  async updateFile(fileId, data) {
3279
- const y = await this.documentService.getOne(fileId);
3280
- console.log(y);
3281
- debugger;
3282
3341
  const updatedFile = await this.documentService.updateOne(fileId, data);
3283
3342
  return this.mapFileToNode(updatedFile);
3284
3343
  }
@@ -3296,7 +3355,7 @@ class AXMDocumentManagerService {
3296
3355
  }
3297
3356
  }
3298
3357
  async showCreateFolderDialog(parentId) {
3299
- const comp = (await import('./acorex-modules-document-management-create-folder-dialog.component-D66KoQNb.mjs'))
3358
+ const comp = (await import('./acorex-modules-document-management-create-folder-dialog.component-C9YP1aFi.mjs'))
3300
3359
  .AXMCreateFolderDialog;
3301
3360
  const popup = await this.popupService.open(comp, {
3302
3361
  title: 't("actions.create-folder")',
@@ -3307,7 +3366,7 @@ class AXMDocumentManagerService {
3307
3366
  return popup.data?.folder;
3308
3367
  }
3309
3368
  async moveTo(options) {
3310
- const comp = (await import('./acorex-modules-document-management-drive-choose.component-WoZfDyLK.mjs')).AXMDocumentDriveChooseComponent;
3369
+ const comp = (await import('./acorex-modules-document-management-drive-choose.component-Bo-I7TN5.mjs')).AXMDocumentDriveChooseComponent;
3311
3370
  //
3312
3371
  const popup = await this.popupService.open(comp, {
3313
3372
  title: `Choose ${options.browseMode == 'file' ? 'File' : 'Folder'}`,
@@ -3338,7 +3397,7 @@ class AXMDocumentManagerService {
3338
3397
  }
3339
3398
  }
3340
3399
  async copyTo(options) {
3341
- const comp = (await import('./acorex-modules-document-management-drive-choose.component-WoZfDyLK.mjs')).AXMDocumentDriveChooseComponent;
3400
+ const comp = (await import('./acorex-modules-document-management-drive-choose.component-Bo-I7TN5.mjs')).AXMDocumentDriveChooseComponent;
3342
3401
  //
3343
3402
  const popup = await this.popupService.open(comp, {
3344
3403
  title: `Choose ${options.browseMode == 'file' ? 'File' : 'Folder'}`,
@@ -3380,36 +3439,58 @@ class AXMDocumentManagerService {
3380
3439
  return false;
3381
3440
  }
3382
3441
  }
3383
- async showFileViewerPopup(node) {
3384
- const parentFolder = await this.folderService.getOne(node.parentId);
3385
- const parentFolderName = parentFolder.name;
3386
- const nodes = await Promise.all(parentFolder.documents?.map(async (doc) => {
3442
+ async mapDocumentToMediaViewerData(doc) {
3443
+ if (!doc.fileId?.startsWith('http')) {
3444
+ const fileInfo = await this.fileService.getInfo(doc.fileId);
3387
3445
  return {
3388
- id: doc.id || '',
3446
+ id: doc.id ?? '',
3389
3447
  name: doc.name,
3390
- type: doc.meta?.['type'],
3391
- url: doc.fileId,
3448
+ type: doc.name.endsWith('.pdf') ? 'pdf' : 'image',
3449
+ url: fileInfo.url ?? '',
3392
3450
  size: doc.size.toString(),
3393
- thumbnail: doc.fileId,
3451
+ thumbnail: fileInfo.url ?? '',
3394
3452
  };
3395
- }) || []);
3396
- console.log(nodes);
3453
+ }
3454
+ return {
3455
+ id: doc.id ?? '',
3456
+ name: doc.name,
3457
+ type: doc.meta?.['type'] ?? 'image',
3458
+ url: doc.fileId ?? '',
3459
+ size: doc.size.toString(),
3460
+ thumbnail: doc.fileId ?? '',
3461
+ };
3462
+ }
3463
+ async showFileViewerPopup(node, options) {
3464
+ const isVirtualFolder = node.parentId === 'virtual';
3465
+ const parentFolderName = isVirtualFolder ? 'Virtual' : (await this.folderService.getOne(node.parentId)).name;
3466
+ const documents = isVirtualFolder
3467
+ ? options?.folderVituralfiles ?? []
3468
+ : (await this.folderService.getOne(node.parentId)).documents ?? [];
3469
+ const nodes = await Promise.all(documents
3470
+ .filter((item) => {
3471
+ if (!item.name)
3472
+ return false;
3473
+ const ext = item.name.split('.').pop()?.toLowerCase();
3474
+ return ext && ['jpg', 'jpeg', 'png', 'gif', 'bmp', 'webp', 'pdf'].includes(ext);
3475
+ })
3476
+ .map((doc) => this.mapDocumentToMediaViewerData(doc)));
3397
3477
  const comp = (await Promise.resolve().then(function () { return fileViewerPopup_component; }))
3398
3478
  .AXMFileViewerPopupComponent;
3399
3479
  await this.popupService.open(comp, {
3400
3480
  title: `t("gallery" , ${RootConfig.module.name})` + ' - ' + parentFolderName,
3401
3481
  data: {
3402
3482
  nodes,
3483
+ index: isVirtualFolder
3484
+ ? options?.folderVituralfiles?.findIndex((f) => f.id === node.id) ?? 0
3485
+ : options?.index ?? 0,
3403
3486
  },
3404
3487
  });
3405
3488
  }
3406
3489
  async openFile(node) {
3407
- console.log(node);
3408
3490
  const file = await this.documentService.getOne(node.id);
3409
- console.log(file);
3410
3491
  }
3411
- async rename(node) {
3412
- const comp = (await import('./acorex-modules-document-management-rename-node-dialog.component-Dae6RWb8.mjs'))
3492
+ async showRenamePopup(node) {
3493
+ const comp = (await import('./acorex-modules-document-management-rename-node-dialog.component-DEhPxW3b.mjs'))
3413
3494
  .AXMRenameNodeDialog;
3414
3495
  const popup = await this.popupService.open(comp, {
3415
3496
  title: 't("actions.rename")',
@@ -3449,24 +3530,42 @@ class AXMDocumentManagerService {
3449
3530
  //TODO filter by scope
3450
3531
  return (await this.folderService.query()).items.map(this.mapFolderDtoToFolderNode);
3451
3532
  }
3452
- async getAllFiles() {
3533
+ async getAllFiles(request) {
3453
3534
  //TODO filter by scope
3454
- return (await this.documentService.query()).items.map(this.mapFileToNode);
3535
+ return (await this.documentService.query(request)).items.map(this.mapFileToNode);
3455
3536
  }
3456
3537
  async getAllNodes() {
3457
3538
  return [...(await this.getAllFolders()), ...(await this.getAllFiles())];
3458
3539
  }
3459
- async showChooseFileDialog() {
3460
- const comp = (await import('./acorex-modules-document-management-drive-choose.component-WoZfDyLK.mjs')).AXMDocumentDriveChooseComponent;
3461
- await this.popupService.open(comp);
3540
+ async showChooseFileDialog(scope) {
3541
+ const comp = (await import('./acorex-modules-document-management-drive-choose.component-Bo-I7TN5.mjs')).AXMDocumentDriveChooseComponent;
3542
+ const result = await this.popupService.open(comp, {
3543
+ title: `t("actions.choose-from-drive" , scope: {"${RootConfig.config.i18n}"})`,
3544
+ data: {
3545
+ scope: scope,
3546
+ },
3547
+ });
3548
+ if (result.data?.result) {
3549
+ return castArray(result.data.items);
3550
+ }
3551
+ return [];
3462
3552
  }
3463
3553
  async downloadFile(node) {
3464
- const file = await this.documentService.getOne(node.id);
3465
- if (file && file.fileId) {
3466
- const fileInfo = await this.fileService.getInfo(file.fileId);
3554
+ // const file = await this.documentService.getOne(node.id);
3555
+ if (node.fileId) {
3556
+ if (node.fileId.startsWith('http')) {
3557
+ const link = document.createElement('a');
3558
+ link.href = node.fileId;
3559
+ link.download = node.name;
3560
+ document.body.appendChild(link);
3561
+ link.click();
3562
+ document.body.removeChild(link);
3563
+ return;
3564
+ }
3565
+ const fileInfo = await this.fileService.getInfo(node.fileId);
3467
3566
  const link = document.createElement('a');
3468
3567
  link.href = fileInfo.url ?? '';
3469
- link.download = file.name; // Set the desired file name
3568
+ link.download = node.name; // Set the desired file name
3470
3569
  document.body.appendChild(link);
3471
3570
  link.click();
3472
3571
  document.body.removeChild(link);
@@ -3540,13 +3639,13 @@ class AXMDocumentManagerService {
3540
3639
  }
3541
3640
  async uploadFile(folderId) {
3542
3641
  const folder = await this.folderService.getOne(folderId);
3543
- var docTypes = folder.documentType;
3642
+ var docTypes = folder.documentTypes;
3544
3643
  if (folder && docTypes == null) {
3545
3644
  const comp = (await Promise.resolve().then(function () { return index; })).AXMChooseDocumentTypeComponent;
3546
3645
  const result = await this.popupService.open(comp);
3547
3646
  if (result.data != null && result.data.documentType != null) {
3548
3647
  const { upload, ...metaContext } = result.data.context;
3549
- //Todo
3648
+ //Todo
3550
3649
  const fileInfo = await this.fileService.getInfo(upload[0]);
3551
3650
  const file = await this.documentService.insertOne({
3552
3651
  fileId: upload[0],
@@ -3564,6 +3663,39 @@ class AXMDocumentManagerService {
3564
3663
  }
3565
3664
  return false;
3566
3665
  }
3666
+ async uploadFileByType(folderId, docTypeId) {
3667
+ const folder = await this.folderService.getOne(folderId);
3668
+ var docType = folder.documentTypes?.find((dt) => dt.id === docTypeId);
3669
+ if (folder && docType != null) {
3670
+ const comp = (await Promise.resolve().then(function () { return index; })).AXMDocumentTypeChooseFileComponent;
3671
+ const result = await this.popupService.open(comp, {
3672
+ title: `Select ${docType.title}`,
3673
+ data: {
3674
+ documentType: docType,
3675
+ },
3676
+ });
3677
+ if (result.data != null) {
3678
+ const { uploads, ...metaContext } = result.data.context;
3679
+ for (const u of uploads) {
3680
+ const fileInfo = u;
3681
+ await this.fileService.commit(u.fileId);
3682
+ const file = await this.documentService.insertOne({
3683
+ fileId: fileInfo.fileId,
3684
+ meta: metaContext,
3685
+ parentId: folderId,
3686
+ size: fileInfo.size,
3687
+ name: fileInfo.name ?? '',
3688
+ title: fileInfo.name ?? '',
3689
+ });
3690
+ }
3691
+ return true;
3692
+ }
3693
+ else {
3694
+ return false;
3695
+ }
3696
+ }
3697
+ return false;
3698
+ }
3567
3699
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXMDocumentManagerService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
3568
3700
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXMDocumentManagerService, providedIn: 'root' }); }
3569
3701
  }
@@ -3582,12 +3714,12 @@ class ScopedDriveService {
3582
3714
  }
3583
3715
  validateScopeOptions() {
3584
3716
  switch (this.scope) {
3585
- case AXMDriveScope.Tenant:
3717
+ case AXPPlatformScope.Tenant:
3586
3718
  if (!this.options?.tenantId) {
3587
3719
  throw new Error('Tenant ID is required for tenant scope');
3588
3720
  }
3589
3721
  break;
3590
- case AXMDriveScope.User:
3722
+ case AXPPlatformScope.User:
3591
3723
  if (!this.options?.tenantId || !this.options?.userId) {
3592
3724
  throw new Error('Both Tenant ID and User ID are required for user scope');
3593
3725
  }
@@ -3598,7 +3730,7 @@ class ScopedDriveService {
3598
3730
  return this.parent.getRoot(this.scope, this.options);
3599
3731
  }
3600
3732
  async getFolder(folderId) {
3601
- return this.parent.getFolder(folderId);
3733
+ return this.parent.getFolder(this.scope, folderId, this.options);
3602
3734
  }
3603
3735
  async createFolder(data) {
3604
3736
  const folderData = {
@@ -3651,6 +3783,7 @@ const AXPDocumentExplorerViewModel = signalStore({ providedIn: 'root' }, withSta
3651
3783
  // View State
3652
3784
  viewMode: 'large-tiles',
3653
3785
  isLoading: false,
3786
+ scope: AXPPlatformScope.User,
3654
3787
  // Navigation State
3655
3788
  currentPath: [],
3656
3789
  currentNode: null,
@@ -3678,8 +3811,12 @@ const AXPDocumentExplorerViewModel = signalStore({ providedIn: 'root' }, withSta
3678
3811
  detailPanel: false,
3679
3812
  })), withComputed((store) => ({
3680
3813
  isRoot: computed(() => {
3814
+ const path = store.currentPath();
3815
+ return path.length === 1;
3816
+ }),
3817
+ isVirtual: computed(() => {
3681
3818
  const node = store.currentNode();
3682
- return node?.id === 'root' || !node?.parentId;
3819
+ return node?.storageType === 'virtual';
3683
3820
  }),
3684
3821
  currentFolder: computed(() => store.currentNode()),
3685
3822
  currentFolderContents: computed(() => ({
@@ -3703,27 +3840,37 @@ const AXPDocumentExplorerViewModel = signalStore({ providedIn: 'root' }, withSta
3703
3840
  isMultiSelect: computed(() => store.selectionMode() === 'multiple'),
3704
3841
  selectedNode: computed(() => store.selectedNodes()[0] ?? null),
3705
3842
  isDetailPanelOpen: computed(() => store.detailPanel()),
3706
- })), withMethods((store, fileTypeService = inject(AXPFileTypeProviderService), documentTypeService = inject(AXMDocumentTypeService), driveService = inject(AXMDocumentManagerService), settingService = inject(AXPSettingService), translateService = inject(AXTranslationService)) => ({
3843
+ })), withMethods((store, fileTypeService = inject(AXPFileTypeProviderService), documentTypeService = inject(AXMDocumentTypeService), driveService = inject(AXMDocumentManagerService), settingService = inject(AXPSettingService), sessionService = inject(AXPSessionService), translateService = inject(AXTranslationService)) => ({
3707
3844
  async initialize(options) {
3708
3845
  // Load file types
3709
3846
  const fileTypes = await fileTypeService.items();
3710
3847
  patchState(store, { fileTypes });
3711
3848
  // Load initial settings
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);
3849
+ const viewMode = await settingService
3850
+ .scope(options?.scope || AXPPlatformScope.User)
3851
+ .get(AXPDocumentExplorerSettings.ViewMode);
3852
+ const sortField = await settingService
3853
+ .scope(options?.scope || AXPPlatformScope.User)
3854
+ .get(AXPDocumentExplorerSettings.SortField);
3855
+ const sortDirection = await settingService
3856
+ .scope(options?.scope || AXPPlatformScope.User)
3857
+ .get(AXPDocumentExplorerSettings.SortDirection);
3715
3858
  patchState(store, {
3716
- viewMode: viewMode || 'large-tiles',
3859
+ viewMode: viewMode || 'list',
3717
3860
  sortField: sortField || 'name',
3718
3861
  sortDirection: sortDirection || 'asc',
3719
3862
  browseMode: options?.browseMode || 'file',
3863
+ scope: options?.scope || AXPPlatformScope.User,
3720
3864
  });
3721
3865
  },
3722
3866
  _load: async (folderId) => {
3723
3867
  patchState(store, { loadingFolderId: folderId, isLoading: true });
3724
3868
  await new Promise((resolve) => setTimeout(resolve, 100));
3725
3869
  try {
3726
- const node = await driveService.getFolder(folderId);
3870
+ const node = await driveService.getFolder(store.scope(), folderId, {
3871
+ tenantId: sessionService.tenant?.id,
3872
+ userId: sessionService.user?.id,
3873
+ });
3727
3874
  patchState(store, {
3728
3875
  currentNode: node.result,
3729
3876
  currentPath: node.path,
@@ -3757,20 +3904,48 @@ const AXPDocumentExplorerViewModel = signalStore({ providedIn: 'root' }, withSta
3757
3904
  await this._load(folderId);
3758
3905
  this.deselectAll();
3759
3906
  },
3907
+ async virtualFolder(files = []) {
3908
+ const id = 'virtual';
3909
+ patchState(store, {
3910
+ loadingFolderId: id,
3911
+ isLoading: true,
3912
+ });
3913
+ await new Promise((resolve) => setTimeout(resolve, 100));
3914
+ const node = {
3915
+ id: id,
3916
+ name: 'virtual',
3917
+ type: 'folder',
3918
+ children: files,
3919
+ parentId: null,
3920
+ size: 0,
3921
+ storageType: 'virtual',
3922
+ };
3923
+ patchState(store, {
3924
+ currentNode: node,
3925
+ currentPath: [],
3926
+ folders: [],
3927
+ files: files,
3928
+ itemsCount: node.children?.length || 0,
3929
+ availableSpace: await driveService.getAvailableSpace(),
3930
+ loadingFolderId: null,
3931
+ isLoading: false,
3932
+ navigatingFolderId: null,
3933
+ });
3934
+ },
3760
3935
  setViewMode(mode) {
3761
3936
  patchState(store, { viewMode: mode });
3762
- settingService.scope(AXPSettingScope.User).set(AXPDocumentExplorerSettings.ViewMode, mode);
3937
+ settingService.scope(AXPPlatformScope.User).set(AXPDocumentExplorerSettings.ViewMode, mode);
3763
3938
  },
3764
3939
  isViewMode(mode) {
3765
3940
  return store.viewMode() === mode;
3766
3941
  },
3767
3942
  setSortField(field) {
3768
3943
  patchState(store, { sortField: field });
3769
- settingService.scope(AXPSettingScope.User).set(AXPDocumentExplorerSettings.SortField, field);
3944
+ settingService.scope(AXPPlatformScope.User).set(AXPDocumentExplorerSettings.SortField, field);
3770
3945
  },
3771
3946
  setSortDirection(direction) {
3772
3947
  patchState(store, { sortDirection: direction });
3773
- settingService.scope(AXPSettingScope.User).set(AXPDocumentExplorerSettings.SortDirection, direction);
3948
+ settingService.scope(AXPPlatformScope.User).set(AXPDocumentExplorerSettings.SortDirection, direction);
3774
3949
  },
3775
3950
  setSelectionMode(mode) {
3776
3951
  patchState(store, { selectionMode: mode });
@@ -3842,10 +4017,10 @@ const AXPDocumentExplorerViewModel = signalStore({ providedIn: 'root' }, withSta
3842
4017
  content: node.modifiedAt || new Date(),
3843
4018
  format: 'datetime',
3844
4019
  icon: 'fa-solid fa-calendar-days',
3845
- }
3846
- ]
3847
- }
3848
- ]
4020
+ },
4021
+ ],
4022
+ },
4023
+ ],
3849
4024
  };
3850
4025
  }
3851
4026
  // If the node is a folder, return the folder info
@@ -3885,10 +4060,10 @@ const AXPDocumentExplorerViewModel = signalStore({ providedIn: 'root' }, withSta
3885
4060
  content: node.modifiedAt || new Date(),
3886
4061
  format: 'datetime',
3887
4062
  icon: 'fa-solid fa-calendar-days',
3888
- }
3889
- ]
3890
- }
3891
- ]
4063
+ },
4064
+ ],
4065
+ },
4066
+ ],
3892
4067
  };
3893
4068
  }
3894
4069
  },
@@ -3914,9 +4089,15 @@ const AXPDocumentExplorerViewModel = signalStore({ providedIn: 'root' }, withSta
3914
4089
  });
3915
4090
  },
3916
4091
  async refresh() {
3917
- const currentFolder = store.currentNode();
3918
- if (currentFolder) {
3919
- await this._load(currentFolder.id);
4092
+ if (!store.isVirtual()) {
4093
+ const currentFolder = store.currentNode();
4094
+ if (currentFolder) {
4095
+ await this._load(currentFolder.id);
4096
+ }
4097
+ }
4098
+ else {
4099
+ patchState(store, { loadingFolderId: 'fake' });
4100
+ patchState(store, { loadingFolderId: null });
3920
4101
  }
3921
4102
  },
3922
4103
  navigateToUp() {
@@ -3943,25 +4124,35 @@ const AXPDocumentExplorerViewModel = signalStore({ providedIn: 'root' }, withSta
3943
4124
  async openFile(file) {
3944
4125
  await driveService.openFile(file);
3945
4126
  },
3946
- //TODO: Delete only one node at a time
4127
+ //TODO: Delete only one node at a time
3947
4128
  async deleteNodes(nodes = store.selectedNodes()) {
3948
- const result = await driveService.showDeleteNodesDialog(nodes);
3949
- if (result) {
3950
- this.deselectAll();
3951
- await this.refresh();
4129
+ if (store.isVirtual()) {
4130
+ patchState(store, {
4131
+ files: store.currentFolderContents().files.filter((file) => !nodes.some((node) => node.name === file.name)),
4132
+ });
4133
+ }
4134
+ else {
4135
+ const result = await driveService.showDeleteNodesDialog(nodes);
4136
+ if (result) {
4137
+ this.deselectAll();
4138
+ await this.refresh();
4139
+ }
3952
4140
  }
3953
4141
  },
3954
4142
  toggleSelect(node) {
3955
4143
  if (store.selectionMode() === 'multiple') {
3956
- patchState(store, { selectedNodes: store.selectedNodes().includes(node) ? store.selectedNodes().filter(n => n.id !== node.id) : [...store.selectedNodes(), node] });
4144
+ patchState(store, {
4145
+ selectedNodes: store.selectedNodes().includes(node)
4146
+ ? store.selectedNodes().filter((n) => n.id !== node.id)
4147
+ : [...store.selectedNodes(), node],
4148
+ });
3957
4149
  }
3958
4150
  else {
3959
4151
  patchState(store, { selectedNodes: [node] });
3960
4152
  }
3961
- console.log(store.currentPath());
3962
4153
  },
3963
4154
  isItemSelected(node) {
3964
- return store.selectedNodes().some(selectedNode => selectedNode.id === node.id);
4155
+ return store.selectedNodes().some((selectedNode) => selectedNode.id === node.id);
3965
4156
  },
3966
4157
  selectAll() {
3967
4158
  patchState(store, { selectedNodes: [...store.folders(), ...store.files()] });
@@ -3980,12 +4171,6 @@ const AXPDocumentExplorerViewModel = signalStore({ providedIn: 'root' }, withSta
3980
4171
  },
3981
4172
  //#region Menu Items
3982
4173
  async getFolderAddMenuItems() {
3983
- const documentTypes = await documentTypeService.query();
3984
- const items = documentTypes.items.map(item => ({
3985
- name: item.name,
3986
- title: item.title,
3987
- })) ?? [];
3988
- //
3989
4174
  const scope = RootConfig.config.i18n;
3990
4175
  return [
3991
4176
  {
@@ -3996,13 +4181,32 @@ const AXPDocumentExplorerViewModel = signalStore({ providedIn: 'root' }, withSta
3996
4181
  name: 'new-folder',
3997
4182
  options: {
3998
4183
  folderId: store.currentFolder()?.id,
3999
- }
4000
- }
4184
+ },
4185
+ },
4001
4186
  },
4002
- {
4003
- title: await translateService.translateAsync('actions.upload-file', { scope }),
4187
+ ...(store.currentFolder()?.documentTypes?.map((type) => ({
4188
+ title: type.title,
4189
+ //icon: type.icon,
4004
4190
  icon: 'fa-light fa-file-arrow-up',
4005
- items: items
4191
+ break: true,
4192
+ command: {
4193
+ name: `upload.${type.name}`,
4194
+ options: {
4195
+ folderId: store.currentFolder()?.id,
4196
+ documentType: type,
4197
+ },
4198
+ },
4199
+ })) ?? []),
4200
+ {
4201
+ title: await translateService.translateAsync('actions.open-gallery', { scope }),
4202
+ icon: 'fa-light fa-images',
4203
+ break: true,
4204
+ command: {
4205
+ name: 'open-gallery',
4206
+ options: {
4207
+ folderId: store.currentFolder()?.id,
4208
+ },
4209
+ },
4006
4210
  },
4007
4211
  ];
4008
4212
  },
@@ -4010,22 +4214,22 @@ const AXPDocumentExplorerViewModel = signalStore({ providedIn: 'root' }, withSta
4010
4214
  return [
4011
4215
  {
4012
4216
  name: 'refresh',
4013
- title: 'Refresh',
4217
+ title: await translateService.translateAsync('refresh'),
4014
4218
  icon: 'fa-light fa-rotate-right',
4015
- break: true,
4016
- },
4017
- {
4018
- name: 'delete',
4019
- title: 'Delete',
4020
- color: 'danger',
4021
- icon: 'fa-light fa-trash',
4219
+ // break: true,
4022
4220
  },
4221
+ // {
4222
+ // name: 'delete',
4223
+ // title: await translateService.translateAsync('delete'),
4224
+ // color: 'danger',
4225
+ // icon: 'fa-light fa-trash',
4226
+ // },
4023
4227
  ];
4024
4228
  },
4025
4229
  //#endregion
4026
4230
  //#region Context Menu Items
4027
4231
  async getContextMenuItems() {
4028
- return [...await this.getFolderAddMenuItems(), ...await this.getFolderActionMenuItems()];
4232
+ return [...(await this.getFolderAddMenuItems()), ...(await this.getFolderActionMenuItems())];
4029
4233
  },
4030
4234
  //#endregion
4031
4235
  })));
@@ -4044,16 +4248,15 @@ class AXMDocumentExplorerComponent {
4044
4248
  this.showContextMenu = input(true);
4045
4249
  this.view = signal(null);
4046
4250
  this.viewMap = {
4047
- list: async () => (await import('./acorex-modules-document-management-list-view.component-B6J6Tokv.mjs')).AXMDocumentExplorerListViewComponent,
4048
- 'small-tiles': async () => (await import('./acorex-modules-document-management-small-tiles-view.component-DDKdWg8I.mjs')).AXMDocumentExplorerSmallTilesViewComponent,
4049
- 'large-tiles': async () => (await import('./acorex-modules-document-management-large-tiles-view.component-ByWrKvZe.mjs')).AXMDocumentExplorerLargeTilesViewComponent,
4050
- details: async () => (await import('./acorex-modules-document-management-details-view.component-BHcu_gYH.mjs')).AXMDocumentExplorerDetailsViewComponent,
4051
- 'large-icons': async () => (await import('./acorex-modules-document-management-large-icons-view.component-DvriE0YR.mjs')).AXMDocumentExplorerLargeIconsViewComponent,
4052
- 'small-icons': async () => (await import('./acorex-modules-document-management-small-icons-view.component-TrYeB22e.mjs')).AXMDocumentExplorerSmallIconsViewComponent,
4251
+ list: async () => (await import('./acorex-modules-document-management-list-view.component-BPkaAGjR.mjs')).AXMDocumentExplorerListViewComponent,
4252
+ 'small-tiles': async () => (await import('./acorex-modules-document-management-small-tiles-view.component-C_SlJ79h.mjs')).AXMDocumentExplorerSmallTilesViewComponent,
4253
+ 'large-tiles': async () => (await import('./acorex-modules-document-management-large-tiles-view.component-Cw5yZ851.mjs')).AXMDocumentExplorerLargeTilesViewComponent,
4254
+ details: async () => (await import('./acorex-modules-document-management-details-view.component-BFMgAxeK.mjs')).AXMDocumentExplorerDetailsViewComponent,
4255
+ 'large-icons': async () => (await import('./acorex-modules-document-management-large-icons-view.component-CZ-GUtnO.mjs')).AXMDocumentExplorerLargeIconsViewComponent,
4256
+ 'small-icons': async () => (await import('./acorex-modules-document-management-small-icons-view.component-Cz-sHFPj.mjs')).AXMDocumentExplorerSmallIconsViewComponent,
4053
4257
  };
4054
4258
  this.#effect = effect(() => {
4055
- const navigatingFolderId = this.vm.loadingFolderId();
4056
- if (!navigatingFolderId) {
4259
+ if (this.vm.loadingFolderId() == null) {
4057
4260
  setTimeout(() => {
4058
4261
  this.contextMenu()?.refresh();
4059
4262
  this.rootContextMenu()?.refresh();
@@ -4079,7 +4282,6 @@ class AXMDocumentExplorerComponent {
4079
4282
  #effect3;
4080
4283
  handleNavigateToFolder(folderId) {
4081
4284
  this.vm.navigateToFolder(folderId);
4082
- console.log(this.vm.currentFolder());
4083
4285
  }
4084
4286
  //#region Menu and Context Menu
4085
4287
  async handleContextMenuOnOpening(e) {
@@ -4114,11 +4316,21 @@ class AXMDocumentExplorerComponent {
4114
4316
  data: node,
4115
4317
  },
4116
4318
  {
4117
- name: 'upload-file',
4118
- text: 'Upload File',
4319
+ name: 'upload-file-33',
4320
+ text: 'Upload',
4119
4321
  icon: 'fa-light fa-file-arrow-up',
4120
4322
  break: true,
4121
- data: this.vm.currentFolder(),
4323
+ items: node?.documentTypes?.map((type, index, array) => ({
4324
+ name: `upload.${type.name}`,
4325
+ text: type.title,
4326
+ // icon: type.icon,
4327
+ icon: 'fa-light fa-file-arrow-up',
4328
+ break: index !== array.length - 1,
4329
+ data: {
4330
+ node,
4331
+ documentType: type,
4332
+ },
4333
+ })) ?? [],
4122
4334
  },
4123
4335
  ];
4124
4336
  const info = {
@@ -4220,13 +4432,21 @@ class AXMDocumentExplorerComponent {
4220
4432
  }
4221
4433
  }
4222
4434
  async handleContextMenuRootOnOpening(e) {
4223
- //TODO: check async translate method in acorex
4224
- const items = [...await this.vm.getFolderAddMenuItems(), ...await this.vm.getFolderActionMenuItems()];
4225
- const mappedItems = items.map(m => ({
4435
+ //TODO: check async translate method in acorex
4436
+ const items = [
4437
+ ...(await this.vm.getFolderAddMenuItems()).map((m) => ({
4438
+ ...m,
4439
+ name: m.command?.name,
4440
+ data: m.command?.options,
4441
+ })),
4442
+ ...(await this.vm.getFolderActionMenuItems()),
4443
+ ];
4444
+ const mappedItems = items.map((m) => ({
4226
4445
  ...m,
4227
4446
  text: m.title,
4228
4447
  }));
4229
4448
  e.items.push(...mappedItems);
4449
+ e.items[e.items.length - 1].break = false;
4230
4450
  }
4231
4451
  async handleContextMenuItemClick(e) {
4232
4452
  const node = e.item.data;
@@ -4238,7 +4458,12 @@ class AXMDocumentExplorerComponent {
4238
4458
  this.openFile(node);
4239
4459
  break;
4240
4460
  case 'open-gallery':
4241
- this.openGallery(node);
4461
+ if (e.item.data.folderId != null) {
4462
+ this.openGalleryWithFolderId();
4463
+ }
4464
+ else {
4465
+ this.openGallery(node);
4466
+ }
4242
4467
  break;
4243
4468
  case 'download':
4244
4469
  this.handleDownloadFile(node);
@@ -4247,9 +4472,9 @@ class AXMDocumentExplorerComponent {
4247
4472
  await this.createFolder(node);
4248
4473
  // Handle new folder creation
4249
4474
  break;
4250
- case 'upload-file':
4251
- await this.uploadFile(node);
4252
- break;
4475
+ // case 'upload-file':
4476
+ // await this.uploadFile(node);
4477
+ // break;
4253
4478
  case 'paste':
4254
4479
  // Handle paste operation
4255
4480
  break;
@@ -4262,6 +4487,9 @@ class AXMDocumentExplorerComponent {
4262
4487
  case 'rename':
4263
4488
  this.renameNode(node);
4264
4489
  break;
4490
+ case 'properties':
4491
+ this.showFolderProperty(node);
4492
+ break;
4265
4493
  case 'delete':
4266
4494
  this.vm.deleteNodes([node]);
4267
4495
  break;
@@ -4271,11 +4499,60 @@ class AXMDocumentExplorerComponent {
4271
4499
  case 'copy':
4272
4500
  this.makeCopy(node);
4273
4501
  break;
4502
+ case 'share':
4503
+ this.share(node);
4504
+ break;
4505
+ case 'share-with-email':
4506
+ this.shareWithEmail(node);
4507
+ break;
4508
+ case 'link':
4509
+ this.link(node);
4510
+ break;
4511
+ case 'lock':
4512
+ this.lock(node);
4513
+ break;
4514
+ case 'unlock':
4515
+ this.unlock(node);
4516
+ break;
4517
+ default:
4518
+ if (e.item.name?.startsWith('upload.')) {
4519
+ await this.driveService.uploadFileByType(e.item.data.node?.id ?? this.vm.currentFolder()?.id, e.item.data.documentType.id);
4520
+ this.vm.refresh();
4521
+ }
4522
+ break;
4523
+ }
4524
+ }
4525
+ //#endregion
4526
+ async showFolderProperty(node) {
4527
+ if (await this.driveService.showFolderEditDialog(node)) {
4528
+ await this.vm.refresh();
4274
4529
  }
4275
4530
  }
4276
- //#endregion
4531
+ async share(node) {
4532
+ await this.driveService.showShareDialog(node);
4533
+ }
4534
+ async shareWithEmail(node) {
4535
+ await this.driveService.showShareWithEmailDialog(node);
4536
+ }
4537
+ async link(node) {
4538
+ await this.driveService.showLinkDialog(node);
4539
+ }
4540
+ async lock(node) {
4541
+ await this.driveService.showLockDialog(node);
4542
+ }
4543
+ async unlock(node) {
4544
+ await this.driveService.showUnlockDialog(node);
4545
+ }
4546
+ async openGalleryWithFolderId() {
4547
+ const folder = this.vm.currentFolder();
4548
+ const files = folder.children.filter((item) => item.type === 'file');
4549
+ await this.driveService.showFileViewerPopup(files[0]);
4550
+ }
4277
4551
  async openGallery(node) {
4278
- await this.driveService.showFileViewerPopup(node);
4552
+ await this.driveService.showFileViewerPopup(node, {
4553
+ folderVituralfiles: this.vm.currentFolderContents().files,
4554
+ index: this.vm.currentFolderContents().files.findIndex((f) => f.id === node.id),
4555
+ });
4279
4556
  }
4280
4557
  async openFile(node) {
4281
4558
  await this.driveService.openFile(node);
@@ -4294,11 +4571,23 @@ class AXMDocumentExplorerComponent {
4294
4571
  }
4295
4572
  async renameNode(node) {
4296
4573
  if (node) {
4297
- const result = await this.driveService.rename(node);
4574
+ const result = await this.driveService.showRenamePopup(node);
4298
4575
  if (result) {
4576
+ if (node.storageType == 'virtual') {
4577
+ const files = this.vm.files();
4578
+ const updatedFiles = files.map((file) => {
4579
+ if (file.id === result.id) {
4580
+ return result;
4581
+ }
4582
+ return file;
4583
+ });
4584
+ this.vm.virtualFolder(updatedFiles);
4585
+ }
4299
4586
  await this.vm.refresh();
4300
4587
  }
4588
+ return result;
4301
4589
  }
4590
+ return;
4302
4591
  }
4303
4592
  async uploadFile(node) {
4304
4593
  const folderId = node?.id ?? this.vm.currentFolder()?.id;
@@ -4309,9 +4598,9 @@ class AXMDocumentExplorerComponent {
4309
4598
  }
4310
4599
  }
4311
4600
  }
4312
- async chooseFile() {
4313
- await this.driveService.showChooseFileDialog();
4314
- await this.vm.refresh();
4601
+ async chooseFile(scope = this.vm.scope()) {
4602
+ return await this.driveService.showChooseFileDialog(scope);
4603
+ //await this.vm.refresh();
4315
4604
  }
4316
4605
  async makeCopy(node) {
4317
4606
  if (node) {
@@ -4341,7 +4630,7 @@ class AXMDocumentExplorerComponent {
4341
4630
  }
4342
4631
  }
4343
4632
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXMDocumentExplorerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
4344
- 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:max-content;min-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 }); }
4633
+ 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:max-content;min-height:100%;width:100%;flex-direction:row;gap:1rem}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: i2$1.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 }); }
4345
4634
  }
4346
4635
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXMDocumentExplorerComponent, decorators: [{
4347
4636
  type: Component,
@@ -4353,7 +4642,25 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImpor
4353
4642
  AXFormatModule,
4354
4643
  AXDateTimeModule,
4355
4644
  AXMenuModule,
4356
- ], 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:max-content;min-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"] }]
4645
+ ], 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:max-content;min-height:100%;width:100%;flex-direction:row;gap:1rem}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"] }]
4646
+ }] });
4647
+
4648
+ class AXMDocumentExplorerDetailPanelComponent {
4649
+ constructor() {
4650
+ this.vm = inject(AXPDocumentExplorerViewModel);
4651
+ }
4652
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXMDocumentExplorerDetailPanelComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
4653
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.3", type: AXMDocumentExplorerDetailPanelComponent, isStandalone: true, selector: "axm-document-explorer-detail-panel", ngImport: i0, template: "<!-- Multiple Selected -->\n@if(vm.hasMultipleSelectedItems()) {\n<div class=\"__header\" *translate=\"let t\">\n <div class=\"__title\">\n <i class=\"fa-fw fa-lg fa-solid\"></i>\n <span> {{ vm.selectedCount() }} {{ t('itemsSelected', { scope: 'common' }) | async }}</span>\n </div>\n <ax-button [look]=\"'blank'\" class=\"ax-sm ax-rounded-full\" (onClick)=\"vm.closeDetailPanel()\">\n <ax-icon icon=\"fa-solid fa-xmark\"></ax-icon>\n </ax-button>\n</div>\n<div class=\"__content\"></div>\n}\n<!-- Single Selected -->\n@else {\n<!-- Info -->\n@let nodeInfo = vm.getNodeInfo((vm.selectedNode() ?? vm.currentFolder())!);\n<div class=\"__header\">\n <div class=\"__title\">\n <i class=\"fa-fw fa-lg {{ nodeInfo.icon }} fa-solid\"></i>\n <span>{{ nodeInfo.name }}</span>\n </div>\n <ax-button [look]=\"'blank'\" class=\"ax-sm ax-rounded-full\" (onClick)=\"vm.closeDetailPanel()\">\n <ax-icon icon=\"fa-solid fa-xmark\"></ax-icon>\n </ax-button>\n</div>\n<div class=\"__content\">\n @for(section of nodeInfo.sections; track section.title) {\n <div class=\"__section\">\n <div class=\"__title\">\n <span>{{ section.title }}</span>\n </div>\n <div class=\"__content\">\n @for(detail of section.details; track detail.title) {\n <div class=\"__row\">\n <div class=\"__title\">\n <span>{{ detail.title }}</span>\n </div>\n <div class=\"__content\">\n @if(detail.format) {\n <span>{{ detail.content | format : detail.format | async }}</span>\n } @else {\n <span>{{ detail.content ?? '---' }}</span>\n }\n </div>\n </div>\n }\n </div>\n </div>\n }\n</div>\n}\n", styles: ["axm-document-explorer-detail-panel{display:flex;flex-direction:column;border-radius:.5rem;border-width:1px;--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);background-color:rgb(var(--ax-sys-color-lightest-surface));color:rgb(var(--ax-sys-color-on-lightest-surface));border-color:rgb(var(--ax-sys-color-border-lightest-surface))}@media (min-width: 1024px){axm-document-explorer-detail-panel{min-width:20rem}}axm-document-explorer-detail-panel>.__header{display:flex;flex-direction:row;align-items:center;justify-content:space-between;border-bottom-width:1px;padding:1rem}axm-document-explorer-detail-panel>.__header>.__title{display:flex;width:90%;flex-direction:row;align-items:center;gap:.5rem}axm-document-explorer-detail-panel>.__header>.__title span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:start;font-weight:600;line-height:1.625}axm-document-explorer-detail-panel>.__content{display:flex;flex-direction:column}axm-document-explorer-detail-panel>.__content>:not([hidden])~:not([hidden]){--tw-divide-y-reverse: 0;border-top-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)));border-bottom-width:calc(1px * var(--tw-divide-y-reverse))}axm-document-explorer-detail-panel>.__content>.__section{display:flex;flex-direction:column;padding:1rem}axm-document-explorer-detail-panel>.__content>.__section>.__title{margin-bottom:1rem;font-size:.875rem;line-height:1.25rem;font-weight:700}axm-document-explorer-detail-panel>.__content>.__section>.__content{display:flex;flex-direction:column;gap:1rem}axm-document-explorer-detail-panel>.__content>.__section>.__content>.__row{display:flex;flex-direction:column;gap:.25rem}axm-document-explorer-detail-panel>.__content>.__section>.__content>.__row>.__title{display:flex;font-size:.875rem;line-height:1.25rem;font-weight:600;opacity:.9}axm-document-explorer-detail-panel>.__content>.__section>.__content>.__row>.__content{display:flex;flex-direction:row;align-items:center;gap:.5rem}axm-document-explorer-detail-panel>.__content>.__section>.__content>.__row>.__content span{opacity:.7}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i1$1.AsyncPipe, name: "async" }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i2$1.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "ngmodule", type: AXFormatModule }, { kind: "pipe", type: i2$2.AXFormatPipe, name: "format" }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i2$3.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "directive", type: i4$1.AXTranslatorDirective, selector: "[translate]" }], encapsulation: i0.ViewEncapsulation.None }); }
4654
+ }
4655
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXMDocumentExplorerDetailPanelComponent, decorators: [{
4656
+ type: Component,
4657
+ args: [{ selector: 'axm-document-explorer-detail-panel', standalone: true, encapsulation: ViewEncapsulation.None, imports: [
4658
+ CommonModule,
4659
+ AXDecoratorModule,
4660
+ AXFormatModule,
4661
+ AXButtonModule,
4662
+ AXTranslationModule
4663
+ ], template: "<!-- Multiple Selected -->\n@if(vm.hasMultipleSelectedItems()) {\n<div class=\"__header\" *translate=\"let t\">\n <div class=\"__title\">\n <i class=\"fa-fw fa-lg fa-solid\"></i>\n <span> {{ vm.selectedCount() }} {{ t('itemsSelected', { scope: 'common' }) | async }}</span>\n </div>\n <ax-button [look]=\"'blank'\" class=\"ax-sm ax-rounded-full\" (onClick)=\"vm.closeDetailPanel()\">\n <ax-icon icon=\"fa-solid fa-xmark\"></ax-icon>\n </ax-button>\n</div>\n<div class=\"__content\"></div>\n}\n<!-- Single Selected -->\n@else {\n<!-- Info -->\n@let nodeInfo = vm.getNodeInfo((vm.selectedNode() ?? vm.currentFolder())!);\n<div class=\"__header\">\n <div class=\"__title\">\n <i class=\"fa-fw fa-lg {{ nodeInfo.icon }} fa-solid\"></i>\n <span>{{ nodeInfo.name }}</span>\n </div>\n <ax-button [look]=\"'blank'\" class=\"ax-sm ax-rounded-full\" (onClick)=\"vm.closeDetailPanel()\">\n <ax-icon icon=\"fa-solid fa-xmark\"></ax-icon>\n </ax-button>\n</div>\n<div class=\"__content\">\n @for(section of nodeInfo.sections; track section.title) {\n <div class=\"__section\">\n <div class=\"__title\">\n <span>{{ section.title }}</span>\n </div>\n <div class=\"__content\">\n @for(detail of section.details; track detail.title) {\n <div class=\"__row\">\n <div class=\"__title\">\n <span>{{ detail.title }}</span>\n </div>\n <div class=\"__content\">\n @if(detail.format) {\n <span>{{ detail.content | format : detail.format | async }}</span>\n } @else {\n <span>{{ detail.content ?? '---' }}</span>\n }\n </div>\n </div>\n }\n </div>\n </div>\n }\n</div>\n}\n", styles: ["axm-document-explorer-detail-panel{display:flex;flex-direction:column;border-radius:.5rem;border-width:1px;--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);background-color:rgb(var(--ax-sys-color-lightest-surface));color:rgb(var(--ax-sys-color-on-lightest-surface));border-color:rgb(var(--ax-sys-color-border-lightest-surface))}@media (min-width: 1024px){axm-document-explorer-detail-panel{min-width:20rem}}axm-document-explorer-detail-panel>.__header{display:flex;flex-direction:row;align-items:center;justify-content:space-between;border-bottom-width:1px;padding:1rem}axm-document-explorer-detail-panel>.__header>.__title{display:flex;width:90%;flex-direction:row;align-items:center;gap:.5rem}axm-document-explorer-detail-panel>.__header>.__title span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:start;font-weight:600;line-height:1.625}axm-document-explorer-detail-panel>.__content{display:flex;flex-direction:column}axm-document-explorer-detail-panel>.__content>:not([hidden])~:not([hidden]){--tw-divide-y-reverse: 0;border-top-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)));border-bottom-width:calc(1px * var(--tw-divide-y-reverse))}axm-document-explorer-detail-panel>.__content>.__section{display:flex;flex-direction:column;padding:1rem}axm-document-explorer-detail-panel>.__content>.__section>.__title{margin-bottom:1rem;font-size:.875rem;line-height:1.25rem;font-weight:700}axm-document-explorer-detail-panel>.__content>.__section>.__content{display:flex;flex-direction:column;gap:1rem}axm-document-explorer-detail-panel>.__content>.__section>.__content>.__row{display:flex;flex-direction:column;gap:.25rem}axm-document-explorer-detail-panel>.__content>.__section>.__content>.__row>.__title{display:flex;font-size:.875rem;line-height:1.25rem;font-weight:600;opacity:.9}axm-document-explorer-detail-panel>.__content>.__section>.__content>.__row>.__content{display:flex;flex-direction:row;align-items:center;gap:.5rem}axm-document-explorer-detail-panel>.__content>.__section>.__content>.__row>.__content span{opacity:.7}\n"] }]
4357
4664
  }] });
4358
4665
 
4359
4666
  class AXMChooseDocumentTypeComponent extends AXBasePageComponent {
@@ -4392,7 +4699,6 @@ class AXMChooseDocumentTypeComponent extends AXBasePageComponent {
4392
4699
  };
4393
4700
  });
4394
4701
  for (const i of item.meta) {
4395
- console.log(JSON.parse(i.interface)['children'][0]);
4396
4702
  if (!get(i, '__node__')) {
4397
4703
  set$1(i, '__node__', typeof i.interface == 'function' ? await i.interface() :
4398
4704
  JSON.parse(i.interface)['children'][0]['children'][0]);
@@ -4413,27 +4719,98 @@ class AXMChooseDocumentTypeComponent extends AXBasePageComponent {
4413
4719
  });
4414
4720
  }
4415
4721
  getNode(meta) {
4416
- console.log(meta);
4417
4722
  return get(meta, '__node__');
4418
4723
  }
4419
4724
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXMChooseDocumentTypeComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
4420
- 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 }); }
4725
+ 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 <ng-container axp-widget-renderer [node]=\"uploadNode()\" mode=\"edit\"></ng-container>\n </ax-form>\n </axp-widgets-container>\n }\n </div>\n</ax-content>\n<ax-footer>\n <ax-suffix>\n <ax-button text=\"Cancel\" (onClick)=\"handleCancel()\"> </ax-button>\n <ax-button text=\"Next\" look=\"solid\" color=\"primary\" (onClick)=\"handlesubmit()\"> </ax-button>\n </ax-suffix>\n</ax-footer>\n", dependencies: [{ kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i2$3.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: i2$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: AXFormModule }, { kind: "component", type: i3.AXFormFieldComponent, selector: "ax-form-field", inputs: ["labelMode"] }, { kind: "component", type: i3.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 }); }
4421
4726
  }
4422
4727
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXMChooseDocumentTypeComponent, decorators: [{
4423
4728
  type: Component,
4424
- 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" }]
4729
+ 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 <ng-container axp-widget-renderer [node]=\"uploadNode()\" mode=\"edit\"></ng-container>\n </ax-form>\n </axp-widgets-container>\n }\n </div>\n</ax-content>\n<ax-footer>\n <ax-suffix>\n <ax-button text=\"Cancel\" (onClick)=\"handleCancel()\"> </ax-button>\n <ax-button text=\"Next\" look=\"solid\" color=\"primary\" (onClick)=\"handlesubmit()\"> </ax-button>\n </ax-suffix>\n</ax-footer>\n" }]
4730
+ }] });
4731
+
4732
+ class AXMDocumentTypeChooseFileComponent extends AXBasePageComponent {
4733
+ constructor() {
4734
+ super(...arguments);
4735
+ this.context = signal({});
4736
+ this.uploadNode = signal({
4737
+ name: 'uploads',
4738
+ path: 'uploads',
4739
+ type: 'file',
4740
+ options: {
4741
+ accept: '.pdf',
4742
+ multiple: false,
4743
+ },
4744
+ });
4745
+ }
4746
+ async ngOnInit() {
4747
+ this.uploadNode.update((old) => {
4748
+ return {
4749
+ ...old,
4750
+ options: {
4751
+ multiple: this.documentType.isMultiple,
4752
+ accept: this.documentType.name == 'any'
4753
+ ? ''
4754
+ : this.documentType.type.selectedItems.map((i) => `.${i.name.split('.')[1]}`).join(','),
4755
+ },
4756
+ };
4757
+ });
4758
+ for (const i of this.documentType.meta) {
4759
+ if (!get(i, '__node__')) {
4760
+ set$1(i, '__node__', typeof i.interface == 'function'
4761
+ ? await i.interface()
4762
+ : JSON.parse(i.interface)['children'][0]['children'][0]);
4763
+ }
4764
+ }
4765
+ }
4766
+ handleContextChanged(e) {
4767
+ console.log(e.data);
4768
+ this.context.set(e.data);
4769
+ }
4770
+ handleCancel() {
4771
+ this.close();
4772
+ }
4773
+ handlesubmit() {
4774
+ this.close({
4775
+ context: this.context(),
4776
+ });
4777
+ }
4778
+ getNode(meta) {
4779
+ return get(meta, '__node__');
4780
+ }
4781
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXMDocumentTypeChooseFileComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
4782
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.3", type: AXMDocumentTypeChooseFileComponent, isStandalone: true, selector: "axm-choose-document-type", usesInheritance: true, ngImport: i0, template: "<ax-content>\n <div class=\"ax-flex ax-flex-col ax-py-4 ax-px-6\">\n <axp-widgets-container [context]=\"context()\" (onContextChanged)=\"handleContextChanged($event)\">\n <ax-form>\n @for(doc of documentType.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 <ng-container axp-widget-renderer [node]=\"uploadNode()\" mode=\"edit\"></ng-container>\n </ax-form>\n </axp-widgets-container>\n </div>\n</ax-content>\n<ax-footer>\n <ax-suffix>\n <ax-button text=\"Cancel\" (onClick)=\"handleCancel()\"> </ax-button>\n <ax-button text=\"Submit\" look=\"solid\" color=\"primary\" (onClick)=\"handlesubmit()\"> </ax-button>\n </ax-suffix>\n</ax-footer>\n", dependencies: [{ kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i2$3.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: i2$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: AXFormModule }, { kind: "component", type: i3.AXFormFieldComponent, selector: "ax-form-field", inputs: ["labelMode"] }, { kind: "component", type: i3.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: "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 }); }
4783
+ }
4784
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXMDocumentTypeChooseFileComponent, decorators: [{
4785
+ type: Component,
4786
+ args: [{ changeDetection: ChangeDetectionStrategy.OnPush, selector: 'axm-choose-document-type', imports: [AXButtonModule, AXDecoratorModule, AXFormModule, AXLabelModule, AXSelectBoxModule, AXPLayoutBuilderModule], template: "<ax-content>\n <div class=\"ax-flex ax-flex-col ax-py-4 ax-px-6\">\n <axp-widgets-container [context]=\"context()\" (onContextChanged)=\"handleContextChanged($event)\">\n <ax-form>\n @for(doc of documentType.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 <ng-container axp-widget-renderer [node]=\"uploadNode()\" mode=\"edit\"></ng-container>\n </ax-form>\n </axp-widgets-container>\n </div>\n</ax-content>\n<ax-footer>\n <ax-suffix>\n <ax-button text=\"Cancel\" (onClick)=\"handleCancel()\"> </ax-button>\n <ax-button text=\"Submit\" look=\"solid\" color=\"primary\" (onClick)=\"handlesubmit()\"> </ax-button>\n </ax-suffix>\n</ax-footer>\n" }]
4425
4787
  }] });
4426
4788
 
4427
4789
  class AXMFileViewerPopupComponent extends AXBasePageComponent {
4790
+ constructor() {
4791
+ super(...arguments);
4792
+ this.index = 0;
4793
+ this.mediaViewer = viewChild(AXMediaViewerContainerComponent);
4794
+ this.f = afterNextRender(() => {
4795
+ setTimeout(() => {
4796
+ this.mediaViewer()?.goToIndex(this.index, 0);
4797
+ });
4798
+ });
4799
+ }
4800
+ ngAfterViewInit() {
4801
+ //Called after ngAfterContentInit when the component's view has been initialized. Applies to components only.
4802
+ //Add 'implements AfterViewInit' to the class.
4803
+ this.mediaViewer()?.goToIndex(this.index, 0);
4804
+ }
4428
4805
  onClose() {
4429
4806
  this.close();
4430
4807
  }
4431
4808
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXMFileViewerPopupComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
4432
- 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 }); }
4809
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "19.0.3", type: AXMFileViewerPopupComponent, isStandalone: true, selector: "ng-component", viewQueries: [{ propertyName: "mediaViewer", first: true, predicate: AXMediaViewerContainerComponent, descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<ax-content>\n <ax-media-viewer-container #c [dataArray]=\"nodes\">\n <ax-header>\n <ax-prefix>\n <ax-file-info></ax-file-info>\n </ax-prefix>\n <ax-suffix>\n <ax-fullscreen-button></ax-fullscreen-button>\n </ax-suffix>\n </ax-header>\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 <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<ax-footer>\n <ax-suffix>\n <ax-button [text]=\"'close'\" (click)=\"onClose()\" />\n </ax-suffix>\n</ax-footer>\n", dependencies: [{ kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i2$1.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: i2$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: "component", type: i2$1.AXDecoratorFullScreenButtonComponent, selector: "ax-fullscreen-button" }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i2$3.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 }); }
4433
4810
  }
4434
4811
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXMFileViewerPopupComponent, decorators: [{
4435
4812
  type: Component,
4436
- 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" }]
4813
+ args: [{ changeDetection: ChangeDetectionStrategy.OnPush, imports: [AXDecoratorModule, AXButtonModule, AXMediaViewerModule], template: "<ax-content>\n <ax-media-viewer-container #c [dataArray]=\"nodes\">\n <ax-header>\n <ax-prefix>\n <ax-file-info></ax-file-info>\n </ax-prefix>\n <ax-suffix>\n <ax-fullscreen-button></ax-fullscreen-button>\n </ax-suffix>\n </ax-header>\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 <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<ax-footer>\n <ax-suffix>\n <ax-button [text]=\"'close'\" (click)=\"onClose()\" />\n </ax-suffix>\n</ax-footer>\n" }]
4437
4814
  }] });
4438
4815
 
4439
4816
  var fileViewerPopup_component = /*#__PURE__*/Object.freeze({
@@ -4447,7 +4824,7 @@ class AXMFolderPathBreadcrumbsComponent {
4447
4824
  this.layout = inject(AXPLayoutThemeService);
4448
4825
  }
4449
4826
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXMFolderPathBreadcrumbsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
4450
- 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"] }] }); }
4827
+ 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$3.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: i2$1.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }] }); }
4451
4828
  }
4452
4829
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXMFolderPathBreadcrumbsComponent, decorators: [{
4453
4830
  type: Component,
@@ -4460,46 +4837,447 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImpor
4460
4837
  var index = /*#__PURE__*/Object.freeze({
4461
4838
  __proto__: null,
4462
4839
  AXMChooseDocumentTypeComponent: AXMChooseDocumentTypeComponent,
4840
+ AXMDocumentTypeChooseFileComponent: AXMDocumentTypeChooseFileComponent,
4463
4841
  AXMFileViewerPopupComponent: AXMFileViewerPopupComponent,
4464
4842
  AXMFolderPathBreadcrumbsComponent: AXMFolderPathBreadcrumbsComponent
4465
4843
  });
4466
4844
 
4467
- class AXMDocumentAttachmentWidgetEditComponent extends AXPWidgetComponent {
4845
+ class AXMDocumentDriveComponent extends AXPBasePageComponent {
4468
4846
  constructor() {
4469
4847
  super(...arguments);
4848
+ //#region ---------------- Services & Dependencies ----------------
4849
+ this.rootConfig = RootConfig;
4850
+ this.fileTypeService = inject(AXPFileTypeProviderService);
4470
4851
  this.driveService = inject(AXMDocumentManagerService);
4471
4852
  this.vm = inject(AXPDocumentExplorerViewModel);
4472
- this.rootConfig = RootConfig;
4853
+ this.router = inject(Router);
4854
+ this.activatedRoute = inject(ActivatedRoute);
4855
+ //#endregion
4856
+ //#region ---------------- View Properties ----------------
4857
+ this.filterItems = signal([]);
4858
+ this.selectedFilter = signal('all');
4859
+ this.sortItems = signal([
4860
+ { key: 'name', textKey: 'actions.sort-by-name', icon: 'fa-light fa-font' },
4861
+ { key: 'modified', textKey: 'actions.sort-by-date', icon: 'fa-light fa-calendar' },
4862
+ { key: 'size', textKey: 'actions.sort-by-size', icon: 'fa-light fa-weight-hanging' },
4863
+ ]);
4864
+ this.viewsItems = signal([
4865
+ { key: 'large-icons', icon: 'fa-light fa-grid' },
4866
+ { key: 'small-icons', icon: 'fa-light fa-grid', break: true },
4867
+ { key: 'large-tiles', icon: 'fa-grid-2' },
4868
+ { key: 'small-tiles', icon: 'fa-grid-2', break: true },
4869
+ { key: 'details', icon: 'fa-bars', break: true },
4870
+ { key: 'list', icon: 'fa-list' },
4871
+ ]);
4872
+ this.selectedViewMode = computed(() => this.viewsItems().find((item) => item.key === this.vm.viewMode()) || this.viewsItems()[0]);
4873
+ this.selectionMode = signal('single');
4473
4874
  this.documentExplorer = viewChild(AXMDocumentExplorerComponent);
4875
+ //#endregion
4876
+ //#region ---------------- Computed Properties ----------------
4877
+ this.selectedSort = computed(() => {
4878
+ const items = this.sortItems();
4879
+ return items.find((item) => item.key === this.vm.sortField()) || items[0];
4880
+ });
4881
+ //#endregion
4882
+ //#region ---------------- Effects ----------------
4474
4883
  this.#navigateEffect = effect(() => {
4475
4884
  const navigatingFolderId = this.vm.navigatingFolderId();
4476
4885
  if (navigatingFolderId) {
4477
- this.loadDrive(navigatingFolderId);
4886
+ this.handleNavigateToFolder(navigatingFolderId);
4478
4887
  }
4479
4888
  });
4889
+ this.#loadingEffect = effect(() => {
4890
+ const isLoading = this.vm.isLoading();
4891
+ untracked(() => {
4892
+ this.layoutService.setNavigationLoading(isLoading);
4893
+ });
4894
+ });
4480
4895
  }
4896
+ //#endregion
4897
+ //#region ---------------- Effects ----------------
4481
4898
  #navigateEffect;
4482
- ngOnInit() {
4899
+ #loadingEffect;
4900
+ //#endregion
4901
+ //#region ---------------- Lifecycle Hooks ----------------
4902
+ async ngOnInit() {
4483
4903
  super.ngOnInit();
4484
- this.vm.initialize({ browseMode: 'file' });
4485
- this.loadDrive();
4904
+ await this.loadFilterItems();
4905
+ const snapshot = this.activatedRoute.snapshot;
4906
+ const routerScope = resolvePlatformScopeKey(snapshot.parent?.paramMap.get('scope')?.trim()?.toLowerCase());
4907
+ await this.vm.initialize({ browseMode: 'file', scope: routerScope });
4908
+ this.activatedRoute.paramMap.subscribe(async () => {
4909
+ this.loadDrive();
4910
+ });
4911
+ }
4912
+ //#endregion
4913
+ //#region ---------------- Event Handlers ----------------
4914
+ async handleSearchChange(event) {
4915
+ const result = await this.driveService.searchNodes(event.value, AXPPlatformScope.Tenant);
4486
4916
  }
4487
- async loadDrive(folderId) {
4917
+ handleCtrlKey(e) {
4918
+ this.selectionMode.set('multiple');
4919
+ }
4920
+ handleCtrlKeyUp(e) {
4921
+ this.selectionMode.set('single');
4922
+ }
4923
+ handleNavigateToFolder(folderId) {
4924
+ this.router.navigate([
4925
+ `${this.sessionService.application?.name}/drive/${resolvePlatformScopeName(this.vm.scope())}/${folderId}`,
4926
+ ]);
4927
+ }
4928
+ //#endregion
4929
+ //#region ---------------- Data Loading Methods ----------------
4930
+ async loadDrive() {
4931
+ const folderId = this.activatedRoute.snapshot.paramMap.get('id');
4488
4932
  if (folderId) {
4489
4933
  await this.vm.loadFolderContents(folderId);
4490
4934
  }
4491
4935
  else {
4492
- const root = await this.driveService.getRoot(AXMDriveScope.Platform);
4936
+ // TODO: get root from tenant or user by scope
4937
+ const root = await this.driveService.getRoot(this.vm.scope(), {
4938
+ tenantId: this.sessionService.tenant?.id,
4939
+ userId: this.sessionService.user?.id,
4940
+ });
4493
4941
  if (root.result) {
4494
- await this.vm.loadFolderContents(root.result.id);
4942
+ await this.router.navigate([
4943
+ `${this.sessionService.application?.name}/drive/${resolvePlatformScopeName(this.vm.scope())}/${root.result.id}`,
4944
+ ], {
4945
+ replaceUrl: true,
4946
+ });
4495
4947
  }
4496
4948
  }
4949
+ //
4950
+ this.recompute();
4497
4951
  }
4498
- handleNavigateToFolder(folderId) {
4499
- this.vm.navigateToFolder(folderId);
4952
+ async loadFilterItems() {
4953
+ const types = await this.fileTypeService.items();
4954
+ const items = [
4955
+ { key: 'all', textKey: 'file-types.all', icon: 'fa-light fa-folder-closed' },
4956
+ ...types.map((type) => ({
4957
+ key: type.name,
4958
+ textKey: `file-types.${type.name}`,
4959
+ icon: type.icon || 'fa-light fa-file',
4960
+ })),
4961
+ ];
4962
+ this.filterItems.set(items);
4963
+ }
4964
+ //#endregion
4965
+ //#region ---------------- Filter Methods ----------------
4966
+ setFilter(key) {
4967
+ this.selectedFilter.set(key);
4968
+ }
4969
+ getFilterIcon() {
4970
+ if (this.selectedFilter() === 'all') {
4971
+ return 'fa-light fa-folder-closed';
4972
+ }
4973
+ const item = this.filterItems().find((item) => item.key === this.selectedFilter());
4974
+ return item?.icon || 'fa-light fa-file';
4975
+ }
4976
+ getFilterText() {
4977
+ if (this.selectedFilter() === 'all') {
4978
+ return 'file-types.all';
4979
+ }
4980
+ const item = this.filterItems().find((item) => item.key === this.selectedFilter());
4981
+ return item?.textKey || 'file-types.all';
4982
+ }
4983
+ //#endregion
4984
+ //#region ---------------- Page Configuration Overrides ----------------
4985
+ async getPrimaryMenuItems() {
4986
+ if (this.vm.hasMultipleSelectedItems()) {
4987
+ return [
4988
+ {
4989
+ name: 'deleteItems',
4990
+ title: 't("deleteItems")',
4991
+ icon: 'fa-light fa-trash-can',
4992
+ color: 'danger',
4993
+ },
4994
+ ];
4995
+ }
4996
+ const addItemItems = await this.vm.getFolderAddMenuItems();
4997
+ addItemItems[addItemItems.length - 1].break = false;
4998
+ return [
4999
+ {
5000
+ title: 't("add-item")',
5001
+ icon: 'fa-light fa-plus',
5002
+ color: 'primary',
5003
+ items: addItemItems,
5004
+ },
5005
+ ];
5006
+ }
5007
+ async getSecondaryMenuItems() {
5008
+ if (this.vm.hasMultipleSelectedItems()) {
5009
+ return [
5010
+ {
5011
+ name: 'delete',
5012
+ title: 't("delete")',
5013
+ icon: 'fa-light fa-trash-can',
5014
+ color: 'danger',
5015
+ },
5016
+ ];
5017
+ }
5018
+ return this.vm.getFolderActionMenuItems();
5019
+ }
5020
+ async getPageTitle() {
5021
+ if (this.vm.isRoot()) {
5022
+ return this.translateService.translateAsync(`scope.${resolvePlatformScopeName(this.vm.scope())}.title`, { scope: this.rootConfig.config.i18n });
5023
+ }
5024
+ return this.vm.currentFolder()?.name || '';
5025
+ }
5026
+ async getPageDescription() {
5027
+ const count = await this.vm.itemsCount();
5028
+ const size = await this.vm.availableSpace();
5029
+ const formattedSize = await this.formatService.format(size, 'filesize');
5030
+ return this.translateService.translateAsync(`scope.${resolvePlatformScopeName(this.vm.scope())}.description`, {
5031
+ scope: this.rootConfig.config.i18n,
5032
+ params: {
5033
+ count,
5034
+ size: formattedSize,
5035
+ },
5036
+ });
5037
+ }
5038
+ getBackButton() {
5039
+ if (this.vm.isUpAvailable()) {
5040
+ return {
5041
+ title: this.vm.currentPath()[this.vm.currentPath().length - 2].name,
5042
+ };
5043
+ }
5044
+ return null;
5045
+ }
5046
+ onBackButtonClick() {
5047
+ if (this.vm.isUpAvailable()) {
5048
+ this.vm.navigateToUp();
5049
+ }
5050
+ }
5051
+ async getPageBreadcrumbs() {
5052
+ return [
5053
+ {
5054
+ title: await this.translateService.translateAsync('entity.home'),
5055
+ },
5056
+ {
5057
+ title: await this.translateService.translateAsync(`scope.${resolvePlatformScopeName(this.vm.scope())}.title`, { scope: this.rootConfig.config.i18n }),
5058
+ },
5059
+ ];
5060
+ }
5061
+ async execute(command) {
5062
+ const folderId = command.options?.['folderId'];
5063
+ switch (command.name) {
5064
+ case 'new-folder':
5065
+ if (folderId) {
5066
+ await this.driveService.showCreateFolderDialog(folderId);
5067
+ this.vm.refresh();
5068
+ }
5069
+ break;
5070
+ case 'open-gallery':
5071
+ if (folderId) {
5072
+ await this.driveService.showFileViewerPopup(this.vm.currentFolder().children[0]);
5073
+ }
5074
+ break;
5075
+ default:
5076
+ if (command.name.startsWith('upload.')) {
5077
+ await this.driveService.uploadFileByType(folderId, command.options?.['documentType']?.id);
5078
+ this.vm.refresh();
5079
+ }
5080
+ break;
5081
+ }
5082
+ }
5083
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXMDocumentDriveComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
5084
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.3", type: AXMDocumentDriveComponent, isStandalone: true, selector: "axp-document-drive", host: { listeners: { "document:keydown.control": "handleCtrlKey($event)", "document:keyup.control": "handleCtrlKeyUp($event)" } }, providers: [
5085
+ AXPDocumentExplorerViewModel,
5086
+ {
5087
+ provide: AXPBasePage,
5088
+ useExisting: AXMDocumentDriveComponent,
5089
+ },
5090
+ ], viewQueries: [{ propertyName: "documentExplorer", first: true, predicate: AXMDocumentExplorerComponent, descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<!-- Main Layout -->\n<axp-page-layout *translate=\"let t\">\n <axp-page-toolbar>\n <!-- Left Side Toolbar -->\n <axp-layout-prefix>\n @if(vm.hasMultipleSelectedItems() ) {\n <div class=\"ax-flex ax-gap-3 ax-items-center ax-h-10\">\n <span class=\"ax-text-xl ax-font-bold\">\n {{ vm.selectedCount() }} {{ t('itemsSelected', { scope: 'common' }) | async }}\n </span>\n <span (click)=\"vm.deselectAll()\" class=\"ax-text-sm ax-text-secondary ax-underline ax-cursor-pointer\">{{\n t('unselect', { scope: 'common' }) | async\n }}</span>\n </div>\n }\n <!---------->\n @else {\n <!-- Filter Dropdown -->\n <ax-button [text]=\"t(getFilterText(), { scope: rootConfig.config.i18n }) | async\">\n <ax-prefix>\n <ax-icon [icon]=\"getFilterIcon()\"></ax-icon>\n </ax-prefix>\n\n <ax-dropdown-panel>\n <ax-button-item-list class=\"ax-p-2\">\n @for(item of filterItems(); track item.key) {\n <ax-button-item\n (onClick)=\"setFilter(item.key)\"\n [text]=\"(t(item.textKey, { scope: rootConfig.config.i18n }) | async)!\"\n >\n <ax-prefix>\n <ax-icon [icon]=\"item.icon\"></ax-icon>\n </ax-prefix>\n </ax-button-item>\n }\n </ax-button-item-list>\n </ax-dropdown-panel>\n </ax-button>\n <!-- Search Box -->\n <ax-search-box\n (onValueChanged)=\"handleSearchChange($event)\"\n class=\"ax-w-72 ax-hidden md:ax-flex\"\n [placeholder]=\"t('actions.search', { scope: rootConfig.config.i18n }) | async\"\n ><ax-clear-button></ax-clear-button\n ></ax-search-box>\n }\n </axp-layout-prefix>\n\n <!-- Right Side Toolbar -->\n <axp-layout-suffix>\n <!-- Sort Dropdown -->\n <ax-button>\n <ax-icon\n [icon]=\"'fa-light fa-arrow-' + (vm.sortDirection() === 'asc' ? 'up' : 'down') + '-wide-short'\"\n ></ax-icon>\n <ax-dropdown-panel>\n <ax-button-item-list>\n <!-- Sort By Options -->\n @for(item of sortItems(); track item.key) {\n <ax-button-item\n [text]=\"(t(item.textKey, { scope: rootConfig.config.i18n }) | async)!\"\n (onClick)=\"vm.setSortField(item.key)\"\n [selected]=\"vm.sortField() === item.key\"\n >\n <ax-prefix>\n <ax-icon [icon]=\"item.icon\"></ax-icon>\n </ax-prefix>\n </ax-button-item>\n }\n <ax-divider></ax-divider>\n <!-- Sort Direction Options -->\n <ax-button-item\n [text]=\"(t('actions.sort-ascending', { scope: rootConfig.config.i18n }) | async)!\"\n [selected]=\"vm.sortDirection() === 'asc'\"\n (onClick)=\"vm.setSortDirection('asc')\"\n >\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-arrow-up-wide-short\"></ax-icon>\n </ax-prefix>\n </ax-button-item>\n <ax-button-item\n [text]=\"(t('actions.sort-descending', { scope: rootConfig.config.i18n }) | async)!\"\n [selected]=\"vm.sortDirection() === 'desc'\"\n (onClick)=\"vm.setSortDirection('desc')\"\n >\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-arrow-down-wide-short\"></ax-icon>\n </ax-prefix>\n </ax-button-item>\n </ax-button-item-list>\n </ax-dropdown-panel>\n </ax-button>\n\n <!-- View Mode Toggle -->\n <ax-button>\n <ax-icon icon=\"fa-light {{ selectedViewMode().icon }}\"></ax-icon>\n <ax-dropdown-panel>\n <ax-button-item-list>\n @for(item of viewsItems(); track item.key) {\n <!-- view mode items -->\n <ax-button-item\n [text]=\"(t('view-modes.' + item.key, { scope: rootConfig.config.i18n }) | async)!\"\n [selected]=\"vm.isViewMode(item.key)\"\n (onClick)=\"vm.setViewMode(item.key)\"\n >\n <ax-prefix>\n <ax-icon icon=\"fa-light {{ item.icon }}\"></ax-icon>\n </ax-prefix>\n </ax-button-item>\n @if(item.break) {\n <ax-divider></ax-divider>\n }\n <!-- end of view mode items -->\n }\n </ax-button-item-list>\n </ax-dropdown-panel>\n </ax-button>\n\n @if(layoutService.isLarge()) {\n <!-- Detail Panel Toggle -->\n <ax-button (onClick)=\"vm.toggleDetailPanel()\">\n <ax-icon icon=\"{{ vm.isDetailPanelOpen() ? 'fa-solid fa-square-info' : 'fa-light fa-square-info' }}\"></ax-icon>\n </ax-button>\n }\n </axp-layout-suffix>\n </axp-page-toolbar>\n\n <!-- Content Section -->\n <axp-page-content class=\"ax-overflow-auto ax-flex ax-flex-row ax-gap-4\">\n <axm-document-explorer [selectionMode]=\"selectionMode()\"></axm-document-explorer>\n @if (vm.isDetailPanelOpen() && layoutService.isLarge()) {\n <axm-document-explorer-detail-panel class=\"ax-sticky ax-top-0 ax-z-50\"></axm-document-explorer-detail-panel>\n }\n </axp-page-content>\n\n <!-- Footer Section -->\n @if(!layoutService.isSmall()) {\n <axp-page-footer>\n <axp-layout-prefix>\n <axm-folder-path-breadcrumbs></axm-folder-path-breadcrumbs>\n </axp-layout-prefix>\n </axp-page-footer>\n }\n</axp-page-layout>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i1$1.AsyncPipe, name: "async" }, { kind: "ngmodule", type: RouterModule }, { kind: "ngmodule", type:
5091
+ //
5092
+ AXMenuModule }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i2$3.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "component", type: i2$3.AXButtonItemComponent, selector: "ax-button-item", inputs: ["color", "disabled", "text", "selected", "divided", "data", "name"], outputs: ["onClick", "onFocus", "onBlur", "disabledChange"] }, { kind: "component", type: i2$3.AXButtonItemListComponent, selector: "ax-button-item-list", inputs: ["items"], outputs: ["onItemClick"] }, { kind: "ngmodule", type: AXButtonGroupModule }, { kind: "ngmodule", type: AXDropdownButtonModule }, { kind: "ngmodule", type: AXDropdownModule }, { kind: "component", type: i3$3.AXDropdownPanelComponent, selector: "ax-dropdown-panel", inputs: ["isOpen", "fitParent", "dropdownWidth", "position", "placement", "_target", "adaptivityEnabled"], outputs: ["onOpened", "onClosed"] }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "directive", type: i4$1.AXTranslatorDirective, selector: "[translate]" }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i2$1.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: i2$1.AXDecoratorClearButtonComponent, selector: "ax-clear-button", inputs: ["icon"] }, { kind: "component", type: i2$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: AXLoadingModule }, { kind: "ngmodule", type: AXBreadcrumbsModule }, { kind: "ngmodule", type: AXBadgeModule }, { kind: "ngmodule", type: AXSearchBoxModule }, { kind: "component", type: i6$1.AXSearchBoxComponent, selector: "ax-search-box", inputs: ["disabled", "readonly", "tabIndex", "placeholder", "value", "state", "name", "id", "look", "class", "delayTime", "type"], outputs: ["valueChange", "stateChange", "onValueChanged", "onBlur", "onFocus", "readonlyChange", "disabledChange", "onKeyDown", "onKeyUp", "onKeyPress"] }, { kind: "ngmodule", type: AXFormatModule }, { kind: "ngmodule", type: AXFileModule }, { kind: "ngmodule", type: AXDateTimeModule }, { kind: "component", type:
5093
+ //
5094
+ AXPPageLayoutComponent, selector: "axp-page-layout" }, { kind: "component", type: AXPThemeLayoutBlockComponent, selector: " axp-page-content, axp-page-footer, axp-page-header, axp-page-toolbar, axp-layout-content, axp-layout-page-content, axp-layout-sections, axp-layout-body, axp-layout-container, axp-layout-page-body, axp-layout-prefix, axp-layout-suffix, axp-layout-title-bar, axp-layout-title, axp-layout-title-actions, axp-layout-nav-button, axp-layout-description, axp-layout-breadcrumbs, axp-layout-list-action, " }, { kind: "component", type:
5095
+ //
5096
+ AXMDocumentExplorerComponent, selector: "axm-document-explorer", inputs: ["browseMode", "viewMode", "selectionMode", "showContextMenu"] }, { kind: "component", type: AXMFolderPathBreadcrumbsComponent, selector: "axm-folder-path-breadcrumbs" }, { kind: "component", type: AXMDocumentExplorerDetailPanelComponent, selector: "axm-document-explorer-detail-panel" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
5097
+ }
5098
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXMDocumentDriveComponent, decorators: [{
5099
+ type: Component,
5100
+ args: [{ selector: 'axp-document-drive', standalone: true, imports: [
5101
+ CommonModule,
5102
+ RouterModule,
5103
+ //
5104
+ AXMenuModule,
5105
+ AXButtonModule,
5106
+ AXButtonGroupModule,
5107
+ AXDropdownButtonModule,
5108
+ AXDropdownModule,
5109
+ AXTranslationModule,
5110
+ AXDecoratorModule,
5111
+ AXLoadingModule,
5112
+ AXBreadcrumbsModule,
5113
+ AXBadgeModule,
5114
+ AXSearchBoxModule,
5115
+ AXFormatModule,
5116
+ AXFileModule,
5117
+ AXDateTimeModule,
5118
+ //
5119
+ AXPPageLayoutComponent,
5120
+ AXPThemeLayoutBlockComponent,
5121
+ //
5122
+ AXMDocumentExplorerComponent,
5123
+ AXMFolderPathBreadcrumbsComponent,
5124
+ AXMDocumentExplorerDetailPanelComponent,
5125
+ ], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, providers: [
5126
+ AXPDocumentExplorerViewModel,
5127
+ {
5128
+ provide: AXPBasePage,
5129
+ useExisting: AXMDocumentDriveComponent,
5130
+ },
5131
+ ], template: "<!-- Main Layout -->\n<axp-page-layout *translate=\"let t\">\n <axp-page-toolbar>\n <!-- Left Side Toolbar -->\n <axp-layout-prefix>\n @if(vm.hasMultipleSelectedItems() ) {\n <div class=\"ax-flex ax-gap-3 ax-items-center ax-h-10\">\n <span class=\"ax-text-xl ax-font-bold\">\n {{ vm.selectedCount() }} {{ t('itemsSelected', { scope: 'common' }) | async }}\n </span>\n <span (click)=\"vm.deselectAll()\" class=\"ax-text-sm ax-text-secondary ax-underline ax-cursor-pointer\">{{\n t('unselect', { scope: 'common' }) | async\n }}</span>\n </div>\n }\n <!---------->\n @else {\n <!-- Filter Dropdown -->\n <ax-button [text]=\"t(getFilterText(), { scope: rootConfig.config.i18n }) | async\">\n <ax-prefix>\n <ax-icon [icon]=\"getFilterIcon()\"></ax-icon>\n </ax-prefix>\n\n <ax-dropdown-panel>\n <ax-button-item-list class=\"ax-p-2\">\n @for(item of filterItems(); track item.key) {\n <ax-button-item\n (onClick)=\"setFilter(item.key)\"\n [text]=\"(t(item.textKey, { scope: rootConfig.config.i18n }) | async)!\"\n >\n <ax-prefix>\n <ax-icon [icon]=\"item.icon\"></ax-icon>\n </ax-prefix>\n </ax-button-item>\n }\n </ax-button-item-list>\n </ax-dropdown-panel>\n </ax-button>\n <!-- Search Box -->\n <ax-search-box\n (onValueChanged)=\"handleSearchChange($event)\"\n class=\"ax-w-72 ax-hidden md:ax-flex\"\n [placeholder]=\"t('actions.search', { scope: rootConfig.config.i18n }) | async\"\n ><ax-clear-button></ax-clear-button\n ></ax-search-box>\n }\n </axp-layout-prefix>\n\n <!-- Right Side Toolbar -->\n <axp-layout-suffix>\n <!-- Sort Dropdown -->\n <ax-button>\n <ax-icon\n [icon]=\"'fa-light fa-arrow-' + (vm.sortDirection() === 'asc' ? 'up' : 'down') + '-wide-short'\"\n ></ax-icon>\n <ax-dropdown-panel>\n <ax-button-item-list>\n <!-- Sort By Options -->\n @for(item of sortItems(); track item.key) {\n <ax-button-item\n [text]=\"(t(item.textKey, { scope: rootConfig.config.i18n }) | async)!\"\n (onClick)=\"vm.setSortField(item.key)\"\n [selected]=\"vm.sortField() === item.key\"\n >\n <ax-prefix>\n <ax-icon [icon]=\"item.icon\"></ax-icon>\n </ax-prefix>\n </ax-button-item>\n }\n <ax-divider></ax-divider>\n <!-- Sort Direction Options -->\n <ax-button-item\n [text]=\"(t('actions.sort-ascending', { scope: rootConfig.config.i18n }) | async)!\"\n [selected]=\"vm.sortDirection() === 'asc'\"\n (onClick)=\"vm.setSortDirection('asc')\"\n >\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-arrow-up-wide-short\"></ax-icon>\n </ax-prefix>\n </ax-button-item>\n <ax-button-item\n [text]=\"(t('actions.sort-descending', { scope: rootConfig.config.i18n }) | async)!\"\n [selected]=\"vm.sortDirection() === 'desc'\"\n (onClick)=\"vm.setSortDirection('desc')\"\n >\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-arrow-down-wide-short\"></ax-icon>\n </ax-prefix>\n </ax-button-item>\n </ax-button-item-list>\n </ax-dropdown-panel>\n </ax-button>\n\n <!-- View Mode Toggle -->\n <ax-button>\n <ax-icon icon=\"fa-light {{ selectedViewMode().icon }}\"></ax-icon>\n <ax-dropdown-panel>\n <ax-button-item-list>\n @for(item of viewsItems(); track item.key) {\n <!-- view mode items -->\n <ax-button-item\n [text]=\"(t('view-modes.' + item.key, { scope: rootConfig.config.i18n }) | async)!\"\n [selected]=\"vm.isViewMode(item.key)\"\n (onClick)=\"vm.setViewMode(item.key)\"\n >\n <ax-prefix>\n <ax-icon icon=\"fa-light {{ item.icon }}\"></ax-icon>\n </ax-prefix>\n </ax-button-item>\n @if(item.break) {\n <ax-divider></ax-divider>\n }\n <!-- end of view mode items -->\n }\n </ax-button-item-list>\n </ax-dropdown-panel>\n </ax-button>\n\n @if(layoutService.isLarge()) {\n <!-- Detail Panel Toggle -->\n <ax-button (onClick)=\"vm.toggleDetailPanel()\">\n <ax-icon icon=\"{{ vm.isDetailPanelOpen() ? 'fa-solid fa-square-info' : 'fa-light fa-square-info' }}\"></ax-icon>\n </ax-button>\n }\n </axp-layout-suffix>\n </axp-page-toolbar>\n\n <!-- Content Section -->\n <axp-page-content class=\"ax-overflow-auto ax-flex ax-flex-row ax-gap-4\">\n <axm-document-explorer [selectionMode]=\"selectionMode()\"></axm-document-explorer>\n @if (vm.isDetailPanelOpen() && layoutService.isLarge()) {\n <axm-document-explorer-detail-panel class=\"ax-sticky ax-top-0 ax-z-50\"></axm-document-explorer-detail-panel>\n }\n </axp-page-content>\n\n <!-- Footer Section -->\n @if(!layoutService.isSmall()) {\n <axp-page-footer>\n <axp-layout-prefix>\n <axm-folder-path-breadcrumbs></axm-folder-path-breadcrumbs>\n </axp-layout-prefix>\n </axp-page-footer>\n }\n</axp-page-layout>\n" }]
5132
+ }], propDecorators: { handleCtrlKey: [{
5133
+ type: HostListener,
5134
+ args: ['document:keydown.control', ['$event']]
5135
+ }], handleCtrlKeyUp: [{
5136
+ type: HostListener,
5137
+ args: ['document:keyup.control', ['$event']]
5138
+ }] } });
5139
+
5140
+ var drive_component = /*#__PURE__*/Object.freeze({
5141
+ __proto__: null,
5142
+ AXMDocumentDriveComponent: AXMDocumentDriveComponent
5143
+ });
5144
+
5145
+ class AXMDocumentAttachmentWidgetEditComponent extends AXPWidgetComponent {
5146
+ constructor() {
5147
+ super(...arguments);
5148
+ this.vm = inject(AXPDocumentExplorerViewModel);
5149
+ this.rootConfig = RootConfig;
5150
+ this.sessionService = inject(AXPSessionService);
5151
+ this.fileService = inject(AXFileService);
5152
+ this.fileStorageService = inject(AXPFileStorageService);
5153
+ this.driveService = inject(AXMDocumentManagerService);
5154
+ this.documentExplorer = viewChild(AXMDocumentExplorerComponent);
5155
+ this.scopes = AXPPlatformScope;
5156
+ this.multiple = computed(() => this.options()['multiple']);
5157
+ this.entity = computed(() => this.options()['entity']);
5158
+ this.entityRecordId = computed(() => this.options()['record']);
5159
+ }
5160
+ async ngOnDestroy() {
5161
+ const status = this.layoutService.status();
5162
+ if (status == AXPPageStatus.Submitted) {
5163
+ const oldFiles = await this.driveService.getAllFiles({
5164
+ skip: 0,
5165
+ take: 1000,
5166
+ filter: {
5167
+ logic: 'and',
5168
+ filters: [
5169
+ {
5170
+ field: 'refRecordId',
5171
+ operator: {
5172
+ type: 'equal',
5173
+ },
5174
+ value: this.entityRecordId() ?? this.contextService.data()?.id,
5175
+ },
5176
+ {
5177
+ field: 'refEntity',
5178
+ operator: {
5179
+ type: 'equal',
5180
+ },
5181
+ value: this.entity(),
5182
+ },
5183
+ ],
5184
+ },
5185
+ });
5186
+ const filesToDelete = oldFiles.filter((file) => !this.vm.files().some((f) => f.id === file.id));
5187
+ this.driveService.deleteNodes(filesToDelete);
5188
+ const files = this.vm.files();
5189
+ for (const file of files) {
5190
+ if (file.fileId && file.storageType == 'virtual') {
5191
+ //TODO: Check logic if correct or not
5192
+ if (file.fileId && file.fileId.startsWith('http')) {
5193
+ this.fileStorageService.commit(file.fileId);
5194
+ }
5195
+ this.driveService.createFile({
5196
+ fileId: file.fileId,
5197
+ name: file.name,
5198
+ parentId: '123',
5199
+ size: file.size,
5200
+ title: file.name,
5201
+ refEntity: this.entity(),
5202
+ refRecordId: this.entityRecordId(),
5203
+ });
5204
+ }
5205
+ }
5206
+ }
5207
+ }
5208
+ async ngOnInit() {
5209
+ super.ngOnInit();
5210
+ const files = await this.driveService.getAllFiles({
5211
+ skip: 0,
5212
+ take: 1000,
5213
+ filter: {
5214
+ logic: 'and',
5215
+ filters: [
5216
+ {
5217
+ field: 'refRecordId',
5218
+ operator: {
5219
+ type: 'equal',
5220
+ },
5221
+ value: this.entityRecordId(),
5222
+ },
5223
+ {
5224
+ field: 'refEntity',
5225
+ operator: {
5226
+ type: 'equal',
5227
+ },
5228
+ value: this.entity(),
5229
+ },
5230
+ ],
5231
+ },
5232
+ });
5233
+ this.vm.initialize({ browseMode: 'file' });
5234
+ this.vm.virtualFolder(files);
5235
+ }
5236
+ async chooseFromDrive(scope) {
5237
+ const result = ((await this.documentExplorer()?.chooseFile(scope)) ?? []).map((item) => ({
5238
+ ...item,
5239
+ id: AXPDataGenerator.uuid(),
5240
+ storageType: 'virtual',
5241
+ parentId: 'virtual',
5242
+ }));
5243
+ const exists = this.vm.files();
5244
+ await this.updateContents([...exists, ...result]);
5245
+ }
5246
+ async uploadFromComputer() {
5247
+ const files = await this.fileService.choose();
5248
+ const allFiles = this.vm.files();
5249
+ for await (const file of files) {
5250
+ const f = await this.fileStorageService.save({
5251
+ file: file,
5252
+ category: '',
5253
+ refId: this.entityRecordId(),
5254
+ refType: this.entity(),
5255
+ });
5256
+ allFiles.push({
5257
+ id: f.fileId,
5258
+ fileId: f.fileId,
5259
+ // name: `test.${f.mimeType.split('/')[1]}`,
5260
+ name: file.name,
5261
+ size: f.size,
5262
+ parentId: 'virtual',
5263
+ type: 'file',
5264
+ storageType: 'virtual',
5265
+ });
5266
+ }
5267
+ await this.updateContents(allFiles);
5268
+ }
5269
+ async updateContents(files) {
5270
+ if (this.multiple()) {
5271
+ await this.vm.virtualFolder(files);
5272
+ //this.setValue(files);
5273
+ }
5274
+ else {
5275
+ await this.vm.virtualFolder([files[files.length - 1]]);
5276
+ //this.setValue([files[files.length - 1]]);
5277
+ }
4500
5278
  }
4501
5279
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXMDocumentAttachmentWidgetEditComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
4502
- 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 }); }
5280
+ 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-end\">\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)=\"uploadFromComputer()\"\n [text]=\"(t('actions.upload-from-device', { 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\n <ax-divider></ax-divider>\n\n <ax-button-item\n (onClick)=\"chooseFromDrive(scopes.User)\"\n [text]=\"(t('actions.choose-from-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\n (onClick)=\"chooseFromDrive(scopes.Tenant)\"\n [text]=\"(t('actions.choose-from-organization', { 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: "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: i3$3.AXDropdownPanelComponent, selector: "ax-dropdown-panel", inputs: ["isOpen", "fitParent", "dropdownWidth", "position", "placement", "_target", "adaptivityEnabled"], outputs: ["onOpened", "onClosed"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i2$1.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: i2$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$3.AXButtonItemComponent, selector: "ax-button-item", inputs: ["color", "disabled", "text", "selected", "divided", "data", "name"], outputs: ["onClick", "onFocus", "onBlur", "disabledChange"] }, { kind: "component", type: i2$3.AXButtonItemListComponent, selector: "ax-button-item-list", inputs: ["items"], outputs: ["onItemClick"] }, { kind: "ngmodule", type: AXButtonGroupModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
4503
5281
  }
4504
5282
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXMDocumentAttachmentWidgetEditComponent, decorators: [{
4505
5283
  type: Component,
@@ -4513,7 +5291,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImpor
4513
5291
  AXTranslationModule,
4514
5292
  AXButtonModule,
4515
5293
  AXButtonGroupModule,
4516
- ], inputs: [], providers: [AXPDocumentExplorerViewModel], template: "<div class=\"ax-flex ax-flex-col ax-gap-3\" *translate=\"let t\">\n <!-- Header Section -->\n <div class=\"ax-flex ax-flex-row ax-justify-between\">\n <ax-button\n (onClick)=\"handleNavigateToFolder(vm.currentFolder()?.parentId!)\"\n [ngClass]=\"{ 'ax-invisible': !vm.currentFolder()?.parentId }\"\n >\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-arrow-left\"></ax-icon>\n </ax-prefix>\n </ax-button>\n <!-- Primary Actions -->\n <ax-button [text]=\"t('actions.add-item', { scope: rootConfig.config.i18n }) | async\" [color]=\"'primary'\">\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-plus\"></ax-icon>\n </ax-prefix>\n <ax-dropdown-panel>\n <!-- Upload Dropdown -->\n <ax-button-item-list>\n <ax-button-item\n (onClick)=\"documentExplorer()?.chooseFile()\"\n [text]=\"(t('drive-types.platform-drive', { scope: rootConfig.config.i18n }) | async)!\"\n >\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-file-arrow-up\"></ax-icon>\n </ax-prefix>\n </ax-button-item>\n </ax-button-item-list>\n </ax-dropdown-panel>\n </ax-button>\n </div>\n <axm-document-explorer></axm-document-explorer>\n</div>\n" }]
5294
+ ], providers: [AXPDocumentExplorerViewModel], template: "<div class=\"ax-flex ax-flex-col ax-gap-3\" *translate=\"let t\">\n <!-- Header Section -->\n <div class=\"ax-flex ax-flex-row ax-justify-end\">\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)=\"uploadFromComputer()\"\n [text]=\"(t('actions.upload-from-device', { 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\n <ax-divider></ax-divider>\n\n <ax-button-item\n (onClick)=\"chooseFromDrive(scopes.User)\"\n [text]=\"(t('actions.choose-from-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\n (onClick)=\"chooseFromDrive(scopes.Tenant)\"\n [text]=\"(t('actions.choose-from-organization', { 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" }]
4517
5295
  }] });
4518
5296
 
4519
5297
  var documentAttachmentWidgetEdit_component = /*#__PURE__*/Object.freeze({
@@ -4521,25 +5299,6 @@ var documentAttachmentWidgetEdit_component = /*#__PURE__*/Object.freeze({
4521
5299
  AXMDocumentAttachmentWidgetEditComponent: AXMDocumentAttachmentWidgetEditComponent
4522
5300
  });
4523
5301
 
4524
- class AXMDocumentAttachmentWidgetFilterComponent extends AXPWidgetComponent {
4525
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXMDocumentAttachmentWidgetFilterComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
4526
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.0.3", type: AXMDocumentAttachmentWidgetFilterComponent, isStandalone: true, selector: "ng-component", usesInheritance: true, ngImport: i0, template: ``, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
4527
- }
4528
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXMDocumentAttachmentWidgetFilterComponent, decorators: [{
4529
- type: Component,
4530
- args: [{
4531
- template: ``,
4532
- changeDetection: ChangeDetectionStrategy.OnPush,
4533
- imports: [CommonModule, FormsModule],
4534
- inputs: [],
4535
- }]
4536
- }] });
4537
-
4538
- var documentAttachmentWidgetFilter_component = /*#__PURE__*/Object.freeze({
4539
- __proto__: null,
4540
- AXMDocumentAttachmentWidgetFilterComponent: AXMDocumentAttachmentWidgetFilterComponent
4541
- });
4542
-
4543
5302
  class AXMDocumentAttachmentWidgetPrintComponent extends AXPWidgetComponent {
4544
5303
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXMDocumentAttachmentWidgetPrintComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
4545
5304
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.0.3", type: AXMDocumentAttachmentWidgetPrintComponent, isStandalone: true, selector: "ng-component", usesInheritance: true, ngImport: i0, template: ``, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
@@ -4574,30 +5333,22 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImpor
4574
5333
  }]
4575
5334
  }] });
4576
5335
 
4577
- var documentAttachmentWidgetView_component = /*#__PURE__*/Object.freeze({
4578
- __proto__: null,
4579
- AXMDocumentAttachmentWidgetViewComponent: AXMDocumentAttachmentWidgetViewComponent
4580
- });
4581
-
4582
5336
  const AXMDocumentAttachmentWidget = {
4583
5337
  name: 'document-attachment-editor',
4584
5338
  title: 'DocumentAttachment',
4585
- icon: 'fa-solid fa-gallery',
5339
+ icon: 'fa-light fa-gallery',
4586
5340
  description: 'My custom widget',
4587
- group: AXP_WIDGETS_EDITOR_GROUP,
5341
+ categories: AXP_WIDGETS_EDITOR_CATEGORY,
4588
5342
  type: 'editor',
4589
5343
  defaultFilterWidgetName: 'string-filter',
4590
5344
  properties: [AXP_NAME_PROPERTY, AXP_DATA_PATH_PROPERTY],
4591
5345
  components: {
4592
5346
  view: {
4593
- component: () => Promise.resolve().then(function () { return documentAttachmentWidgetView_component; }).then((c) => c.AXMDocumentAttachmentWidgetViewComponent),
5347
+ component: () => Promise.resolve().then(function () { return documentAttachmentWidgetEdit_component; }).then((c) => c.AXMDocumentAttachmentWidgetEditComponent),
4594
5348
  },
4595
5349
  edit: {
4596
5350
  component: () => Promise.resolve().then(function () { return documentAttachmentWidgetEdit_component; }).then((c) => c.AXMDocumentAttachmentWidgetEditComponent),
4597
5351
  },
4598
- filter: {
4599
- component: () => Promise.resolve().then(function () { return documentAttachmentWidgetFilter_component; }).then((c) => c.AXMDocumentAttachmentWidgetFilterComponent),
4600
- },
4601
5352
  column: {
4602
5353
  component: () => Promise.resolve().then(function () { return documentAttachmentWidgetColumn_component; }).then((c) => c.AXMDocumentAttachmentWidgetColumnComponent),
4603
5354
  },
@@ -4689,6 +5440,23 @@ const AXMUploadWorkflow = {
4689
5440
  },
4690
5441
  };
4691
5442
 
5443
+ class AXMTaskBadgeProviderSample1 {
5444
+ constructor() {
5445
+ this.count = signal(0);
5446
+ this.key = 'badge-1';
5447
+ this.count.set(10);
5448
+ }
5449
+ }
5450
+ class AXMTaskBadgeProviderSample2 {
5451
+ constructor() {
5452
+ this.count = signal(5);
5453
+ this.key = 'badge-2';
5454
+ setInterval(() => {
5455
+ this.count.update(c => c + 1);
5456
+ }, 30000);
5457
+ }
5458
+ }
5459
+
4692
5460
  function routesFacory() {
4693
5461
  const config = inject(AXP_ENTITY_CONFIG_TOKEN);
4694
5462
  const routes = [
@@ -4702,11 +5470,11 @@ function routesFacory() {
4702
5470
  children: [
4703
5471
  {
4704
5472
  path: '',
4705
- loadComponent: () => import('./acorex-modules-document-management-drive.component-B3BCzdVv.mjs').then((c) => c.AXMDocumentDriveComponent),
5473
+ loadComponent: () => Promise.resolve().then(function () { return drive_component; }).then((c) => c.AXMDocumentDriveComponent),
4706
5474
  },
4707
5475
  {
4708
5476
  path: ':id',
4709
- loadComponent: () => import('./acorex-modules-document-management-drive.component-B3BCzdVv.mjs').then((c) => c.AXMDocumentDriveComponent),
5477
+ loadComponent: () => Promise.resolve().then(function () { return drive_component; }).then((c) => c.AXMDocumentDriveComponent),
4710
5478
  },
4711
5479
  ],
4712
5480
  },
@@ -4750,6 +5518,16 @@ class AXMDocumentManagementModule {
4750
5518
  useClass: AXMPermissionProvider,
4751
5519
  multi: true,
4752
5520
  },
5521
+ {
5522
+ provide: AXP_TASK_BADGE_PROVIDERS,
5523
+ useClass: AXMTaskBadgeProviderSample1,
5524
+ multi: true,
5525
+ },
5526
+ {
5527
+ provide: AXP_TASK_BADGE_PROVIDERS,
5528
+ useClass: AXMTaskBadgeProviderSample2,
5529
+ multi: true,
5530
+ },
4753
5531
  {
4754
5532
  provide: ROUTES,
4755
5533
  multi: true,
@@ -4832,6 +5610,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImpor
4832
5610
  useClass: AXMPermissionProvider,
4833
5611
  multi: true,
4834
5612
  },
5613
+ {
5614
+ provide: AXP_TASK_BADGE_PROVIDERS,
5615
+ useClass: AXMTaskBadgeProviderSample1,
5616
+ multi: true,
5617
+ },
5618
+ {
5619
+ provide: AXP_TASK_BADGE_PROVIDERS,
5620
+ useClass: AXMTaskBadgeProviderSample2,
5621
+ multi: true,
5622
+ },
4835
5623
  {
4836
5624
  provide: ROUTES,
4837
5625
  multi: true,
@@ -4845,5 +5633,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImpor
4845
5633
  * Generated bundle index. Do not edit.
4846
5634
  */
4847
5635
 
4848
- 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 };
4849
- //# sourceMappingURL=acorex-modules-document-management-acorex-modules-document-management-_BOVaDOq.mjs.map
5636
+ export { AXMDocumentManagerService as A, AXMFolderServiceImpl as B, AXMEntityProvider as C, AXMMenuProvider as D, AXMSearchCommandProvider as E, AXMSettingProvider as F, RootConfig as R, AXMDocumentTypeService as a, AXPDocumentExplorerViewModel as b, AXMDocumentExplorerComponent 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, AXMDocumentTypeServiceImpl 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 };
5637
+ //# sourceMappingURL=acorex-modules-document-management-acorex-modules-document-management-C36haVZ_.mjs.map