@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.
- package/application-management/lib/layouts/module-entity-detail-view/module-entity-detail-view.component.d.ts +2 -2
- package/auth/lib/setting.provider.d.ts +4 -0
- package/common/index.d.ts +1 -0
- package/common/lib/entities/dashboard/dashboard.types.d.ts +1 -1
- package/common/lib/features/{dashboard-home/dashboard-home.d.ts → home-dashboard/dashboard-home/home-dashboard.d.ts} +72 -52
- package/common/lib/features/{dashboard-home/dashboard-home.store.d.ts → home-dashboard/dashboard-home/home-dashboard.store.d.ts} +9 -4
- package/common/lib/features/home-dashboard/dashboard-home/index.d.ts +3 -0
- package/common/lib/features/{dashboard-popups → home-dashboard/dashboard-popups}/add-dashboard-popup.d.ts +7 -5
- package/common/lib/features/home-dashboard/dashboard-popups/configuration-popup.d.ts +14 -0
- package/common/lib/features/{dashboard-popups → home-dashboard/dashboard-popups}/dashboard-popup.service.d.ts +5 -4
- package/common/lib/features/home-dashboard/setrting.keys.d.ts +3 -0
- package/common/lib/features/{widget-wrapper → home-dashboard/widget-wrapper}/dashboard-widget-wrapper.d.ts +2 -1
- package/common/lib/menu.provider.d.ts +1 -1
- package/conversation/lib/entities/chat/pages/chat/chat.component.d.ts +1 -1
- package/conversation/lib/entities/comments/comments.service.d.ts +4 -4
- package/conversation/lib/entities/comments/comments.type.d.ts +1 -1
- package/document-management/lib/badge.provider.d.ts +11 -0
- package/document-management/lib/entities/document/document.service.d.ts +1 -1
- package/document-management/lib/entities/document/document.types.d.ts +2 -0
- package/document-management/lib/entities/document-type/document-type.service.d.ts +3 -3
- package/document-management/lib/entities/folder/folder.service.d.ts +2 -7
- package/document-management/lib/entities/folder/folder.types.d.ts +2 -1
- package/document-management/lib/features/document-explorer/components/create-folder-dialog/create-folder-dialog.component.d.ts +9 -0
- package/document-management/lib/features/document-explorer/document-explorer.component.d.ts +20 -8
- package/document-management/lib/features/document-explorer/document-explorer.viewmodel.d.ts +10 -6
- package/document-management/lib/features/document-explorer/views/detail-panel/detail-panel.component.d.ts +40 -36
- package/document-management/lib/features/document-explorer/views/details/details-view.component.d.ts +40 -36
- package/document-management/lib/features/document-explorer/views/large-icons/large-icons-view.component.d.ts +40 -36
- package/document-management/lib/features/document-explorer/views/large-tiles/large-tiles-view.component.d.ts +40 -36
- package/document-management/lib/features/document-explorer/views/list/list-view.component.d.ts +40 -36
- package/document-management/lib/features/document-explorer/views/small-icons/small-icons-view.component.d.ts +40 -36
- package/document-management/lib/features/document-explorer/views/small-tiles/small-tiles-view.component.d.ts +40 -36
- package/document-management/lib/features/drive/drive.component.d.ts +15 -9
- package/document-management/lib/features/drive/index.d.ts +3 -0
- package/document-management/lib/features/drive-choose/drive-choose.component.d.ts +16 -8
- package/document-management/lib/features/shared/components/document-type-choose-file/document-type-choose-file.component.d.ts +16 -0
- package/document-management/lib/features/shared/components/file-viewer-popup/file-viewer-popup.component.d.ts +5 -1
- package/document-management/lib/features/shared/components/folder-path-breadcrumbs/folder-path-breadcrumbs.component.d.ts +10 -6
- package/document-management/lib/features/shared/components/index.d.ts +1 -0
- package/document-management/lib/features/shared/components/link-dialog/link-dialog.component.d.ts +24 -0
- package/document-management/lib/features/shared/components/lock-dialog/lock-dialog.component.d.ts +16 -0
- package/document-management/lib/features/shared/components/share-dialog/share-dialog.component.d.ts +22 -0
- package/document-management/lib/features/shared/components/share-email-dialog/share-email-dialog.component.d.ts +17 -0
- package/document-management/lib/features/shared/components/unlock-dialog/unlock-dialog.component.d.ts +10 -0
- package/document-management/lib/features/shared/document-manager.service.d.ts +45 -22
- package/document-management/lib/features/shared/document-manager.types.d.ts +5 -7
- package/document-management/lib/features/widgets/document-attachment/document-attachment-widget-column.component.d.ts +1 -1
- package/document-management/lib/features/widgets/document-attachment/document-attachment-widget-edit.component.d.ts +66 -44
- package/document-management/lib/features/widgets/document-attachment/document-attachment-widget-print.component.d.ts +1 -1
- package/document-management/lib/features/widgets/document-attachment/document-attachment-widget-view.component.d.ts +1 -1
- package/document-management/lib/features/widgets/document-attachment/index.d.ts +0 -1
- package/fesm2022/acorex-modules-application-management.mjs +0 -1
- package/fesm2022/acorex-modules-application-management.mjs.map +1 -1
- package/fesm2022/{acorex-modules-auth-acorex-modules-auth-DrcL7GCj.mjs → acorex-modules-auth-acorex-modules-auth-5o4GqqVA.mjs} +15 -19
- package/fesm2022/acorex-modules-auth-acorex-modules-auth-5o4GqqVA.mjs.map +1 -0
- package/fesm2022/{acorex-modules-auth-app-chooser.component-CbJb1P_k.mjs → acorex-modules-auth-app-chooser.component-NuQzP5DC.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-app-chooser.component-CbJb1P_k.mjs.map → acorex-modules-auth-app-chooser.component-NuQzP5DC.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-login.module-DFCB1l7W.mjs → acorex-modules-auth-login.module-B_WrZQJx.mjs} +4 -4
- package/fesm2022/{acorex-modules-auth-login.module-DFCB1l7W.mjs.map → acorex-modules-auth-login.module-B_WrZQJx.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-master.layout-CuKXvY0o.mjs → acorex-modules-auth-master.layout-hDbrFbwO.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-master.layout-CuKXvY0o.mjs.map → acorex-modules-auth-master.layout-hDbrFbwO.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-password.component-DacOjakT.mjs → acorex-modules-auth-password.component-BnT_IaqN.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-password.component-DacOjakT.mjs.map → acorex-modules-auth-password.component-BnT_IaqN.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-password.component-5gwz30CZ.mjs → acorex-modules-auth-password.component-DDE0M5GE.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-password.component-5gwz30CZ.mjs.map → acorex-modules-auth-password.component-DDE0M5GE.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-routes-D018Lg-b.mjs → acorex-modules-auth-routes-Da02kID6.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-routes-D018Lg-b.mjs.map → acorex-modules-auth-routes-Da02kID6.mjs.map} +1 -1
- package/fesm2022/acorex-modules-auth-setting.provider-D3A0WUgJ.mjs +271 -0
- package/fesm2022/acorex-modules-auth-setting.provider-D3A0WUgJ.mjs.map +1 -0
- package/fesm2022/{acorex-modules-auth-two-factor.module-DiEB7VWl.mjs → acorex-modules-auth-two-factor.module-BrDpX4X1.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-two-factor.module-DiEB7VWl.mjs.map → acorex-modules-auth-two-factor.module-BrDpX4X1.mjs.map} +1 -1
- package/fesm2022/acorex-modules-auth.mjs +1 -1
- package/fesm2022/acorex-modules-common-index-rvP9ISgL.mjs +717 -0
- package/fesm2022/acorex-modules-common-index-rvP9ISgL.mjs.map +1 -0
- package/fesm2022/acorex-modules-common.mjs +34 -24
- package/fesm2022/acorex-modules-common.mjs.map +1 -1
- package/fesm2022/acorex-modules-conversation.mjs +4 -2
- package/fesm2022/acorex-modules-conversation.mjs.map +1 -1
- package/fesm2022/{acorex-modules-document-management-acorex-modules-document-management-_BOVaDOq.mjs → acorex-modules-document-management-acorex-modules-document-management-C36haVZ_.mjs} +1054 -266
- package/fesm2022/acorex-modules-document-management-acorex-modules-document-management-C36haVZ_.mjs.map +1 -0
- package/fesm2022/acorex-modules-document-management-create-folder-dialog.component-C9YP1aFi.mjs +135 -0
- package/fesm2022/acorex-modules-document-management-create-folder-dialog.component-C9YP1aFi.mjs.map +1 -0
- package/fesm2022/{acorex-modules-document-management-details-view.component-BHcu_gYH.mjs → acorex-modules-document-management-details-view.component-BFMgAxeK.mjs} +2 -2
- 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
- package/fesm2022/{acorex-modules-document-management-drive-choose.component-WoZfDyLK.mjs → acorex-modules-document-management-drive-choose.component-Bo-I7TN5.mjs} +22 -16
- package/fesm2022/acorex-modules-document-management-drive-choose.component-Bo-I7TN5.mjs.map +1 -0
- 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
- 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
- package/fesm2022/{acorex-modules-document-management-large-tiles-view.component-ByWrKvZe.mjs → acorex-modules-document-management-large-tiles-view.component-Cw5yZ851.mjs} +2 -2
- 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
- package/fesm2022/acorex-modules-document-management-link-dialog.component-1iPUnhr1.mjs +70 -0
- package/fesm2022/acorex-modules-document-management-link-dialog.component-1iPUnhr1.mjs.map +1 -0
- package/fesm2022/{acorex-modules-document-management-list-view.component-B6J6Tokv.mjs → acorex-modules-document-management-list-view.component-BPkaAGjR.mjs} +2 -2
- package/fesm2022/{acorex-modules-document-management-list-view.component-B6J6Tokv.mjs.map → acorex-modules-document-management-list-view.component-BPkaAGjR.mjs.map} +1 -1
- package/fesm2022/acorex-modules-document-management-lock-dialog.component-BwKdUUcf.mjs +52 -0
- package/fesm2022/acorex-modules-document-management-lock-dialog.component-BwKdUUcf.mjs.map +1 -0
- package/fesm2022/{acorex-modules-document-management-rename-node-dialog.component-Dae6RWb8.mjs → acorex-modules-document-management-rename-node-dialog.component-DEhPxW3b.mjs} +10 -10
- package/fesm2022/acorex-modules-document-management-rename-node-dialog.component-DEhPxW3b.mjs.map +1 -0
- package/fesm2022/acorex-modules-document-management-share-dialog.component-BiNdRpqs.mjs +143 -0
- package/fesm2022/acorex-modules-document-management-share-dialog.component-BiNdRpqs.mjs.map +1 -0
- package/fesm2022/acorex-modules-document-management-share-email-dialog.component-BvR5OuCV.mjs +55 -0
- package/fesm2022/acorex-modules-document-management-share-email-dialog.component-BvR5OuCV.mjs.map +1 -0
- 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
- 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
- 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
- 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
- package/fesm2022/acorex-modules-document-management-unlock-dialog.component-DkZQ84kg.mjs +37 -0
- package/fesm2022/acorex-modules-document-management-unlock-dialog.component-DkZQ84kg.mjs.map +1 -0
- package/fesm2022/acorex-modules-document-management.mjs +1 -1
- 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
- package/fesm2022/acorex-modules-form-template-management-acorex-modules-form-template-management-C3bCqH0S.mjs.map +1 -0
- package/fesm2022/{acorex-modules-form-template-management-category.entity-BdiYytzK.mjs → acorex-modules-form-template-management-category.entity-B8FoSfDd.mjs} +7 -3
- package/fesm2022/acorex-modules-form-template-management-category.entity-B8FoSfDd.mjs.map +1 -0
- package/fesm2022/{acorex-modules-form-template-management-setting.provider-CoETMkEC.mjs → acorex-modules-form-template-management-setting.provider-2gDLkJ82.mjs} +20 -17
- package/fesm2022/acorex-modules-form-template-management-setting.provider-2gDLkJ82.mjs.map +1 -0
- 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
- package/fesm2022/acorex-modules-form-template-management-template-picker.component-M-R2U9CH.mjs.map +1 -0
- 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
- 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
- package/fesm2022/{acorex-modules-form-template-management-template.entity-ByE2p0Mu.mjs → acorex-modules-form-template-management-template.entity-Cm57FCm7.mjs} +53 -33
- package/fesm2022/acorex-modules-form-template-management-template.entity-Cm57FCm7.mjs.map +1 -0
- package/fesm2022/{acorex-modules-form-template-management-viewer-popup.component-CThcXWpt.mjs → acorex-modules-form-template-management-viewer-popup.component-C8QVMY0f.mjs} +2 -2
- 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
- package/fesm2022/acorex-modules-form-template-management.mjs +1 -1
- package/fesm2022/acorex-modules-notification-management.mjs +43 -35
- package/fesm2022/acorex-modules-notification-management.mjs.map +1 -1
- package/fesm2022/{acorex-modules-organization-management-org-chart-configuration.page-JKQwYEPq.mjs → acorex-modules-organization-management-org-chart-configuration.page-BFu7TUGC.mjs} +3 -3
- 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
- package/fesm2022/{acorex-modules-organization-management-org-chart-configuration.service-QLdDEdqL.mjs → acorex-modules-organization-management-org-chart-configuration.service-B4ohp4o5.mjs} +5 -4
- package/fesm2022/acorex-modules-organization-management-org-chart-configuration.service-B4ohp4o5.mjs.map +1 -0
- package/fesm2022/{acorex-modules-organization-management-org-chart.page-C2ZtUVKI.mjs → acorex-modules-organization-management-org-chart.page-BIytyLYP.mjs} +3 -4
- package/fesm2022/acorex-modules-organization-management-org-chart.page-BIytyLYP.mjs.map +1 -0
- package/fesm2022/{acorex-modules-organization-management-setting.provider-CMDpwkG2.mjs → acorex-modules-organization-management-setting.provider-BPjFNA5E.mjs} +44 -23
- package/fesm2022/acorex-modules-organization-management-setting.provider-BPjFNA5E.mjs.map +1 -0
- package/fesm2022/acorex-modules-organization-management.mjs +6 -6
- package/fesm2022/acorex-modules-organization-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-platform-management-acorex-modules-platform-management-C-vMSeD0.mjs +4746 -0
- package/fesm2022/acorex-modules-platform-management-acorex-modules-platform-management-C-vMSeD0.mjs.map +1 -0
- package/fesm2022/{acorex-modules-platform-management-list-version.component-C9764yzu.mjs → acorex-modules-platform-management-list-version.component-EHtlPye1.mjs} +2 -2
- package/fesm2022/acorex-modules-platform-management-list-version.component-EHtlPye1.mjs.map +1 -0
- package/fesm2022/acorex-modules-platform-management-setting.provider-Bbd_enhk.mjs +335 -0
- package/fesm2022/acorex-modules-platform-management-setting.provider-Bbd_enhk.mjs.map +1 -0
- package/fesm2022/acorex-modules-platform-management.mjs +1 -4866
- package/fesm2022/acorex-modules-platform-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-security-management.mjs +18 -12
- package/fesm2022/acorex-modules-security-management.mjs.map +1 -1
- package/form-template-management/lib/entities/category/category.service.d.ts +2 -2
- package/form-template-management/lib/entities/category/category.types.d.ts +2 -1
- package/form-template-management/lib/entities/template/template.service.d.ts +2 -2
- package/form-template-management/lib/entities/template/template.types.d.ts +38 -5
- package/form-template-management/lib/features/designer/template.provider.d.ts +1 -1
- package/form-template-management/lib/features/designer/widgets/template-picker/template.provider.d.ts +3 -3
- package/form-template-management/lib/setting.provider.d.ts +4 -0
- package/notification-management/lib/{components → features/components}/admin-notification-item/admin-notification-item.component.d.ts +1 -1
- package/notification-management/lib/{components → features/components}/admin-notification-panel/admin-notification-panel.component.d.ts +1 -1
- package/notification-management/lib/setting.provider.d.ts +4 -0
- package/organization-management/lib/features/organization-chart/org-chart-configuration.page.d.ts +2 -2
- package/organization-management/lib/features/organization-chart/org-chart.page.d.ts +2 -2
- package/organization-management/lib/setting.provider.d.ts +5 -3
- package/package.json +1 -1
- package/platform-management/index.d.ts +1 -1
- package/platform-management/lib/entities/app-term/index.d.ts +2 -2
- package/platform-management/lib/entities/app-version/index.d.ts +2 -2
- package/platform-management/lib/entities/index.d.ts +0 -1
- package/platform-management/lib/entities/promotion/index.d.ts +1 -1
- package/platform-management/lib/features/app-terms/check-terms.service.d.ts +11 -0
- package/platform-management/lib/{entities/app-term → features/app-terms}/components/notify-app/notify-app.component.d.ts +1 -1
- package/platform-management/lib/{entities/app-term → features/app-terms}/pages/list/list-terms.component.d.ts +2 -2
- package/platform-management/lib/{entities/check-version.d.ts → features/app-version/check-version.service.d.ts} +3 -4
- package/platform-management/lib/{entities → features}/app-version/components/list-versions/list-version.component.d.ts +1 -1
- package/platform-management/lib/{entities → features}/app-version/components/notify-app/notify-app.component.d.ts +1 -1
- package/platform-management/lib/{common → features/common}/index.d.ts +1 -1
- package/platform-management/lib/{common → features/common}/regional/setting.keys.d.ts +3 -1
- package/platform-management/lib/{common → features/common}/regional/setting.provider.d.ts +4 -1
- package/platform-management/lib/{entities → features}/promotion/components/promotion-slot/promotion-slot.component.d.ts +2 -2
- package/platform-management/lib/platform-management.module.d.ts +4 -3
- package/security-management/lib/entities/users/users.service.d.ts +4 -4
- package/security-management/lib/entities/users/users.types.d.ts +0 -4
- package/common/lib/features/dashboard-home/index.d.ts +0 -1
- package/document-management/lib/features/widgets/document-attachment/document-attachment-widget-filter.component.d.ts +0 -6
- package/fesm2022/acorex-modules-auth-acorex-modules-auth-DrcL7GCj.mjs.map +0 -1
- package/fesm2022/acorex-modules-auth-setting.provider-DDl3OHw6.mjs +0 -59
- package/fesm2022/acorex-modules-auth-setting.provider-DDl3OHw6.mjs.map +0 -1
- package/fesm2022/acorex-modules-common-index-D90SN6SH.mjs +0 -507
- package/fesm2022/acorex-modules-common-index-D90SN6SH.mjs.map +0 -1
- package/fesm2022/acorex-modules-document-management-acorex-modules-document-management-_BOVaDOq.mjs.map +0 -1
- package/fesm2022/acorex-modules-document-management-create-folder-dialog.component-D66KoQNb.mjs +0 -92
- package/fesm2022/acorex-modules-document-management-create-folder-dialog.component-D66KoQNb.mjs.map +0 -1
- package/fesm2022/acorex-modules-document-management-drive-choose.component-WoZfDyLK.mjs.map +0 -1
- package/fesm2022/acorex-modules-document-management-drive.component-B3BCzdVv.mjs +0 -305
- package/fesm2022/acorex-modules-document-management-drive.component-B3BCzdVv.mjs.map +0 -1
- package/fesm2022/acorex-modules-document-management-rename-node-dialog.component-Dae6RWb8.mjs.map +0 -1
- package/fesm2022/acorex-modules-form-template-management-acorex-modules-form-template-management-CJYrDtq6.mjs.map +0 -1
- package/fesm2022/acorex-modules-form-template-management-category.entity-BdiYytzK.mjs.map +0 -1
- package/fesm2022/acorex-modules-form-template-management-setting.provider-CoETMkEC.mjs.map +0 -1
- package/fesm2022/acorex-modules-form-template-management-template-picker.component-0JfGxdMv.mjs.map +0 -1
- package/fesm2022/acorex-modules-form-template-management-template.entity-ByE2p0Mu.mjs.map +0 -1
- package/fesm2022/acorex-modules-organization-management-org-chart-configuration.service-QLdDEdqL.mjs.map +0 -1
- package/fesm2022/acorex-modules-organization-management-org-chart.page-C2ZtUVKI.mjs.map +0 -1
- package/fesm2022/acorex-modules-organization-management-setting.provider-CMDpwkG2.mjs.map +0 -1
- package/fesm2022/acorex-modules-platform-management-list-version.component-C9764yzu.mjs.map +0 -1
- /package/common/lib/features/{dashboard-home/dashboard.type.d.ts → home-dashboard/dashboard-home/home-dashboard.type.d.ts} +0 -0
- /package/notification-management/lib/{components → features/components}/admin-notification-slot/admin-notification-slot.component.d.ts +0 -0
- /package/platform-management/lib/{entities/app-term → features/app-terms}/pages/index.d.ts +0 -0
- /package/platform-management/lib/{entities/app-term → features/app-terms}/workflows/index.d.ts +0 -0
- /package/platform-management/lib/{entities/app-term → features/app-terms}/workflows/notify-new-term.workflow.d.ts +0 -0
- /package/platform-management/lib/{entities → features}/app-version/components/index.d.ts +0 -0
- /package/platform-management/lib/{entities → features}/app-version/components/slots/app-version-slot.component.d.ts +0 -0
- /package/platform-management/lib/{entities → features}/app-version/workflows/change-log.workflow.d.ts +0 -0
- /package/platform-management/lib/{entities → features}/app-version/workflows/index.d.ts +0 -0
- /package/platform-management/lib/{entities → features}/app-version/workflows/show-release-notes.workflow.d.ts +0 -0
- /package/platform-management/lib/{common → features/common}/common.module.d.ts +0 -0
- /package/platform-management/lib/{common → features/common}/entity.provider.d.ts +0 -0
- /package/platform-management/lib/{common → features/common}/regional/data-source.provider.d.ts +0 -0
- /package/platform-management/lib/{common → features/common}/regional/index.d.ts +0 -0
- /package/platform-management/lib/{common → features/common}/regional/language-slot/language-slot.component.d.ts +0 -0
- /package/platform-management/lib/{common → features/common}/regional/regional-store.service.d.ts +0 -0
- /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,
|
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,
|
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
|
14
|
+
import * as i7 from '@acorex/components/collapse';
|
15
15
|
import { AXCollapseModule } from '@acorex/components/collapse';
|
16
|
-
import * as
|
16
|
+
import * as i2$1 from '@acorex/components/decorators';
|
17
17
|
import { AXDecoratorModule } from '@acorex/components/decorators';
|
18
|
-
import * as
|
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$
|
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
|
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
|
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.
|
162
|
-
path: `${this.sessionService.application?.name}/drive/
|
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('
|
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/
|
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
|
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:
|
682
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type:
|
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:
|
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:
|
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:
|
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:
|
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-
|
2883
|
-
|
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.
|
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(
|
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
|
-
{
|
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
|
-
|
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
|
3156
|
-
const
|
3157
|
-
|
3158
|
-
|
3159
|
-
|
3160
|
-
|
3161
|
-
|
3162
|
-
|
3163
|
-
|
3164
|
-
|
3165
|
-
|
3166
|
-
|
3167
|
-
|
3168
|
-
|
3169
|
-
|
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
|
3240
|
+
case AXPPlatformScope.Platform:
|
3182
3241
|
result = this.mapFolderDtoToFolderNode(rootFolder);
|
3242
|
+
path = await this.buildPath(result);
|
3183
3243
|
break;
|
3184
|
-
case
|
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
|
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
|
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
|
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-
|
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-
|
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-
|
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
|
3384
|
-
|
3385
|
-
|
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.
|
3391
|
-
url:
|
3448
|
+
type: doc.name.endsWith('.pdf') ? 'pdf' : 'image',
|
3449
|
+
url: fileInfo.url ?? '',
|
3392
3450
|
size: doc.size.toString(),
|
3393
|
-
thumbnail:
|
3451
|
+
thumbnail: fileInfo.url ?? '',
|
3394
3452
|
};
|
3395
|
-
}
|
3396
|
-
|
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
|
3412
|
-
const comp = (await import('./acorex-modules-document-management-rename-node-dialog.component-
|
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-
|
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 (
|
3466
|
-
|
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 =
|
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.
|
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
|
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
|
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?.
|
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
|
3713
|
-
|
3714
|
-
|
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 || '
|
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(
|
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(
|
3944
|
+
settingService.scope(AXPPlatformScope.User).set(AXPDocumentExplorerSettings.SortField, field);
|
3770
3945
|
},
|
3771
3946
|
setSortDirection(direction) {
|
3772
3947
|
patchState(store, { sortDirection: direction });
|
3773
|
-
settingService.scope(
|
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
|
-
|
3918
|
-
|
3919
|
-
|
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
|
-
|
3949
|
-
|
3950
|
-
|
3951
|
-
|
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, {
|
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:
|
4187
|
+
...(store.currentFolder()?.documentTypes?.map((type) => ({
|
4188
|
+
title: type.title,
|
4189
|
+
//icon: type.icon,
|
4004
4190
|
icon: 'fa-light fa-file-arrow-up',
|
4005
|
-
|
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: '
|
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-
|
4048
|
-
'small-tiles': async () => (await import('./acorex-modules-document-management-small-tiles-view.component-
|
4049
|
-
'large-tiles': async () => (await import('./acorex-modules-document-management-large-tiles-view.component-
|
4050
|
-
details: async () => (await import('./acorex-modules-document-management-details-view.component-
|
4051
|
-
'large-icons': async () => (await import('./acorex-modules-document-management-large-icons-view.component-
|
4052
|
-
'small-icons': async () => (await import('./acorex-modules-document-management-small-icons-view.component-
|
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
|
-
|
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
|
4319
|
+
name: 'upload-file-33',
|
4320
|
+
text: 'Upload',
|
4119
4321
|
icon: 'fa-light fa-file-arrow-up',
|
4120
4322
|
break: true,
|
4121
|
-
|
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 = [
|
4225
|
-
|
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
|
-
|
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
|
-
|
4252
|
-
|
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
|
-
|
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.
|
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
|
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
|
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
|
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
|
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: "
|
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: "<
|
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$
|
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
|
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.
|
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.
|
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
|
-
|
4899
|
+
#loadingEffect;
|
4900
|
+
//#endregion
|
4901
|
+
//#region ---------------- Lifecycle Hooks ----------------
|
4902
|
+
async ngOnInit() {
|
4483
4903
|
super.ngOnInit();
|
4484
|
-
this.
|
4485
|
-
this.
|
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
|
-
|
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
|
-
|
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.
|
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
|
-
|
4499
|
-
this.
|
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-
|
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
|
-
],
|
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-
|
5339
|
+
icon: 'fa-light fa-gallery',
|
4586
5340
|
description: 'My custom widget',
|
4587
|
-
|
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
|
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: () =>
|
5473
|
+
loadComponent: () => Promise.resolve().then(function () { return drive_component; }).then((c) => c.AXMDocumentDriveComponent),
|
4706
5474
|
},
|
4707
5475
|
{
|
4708
5476
|
path: ':id',
|
4709
|
-
loadComponent: () =>
|
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 {
|
4849
|
-
//# sourceMappingURL=acorex-modules-document-management-acorex-modules-document-management-
|
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
|