@acorex/modules 19.2.11 → 19.2.15
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/application-management.service.d.ts +1 -1
- package/application-management/lib/application-management.types.d.ts +1 -1
- package/application-management/lib/services/application-management.service.d.ts +1 -1
- package/application-management/lib/services/application-module-management.service.d.ts +1 -1
- package/application-management/lib/services/edition-management.service.d.ts +1 -1
- package/application-management/lib/services/entity-management.service.d.ts +1 -1
- package/application-management/lib/services/feature-management.service.d.ts +1 -1
- package/application-management/lib/services/module-management.service.d.ts +1 -1
- package/application-management/lib/services/permission-management.service.d.ts +1 -1
- package/application-management/lib/services/property-management.service.d.ts +1 -1
- package/auth/lib/auth.module.d.ts +2 -3
- package/auth/lib/pages/login/password/password.component.d.ts +1 -0
- package/conversation/lib/entities/chat/chat.service.d.ts +1 -1
- package/conversation/lib/entities/chat/chat.type.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 +1 -1
- package/conversation/lib/entities/comments/comments.type.d.ts +1 -1
- package/document-management/index.d.ts +1 -0
- package/document-management/lib/const.d.ts +6 -5
- package/document-management/lib/document-management.module.d.ts +3 -1
- package/document-management/lib/entities/document/document.service.d.ts +8 -5
- package/document-management/lib/entities/document/document.types.d.ts +2 -1
- package/document-management/lib/entities/document-type/document-type.service.d.ts +1 -1
- package/document-management/lib/entities/document-type/document-type.types.d.ts +16 -1
- package/document-management/lib/entities/document-type-meta-definition/document-type-meta-definition.service.d.ts +1 -1
- package/document-management/lib/entities/document-type-meta-definition/document-type-meta-definition.types.d.ts +1 -1
- package/document-management/lib/entities/document-type-meta-value/document-type-meta-value.service.d.ts +1 -1
- package/document-management/lib/entities/document-type-meta-value/document-type-meta-value.types.d.ts +1 -1
- package/document-management/lib/entities/document-type-status-definition/document-type-status-definition.service.d.ts +1 -1
- package/document-management/lib/entities/document-type-status-definition/document-type-status-definition.types.d.ts +1 -1
- package/document-management/lib/entities/folder/folder.entity.d.ts +3 -0
- package/document-management/lib/entities/folder/folder.service.d.ts +12 -0
- package/document-management/lib/entities/folder/folder.types.d.ts +37 -0
- package/document-management/lib/entities/folder/index.d.ts +3 -0
- package/document-management/lib/entities/index.d.ts +6 -0
- package/document-management/lib/features/document-explorer/components/create-folder-dialog/create-folder-dialog.component.d.ts +14 -0
- package/document-management/lib/features/document-explorer/document-explorer.component.d.ts +74 -0
- package/document-management/lib/features/document-explorer/document-explorer.viewmodel.d.ts +57 -0
- package/document-management/lib/features/document-explorer/index.d.ts +3 -0
- package/document-management/lib/features/document-explorer/settings.keys.d.ts +5 -0
- package/document-management/lib/features/drive/drive.component.d.ts +200 -0
- package/document-management/lib/features/drive/index.d.ts +3 -0
- package/document-management/lib/features/file-type/file-type.module.d.ts +6 -0
- package/document-management/lib/features/file-type/index.d.ts +2 -0
- package/document-management/lib/features/file-type/providers/archive.file.d.ts +4 -0
- package/document-management/lib/features/file-type/providers/audio.file.d.ts +4 -0
- package/document-management/lib/features/file-type/providers/code.file.d.ts +4 -0
- package/document-management/lib/features/file-type/providers/document.file.d.ts +4 -0
- package/document-management/lib/features/file-type/providers/image.file.d.ts +4 -0
- package/document-management/lib/features/file-type/providers/index.d.ts +6 -0
- package/document-management/lib/features/file-type/providers/video.file.d.ts +4 -0
- package/document-management/lib/features/file-type/widgets/file-type-extension/file-type-extension-column.component.d.ts +6 -0
- package/document-management/lib/features/file-type/widgets/file-type-extension/file-type-extension-designer.component.d.ts +6 -0
- package/document-management/lib/features/file-type/widgets/file-type-extension/file-type-extension-edit.component.d.ts +18 -0
- package/document-management/lib/features/file-type/widgets/file-type-extension/file-type-extension-view.component.d.ts +6 -0
- package/document-management/lib/features/file-type/widgets/file-type-extension/file-type-extension-widget.config.d.ts +7 -0
- package/document-management/lib/features/file-type/widgets/file-type-extension/index.d.ts +5 -0
- package/document-management/lib/features/file-type/widgets/index.d.ts +1 -0
- package/document-management/lib/features/shared/document-manager.service.d.ts +130 -0
- package/document-management/lib/features/shared/document-manager.types.d.ts +21 -0
- package/document-management/lib/features/shared/index.d.ts +1 -0
- package/document-management/lib/menu.provider.d.ts +1 -0
- package/fesm2022/acorex-modules-application-management.mjs +3 -3
- package/fesm2022/acorex-modules-application-management.mjs.map +1 -1
- package/fesm2022/{acorex-modules-auth-acorex-modules-auth-D1qxdECo.mjs → acorex-modules-auth-acorex-modules-auth-CZ_nTBkL.mjs} +53 -133
- package/fesm2022/acorex-modules-auth-acorex-modules-auth-CZ_nTBkL.mjs.map +1 -0
- package/fesm2022/{acorex-modules-auth-app-chooser.component-8GCTwtb2.mjs → acorex-modules-auth-app-chooser.component-CGSygSjS.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-app-chooser.component-8GCTwtb2.mjs.map → acorex-modules-auth-app-chooser.component-CGSygSjS.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-login.module-DR3QLEM-.mjs → acorex-modules-auth-login.module-B1sF3B_O.mjs} +4 -4
- package/fesm2022/{acorex-modules-auth-login.module-DR3QLEM-.mjs.map → acorex-modules-auth-login.module-B1sF3B_O.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-master.layout-BMJ5mW63.mjs → acorex-modules-auth-master.layout-CK4nyS8D.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-master.layout-BMJ5mW63.mjs.map → acorex-modules-auth-master.layout-CK4nyS8D.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-password.component-avrMwyr8.mjs → acorex-modules-auth-password.component-DC_zi8bV.mjs} +6 -6
- package/fesm2022/{acorex-modules-auth-password.component-avrMwyr8.mjs.map → acorex-modules-auth-password.component-DC_zi8bV.mjs.map} +1 -1
- package/fesm2022/acorex-modules-auth-password.component-DqvmIMDR.mjs +127 -0
- package/fesm2022/acorex-modules-auth-password.component-DqvmIMDR.mjs.map +1 -0
- package/fesm2022/{acorex-modules-auth-routes-BPYBFOxg.mjs → acorex-modules-auth-routes-DwHgPrDP.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-routes-BPYBFOxg.mjs.map → acorex-modules-auth-routes-DwHgPrDP.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-two-factor-code.component-YhAHhKIr.mjs → acorex-modules-auth-two-factor-code.component-DrV3UBuT.mjs} +5 -5
- package/fesm2022/{acorex-modules-auth-two-factor-code.component-YhAHhKIr.mjs.map → acorex-modules-auth-two-factor-code.component-DrV3UBuT.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-two-factor.module-B_V_nQN_.mjs → acorex-modules-auth-two-factor.module-BatKQRdJ.mjs} +3 -3
- package/fesm2022/{acorex-modules-auth-two-factor.module-B_V_nQN_.mjs.map → acorex-modules-auth-two-factor.module-BatKQRdJ.mjs.map} +1 -1
- package/fesm2022/acorex-modules-auth.mjs +1 -1
- package/fesm2022/acorex-modules-conversation.mjs +3 -3
- package/fesm2022/acorex-modules-conversation.mjs.map +1 -1
- package/fesm2022/acorex-modules-document-management-drive.component-bjnFFaLS.mjs +951 -0
- package/fesm2022/acorex-modules-document-management-drive.component-bjnFFaLS.mjs.map +1 -0
- package/fesm2022/acorex-modules-document-management.mjs +1596 -331
- package/fesm2022/acorex-modules-document-management.mjs.map +1 -1
- package/fesm2022/{acorex-modules-form-template-management-acorex-modules-form-template-management-BkUdHH_Y.mjs → acorex-modules-form-template-management-acorex-modules-form-template-management-szDh56Bk.mjs} +174 -64
- package/fesm2022/acorex-modules-form-template-management-acorex-modules-form-template-management-szDh56Bk.mjs.map +1 -0
- package/fesm2022/{acorex-modules-form-template-management-category.entity-D00XZd7o.mjs → acorex-modules-form-template-management-category.entity-BZXqnhwK.mjs} +4 -17
- package/fesm2022/acorex-modules-form-template-management-category.entity-BZXqnhwK.mjs.map +1 -0
- package/fesm2022/{acorex-modules-form-template-management-designer.page-BLbPLLdP.mjs → acorex-modules-form-template-management-designer.page-Bd_bZ_7p.mjs} +4 -3
- package/fesm2022/acorex-modules-form-template-management-designer.page-Bd_bZ_7p.mjs.map +1 -0
- package/fesm2022/{acorex-modules-form-template-management-setting.provider-Dy-Cd_iL.mjs → acorex-modules-form-template-management-setting.provider-o2_TSVfK.mjs} +2 -2
- package/fesm2022/{acorex-modules-form-template-management-setting.provider-Dy-Cd_iL.mjs.map → acorex-modules-form-template-management-setting.provider-o2_TSVfK.mjs.map} +1 -1
- package/fesm2022/acorex-modules-form-template-management-template-picker.component-BxOdV3y2.mjs +191 -0
- package/fesm2022/acorex-modules-form-template-management-template-picker.component-BxOdV3y2.mjs.map +1 -0
- package/fesm2022/{acorex-modules-form-template-management-template-widget-edit.component-rGcHfFSh.mjs → acorex-modules-form-template-management-template-widget-edit.component--MGoF75g.mjs} +32 -49
- package/fesm2022/acorex-modules-form-template-management-template-widget-edit.component--MGoF75g.mjs.map +1 -0
- package/fesm2022/{acorex-modules-form-template-management-template.entity-B0DUUdPJ.mjs → acorex-modules-form-template-management-template.entity-JvWcqjzi.mjs} +3 -3
- package/fesm2022/acorex-modules-form-template-management-template.entity-JvWcqjzi.mjs.map +1 -0
- package/fesm2022/{acorex-modules-form-template-management-viewer-popup.component-xUrGRQbQ.mjs → acorex-modules-form-template-management-viewer-popup.component-Bllb70Ih.mjs} +2 -2
- package/fesm2022/{acorex-modules-form-template-management-viewer-popup.component-xUrGRQbQ.mjs.map → acorex-modules-form-template-management-viewer-popup.component-Bllb70Ih.mjs.map} +1 -1
- package/fesm2022/acorex-modules-form-template-management.mjs +1 -1
- package/fesm2022/acorex-modules-notification-management.mjs +10 -3
- package/fesm2022/acorex-modules-notification-management.mjs.map +1 -1
- package/fesm2022/{acorex-modules-organization-management-add-item.component-PhQRBTtI.mjs → acorex-modules-organization-management-add-item.component-Y-i6xDkl.mjs} +2 -2
- package/fesm2022/{acorex-modules-organization-management-add-item.component-PhQRBTtI.mjs.map → acorex-modules-organization-management-add-item.component-Y-i6xDkl.mjs.map} +1 -1
- package/fesm2022/acorex-modules-organization-management-branch.entity-DhObzxhh.mjs +344 -0
- package/fesm2022/acorex-modules-organization-management-branch.entity-DhObzxhh.mjs.map +1 -0
- package/fesm2022/{acorex-modules-organization-management-employee.entity-PwlBjkYo.mjs → acorex-modules-organization-management-employee.entity-DcJCJN3R.mjs} +4 -4
- package/fesm2022/acorex-modules-organization-management-employee.entity-DcJCJN3R.mjs.map +1 -0
- package/fesm2022/{acorex-modules-organization-management-org-chart-configuration.page-DjzqBdaS.mjs → acorex-modules-organization-management-org-chart-configuration.page-DO8wSZqZ.mjs} +2 -2
- package/fesm2022/{acorex-modules-organization-management-org-chart-configuration.page-DjzqBdaS.mjs.map → acorex-modules-organization-management-org-chart-configuration.page-DO8wSZqZ.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-organization-management-org-chart.page-BSh18amn.mjs → acorex-modules-organization-management-org-chart.page-DXyAFXwE.mjs} +17 -11
- package/fesm2022/acorex-modules-organization-management-org-chart.page-DXyAFXwE.mjs.map +1 -0
- package/fesm2022/{acorex-modules-organization-management-position.entity-B7ceEEbu.mjs → acorex-modules-organization-management-position.entity-D17Yembh.mjs} +2 -2
- package/fesm2022/acorex-modules-organization-management-position.entity-D17Yembh.mjs.map +1 -0
- package/fesm2022/{acorex-modules-organization-management-branch.entity-CxxFiBPd.mjs → acorex-modules-organization-management-role.entity-Cmbyle8P.mjs} +36 -54
- package/fesm2022/acorex-modules-organization-management-role.entity-Cmbyle8P.mjs.map +1 -0
- package/fesm2022/{acorex-modules-organization-management-setting.provider-eLv_qnmE.mjs → acorex-modules-organization-management-setting.provider-CAU8Bve9.mjs} +7 -7
- package/fesm2022/acorex-modules-organization-management-setting.provider-CAU8Bve9.mjs.map +1 -0
- package/fesm2022/acorex-modules-organization-management-team.entity-DcurAtLd.mjs +238 -0
- package/fesm2022/acorex-modules-organization-management-team.entity-DcurAtLd.mjs.map +1 -0
- package/fesm2022/acorex-modules-organization-management.mjs +200 -105
- package/fesm2022/acorex-modules-organization-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-platform-management-list-version.component-CoZBz85x.mjs +59 -0
- package/fesm2022/acorex-modules-platform-management-list-version.component-CoZBz85x.mjs.map +1 -0
- package/fesm2022/acorex-modules-platform-management.mjs +867 -610
- package/fesm2022/acorex-modules-platform-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-scheduler-job-management.mjs +2 -2
- package/fesm2022/acorex-modules-scheduler-job-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-security-management.mjs +61 -29
- package/fesm2022/acorex-modules-security-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-text-template-management.mjs +324 -6
- package/fesm2022/acorex-modules-text-template-management.mjs.map +1 -1
- package/form-template-management/lib/entities/category/category.service.d.ts +1 -1
- package/form-template-management/lib/entities/category/category.types.d.ts +2 -1
- package/form-template-management/lib/entities/template/template.service.d.ts +1 -1
- package/form-template-management/lib/entities/template/template.types.d.ts +1 -1
- package/form-template-management/lib/features/designer/designer.page.d.ts +1 -0
- package/form-template-management/lib/features/designer/template.provider.d.ts +1 -1
- package/form-template-management/lib/features/designer/widgets/template/template-widget-edit.component.d.ts +0 -4
- package/form-template-management/lib/features/designer/widgets/template-designer/template-designer-widget-view.component.d.ts +1 -0
- package/form-template-management/lib/features/designer/widgets/template-picker/template-picker.component.d.ts +14 -4
- package/form-template-management/lib/features/designer/widgets/template-picker/template.provider.d.ts +2 -1
- package/form-template-management/lib/features/designer/workflows/design-template.workflow.d.ts +1 -8
- package/form-template-management/lib/features/designer/workflows/workflow.actions.d.ts +17 -0
- package/form-template-management/lib/menu.provider.d.ts +1 -0
- package/notification-management/lib/entities/channel/channel.service.d.ts +1 -1
- package/notification-management/lib/entities/channel/channel.types.d.ts +2 -1
- package/notification-management/lib/entities/notification/notification.service.d.ts +1 -1
- package/notification-management/lib/entities/notification/notification.types.d.ts +1 -1
- package/notification-management/lib/entities/template/template.service.d.ts +1 -1
- package/notification-management/lib/entities/template/template.types.d.ts +1 -1
- package/notification-management/lib/menu.provider.d.ts +1 -0
- package/organization-management/lib/const.d.ts +3 -0
- package/organization-management/lib/entities/branch/branch.service.d.ts +1 -1
- package/organization-management/lib/entities/branch/branch.types.d.ts +1 -1
- package/organization-management/lib/entities/chart/chart.service.d.ts +1 -1
- package/organization-management/lib/entities/chart/chart.types.d.ts +1 -1
- package/organization-management/lib/entities/company/company.service.d.ts +1 -1
- package/organization-management/lib/entities/company/company.types.d.ts +1 -1
- package/organization-management/lib/entities/department/department.service.d.ts +1 -1
- package/organization-management/lib/entities/department/department.types.d.ts +1 -1
- package/organization-management/lib/entities/division/division.service.d.ts +1 -1
- package/organization-management/lib/entities/division/division.types.d.ts +1 -1
- package/organization-management/lib/entities/employee/employee.service.d.ts +1 -1
- package/organization-management/lib/entities/employee/employee.types.d.ts +1 -1
- package/organization-management/lib/entities/employment-type/employment-type.service.d.ts +1 -1
- package/organization-management/lib/entities/employment-type/employment-type.types.d.ts +1 -1
- package/organization-management/lib/entities/index.d.ts +6 -4
- package/organization-management/lib/entities/position/position.service.d.ts +1 -1
- package/organization-management/lib/entities/position/position.types.d.ts +1 -1
- package/organization-management/lib/entities/role/index.d.ts +3 -0
- package/organization-management/lib/entities/role/role.entity.d.ts +3 -0
- package/organization-management/lib/entities/role/role.module.d.ts +6 -0
- package/organization-management/lib/entities/role/role.service.d.ts +10 -0
- package/organization-management/lib/entities/role/role.types.d.ts +5 -0
- package/organization-management/lib/entities/team/index.d.ts +3 -0
- package/organization-management/lib/entities/team/team.entity.d.ts +3 -0
- package/organization-management/lib/entities/team/team.module.d.ts +6 -0
- package/organization-management/lib/entities/team/team.service.d.ts +10 -0
- package/organization-management/lib/entities/team/team.types.d.ts +5 -0
- package/organization-management/lib/features/organization-chart/org-chart-configuration.page.d.ts +3 -0
- package/organization-management/lib/features/organization-chart/org-chart.page.d.ts +3 -0
- package/organization-management/lib/organization-management.module.d.ts +11 -9
- package/package.json +1 -1
- package/platform-management/lib/common/regional/data-source.provider.d.ts +10 -0
- package/platform-management/lib/const.d.ts +6 -0
- package/platform-management/lib/entities/app-term/app-term.service.d.ts +1 -1
- package/platform-management/lib/entities/app-term/app-term.types.d.ts +1 -1
- package/platform-management/lib/entities/app-version/app-version.service.d.ts +1 -1
- package/platform-management/lib/entities/app-version/app-version.types.d.ts +1 -1
- package/platform-management/lib/entities/app-version/components/slots/app-version-slot.component.d.ts +1 -1
- package/platform-management/lib/entities/app-version/workflows/change-log.workflow.d.ts +1 -1
- package/platform-management/lib/entities/app-version/workflows/show-release-notes.workflow.d.ts +9 -0
- package/platform-management/lib/entities/data-source/data-source.service.d.ts +1 -1
- package/platform-management/lib/entities/data-source/data-source.types.d.ts +1 -1
- package/platform-management/lib/entities/global-variable/global-variables.service.d.ts +1 -1
- package/platform-management/lib/entities/global-variable/global-variables.types.d.ts +1 -1
- package/platform-management/lib/entities/index.d.ts +1 -1
- package/platform-management/lib/entities/meta-data-definition/index.d.ts +0 -1
- package/platform-management/lib/entities/meta-data-definition/meta-data-definition.service.d.ts +5 -5
- package/platform-management/lib/entities/meta-data-definition/meta-data-definition.types.d.ts +3 -4
- package/platform-management/lib/entities/promotion/promotion.service.d.ts +1 -1
- package/platform-management/lib/entities/promotion/promotion.types.d.ts +2 -1
- package/platform-management/lib/platform-management.module.d.ts +4 -5
- package/scheduler-job-management/lib/entities/scheduler-job/scheduler-job.service.d.ts +1 -1
- package/scheduler-job-management/lib/entities/scheduler-job/scheduler-job.types.d.ts +1 -1
- package/security-management/lib/entities/index.d.ts +2 -0
- package/security-management/lib/entities/profile/profile.types.d.ts +1 -1
- package/security-management/lib/entities/roles/roles.service.d.ts +1 -1
- package/security-management/lib/entities/roles/roles.types.d.ts +3 -1
- package/security-management/lib/entities/users/users.service.d.ts +1 -1
- package/security-management/lib/entities/users/users.types.d.ts +12 -3
- package/text-template-management/lib/const.d.ts +6 -0
- package/text-template-management/lib/entities/category/category.service.d.ts +1 -1
- package/text-template-management/lib/entities/category/category.types.d.ts +1 -1
- package/text-template-management/lib/entities/index.d.ts +1 -0
- package/text-template-management/lib/entities/tag-template/index.d.ts +3 -0
- package/text-template-management/lib/entities/tag-template/tag-template.entity.d.ts +3 -0
- package/text-template-management/lib/entities/tag-template/tag-template.service.d.ts +10 -0
- package/text-template-management/lib/entities/tag-template/tag-template.types.d.ts +5 -0
- package/text-template-management/lib/entities/template/template.service.d.ts +1 -1
- package/text-template-management/lib/entities/template/template.types.d.ts +1 -1
- package/auth/lib/store/auth.effects.d.ts +0 -18
- package/auth/lib/store/index.d.ts +0 -1
- package/document-management/lib/entities/document-type/coulmn-def.widget.d.ts +0 -70
- package/fesm2022/acorex-modules-auth-acorex-modules-auth-D1qxdECo.mjs.map +0 -1
- package/fesm2022/acorex-modules-auth-password.component-EXWlXGez.mjs +0 -121
- package/fesm2022/acorex-modules-auth-password.component-EXWlXGez.mjs.map +0 -1
- package/fesm2022/acorex-modules-form-template-management-acorex-modules-form-template-management-BkUdHH_Y.mjs.map +0 -1
- package/fesm2022/acorex-modules-form-template-management-category.entity-D00XZd7o.mjs.map +0 -1
- package/fesm2022/acorex-modules-form-template-management-designer.page-BLbPLLdP.mjs.map +0 -1
- package/fesm2022/acorex-modules-form-template-management-template-picker.component-xiRKc4FF.mjs +0 -126
- package/fesm2022/acorex-modules-form-template-management-template-picker.component-xiRKc4FF.mjs.map +0 -1
- package/fesm2022/acorex-modules-form-template-management-template-widget-edit.component-rGcHfFSh.mjs.map +0 -1
- package/fesm2022/acorex-modules-form-template-management-template.entity-B0DUUdPJ.mjs.map +0 -1
- package/fesm2022/acorex-modules-organization-management-branch.entity-CxxFiBPd.mjs.map +0 -1
- package/fesm2022/acorex-modules-organization-management-employee.entity-PwlBjkYo.mjs.map +0 -1
- package/fesm2022/acorex-modules-organization-management-org-chart.page-BSh18amn.mjs.map +0 -1
- package/fesm2022/acorex-modules-organization-management-position.entity-B7ceEEbu.mjs.map +0 -1
- package/fesm2022/acorex-modules-organization-management-setting.provider-eLv_qnmE.mjs.map +0 -1
- package/platform-management/lib/entities/meta-data-definition/meta-data-definition.module.d.ts +0 -6
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"acorex-modules-document-management-drive.component-bjnFFaLS.mjs","sources":["../../../../libs/modules/document-management/src/lib/features/document-explorer/components/create-folder-dialog/create-folder-dialog.component.ts","../../../../libs/modules/document-management/src/lib/features/document-explorer/components/create-folder-dialog/create-folder-dialog.component.html","../../../../libs/modules/document-management/src/lib/features/shared/document-manager.types.ts","../../../../libs/modules/document-management/src/lib/features/shared/document-manager.service.ts","../../../../libs/modules/document-management/src/lib/features/document-explorer/settings.keys.ts","../../../../libs/modules/document-management/src/lib/features/document-explorer/document-explorer.viewmodel.ts","../../../../libs/modules/document-management/src/lib/features/document-explorer/document-explorer.component.ts","../../../../libs/modules/document-management/src/lib/features/document-explorer/document-explorer.component.html","../../../../libs/modules/document-management/src/lib/features/drive/drive.component.ts","../../../../libs/modules/document-management/src/lib/features/drive/drive.component.html"],"sourcesContent":["import { AXButtonModule } from '@acorex/components/button';\nimport { AXColorBoxModule } from '@acorex/components/color-box';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXFormComponent, AXFormModule } from '@acorex/components/form';\nimport { AXLabelModule } from '@acorex/components/label';\nimport { AXLoadingModule } from '@acorex/components/loading';\nimport { AXBasePageComponent } from '@acorex/components/page';\nimport { AXTextBoxModule } from '@acorex/components/text-box';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { CommonModule } from '@angular/common';\nimport { Component, inject, model } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { AXMDocumentManagerService } from '../../../shared';\n\n@Component({\n selector: 'ax-create-folder-dialog',\n standalone: true,\n imports: [\n CommonModule,\n FormsModule,\n //\n AXDecoratorModule,\n AXTextBoxModule,\n AXLabelModule,\n AXButtonModule,\n AXFormModule,\n AXColorBoxModule,\n AXTranslationModule,\n AXLoadingModule,\n ],\n templateUrl: './create-folder-dialog.component.html',\n})\nexport class AXMCreateFolderDialog extends AXBasePageComponent {\n private driveService = inject(AXMDocumentManagerService);\n\n parentId?: string;\n\n protected name = model<string>('');\n protected color = model<string>('#FFFFFF');\n protected description = model<string>('');\n\n async handleSubmitButton(form: AXFormComponent) {\n this.isLoading = true;\n const validated = await form.validate();\n if (validated.result) {\n try {\n const folder = await this.driveService.createFolder({\n name: this.name(),\n color: this.color(),\n parentId: this.parentId,\n description: this.description(),\n });\n this.close({\n result: true,\n folder,\n });\n } catch (error) {\n console.error('Error creating folder:', error);\n } finally {\n this.isLoading = false;\n }\n } else {\n this.isLoading = false;\n }\n }\n\n onCancel() {\n this.close({\n result: false,\n });\n }\n}\n","<div class=\"ax-p-4\">\n <ax-form #form>\n <div class=\"ax-flex ax-flex-col ax-gap-4\">\n <ax-form-field>\n <ax-label>\n {{ 'name' | translate | async }}\n </ax-label>\n <ax-text-box [(ngModel)]=\"name\" class=\"ax-input ax-w-full\">\n <ax-validation-rule rule=\"required\"></ax-validation-rule>\n </ax-text-box>\n </ax-form-field>\n <ax-form-field>\n <ax-label>\n {{ 'description' | translate | async }}\n </ax-label>\n <ax-text-box [(ngModel)]=\"description\" class=\"ax-input ax-w-full\"> </ax-text-box>\n </ax-form-field>\n <ax-form-field>\n <ax-label>\n {{ 'color' | translate | async }}\n </ax-label>\n <ax-color-box [(ngModel)]=\"color\" class=\"ax-w-full\">\n <ax-validation-rule rule=\"required\"></ax-validation-rule>\n </ax-color-box>\n </ax-form-field>\n <div class=\"ax-flex ax-justify-end ax-gap-2\"></div>\n </div>\n </ax-form>\n</div>\n<ax-footer>\n <ax-suffix>\n <ax-button (onClick)=\"onCancel()\" [text]=\"'cancel' | translate | async\"></ax-button>\n <ax-button look=\"solid\" color=\"primary\" (onClick)=\"handleSubmitButton(form)\" [text]=\"'save' | translate | async\">\n @if(isLoading) {\n <ax-loading> </ax-loading>\n }\n </ax-button>\n </ax-suffix>\n</ax-footer>\n","import { AXMDocumentManagementDocumentEntityModel, AXMDocumentManagementFolderEntityModel } from \"../../entities\";\n\nexport type AXMDriveScopeKey = 'P' | 'T' | 'U';\nexport enum AXMDriveScope {\n Platform = 'P',\n Tenant = 'T',\n User = 'U',\n}\n\nexport interface AXMDocumentExplorerNode {\n id: string;\n name: string;\n type: 'file' | 'folder';\n parentId: string | null;\n children?: AXMDocumentExplorerNode[];\n size?: number;\n lastModified?: Date;\n}\n\nexport type AXPDocumentExplorerViewMode = 'grid' | 'list';\n\n\nexport type CreateFolderDto = Partial<Omit<AXMDocumentManagementFolderEntityModel, 'id'>>;\nexport type UpdateFolderDto = Partial<Omit<AXMDocumentManagementFolderEntityModel, 'id'>>;\n\nexport type CreateFileDto = Omit<AXMDocumentManagementDocumentEntityModel, 'id'>;\nexport type UpdateFileDto = Partial<Omit<AXMDocumentManagementDocumentEntityModel, 'id'>>;\n","import { AXPopupService } from '@acorex/components/popup';\nimport { AXPSessionService } from '@acorex/platform/auth';\nimport { AXPDataGenerator } from '@acorex/platform/core';\nimport { inject, Injectable } from '@angular/core';\nimport {\n AXMDocumentManagementDocumentEntityModel,\n AXMDocumentManagementFolderCreateDto,\n AXMDocumentManagementFolderEntityModel,\n AXMDocumentService,\n AXMFolderService,\n} from '../../entities';\nimport { AXMCreateFolderDialog } from '../document-explorer/components/create-folder-dialog/create-folder-dialog.component';\nimport {\n AXMDocumentExplorerNode,\n AXMDriveScope,\n CreateFileDto,\n UpdateFileDto,\n UpdateFolderDto,\n} from './document-manager.types';\n\n/**\n * Interface defining the contract for document drive service\n */\nexport interface AXMDocumentManagerServiceInterface {\n scope(scope: AXMDriveScope, options?: { tenantId?: string; userId?: string }): ScopedDriveService;\n getRoot(\n scope: AXMDriveScope,\n options?: { tenantId?: string; userId?: string }\n ): Promise<{\n path: AXMDocumentExplorerNode[];\n result: AXMDocumentExplorerNode;\n }>;\n getFolder(folderId: string): Promise<{\n path: AXMDocumentExplorerNode[];\n result: AXMDocumentExplorerNode;\n }>;\n createFolder(data: AXMDocumentManagementFolderCreateDto): Promise<AXMDocumentExplorerNode>;\n updateFolder(folderId: string, data: UpdateFolderDto): Promise<AXMDocumentExplorerNode>;\n deleteFolder(folderId: string): Promise<void>;\n getAvailableSpace(): Promise<number>;\n\n createFile(data: CreateFileDto): Promise<AXMDocumentExplorerNode>;\n updateFile(fileId: string, data: UpdateFileDto): Promise<AXMDocumentExplorerNode>;\n deleteFile(fileId: string): Promise<void>;\n\n deleteNodes(nodeIds: string[]): Promise<void>;\n\n showCreateFolderDialog(parentId?: string): Promise<AXMDocumentExplorerNode | null>;\n}\n\n/**\n * Service for handling document drive operations\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class AXMDocumentManagerService implements AXMDocumentManagerServiceInterface {\n protected folderService = inject(AXMFolderService);\n protected sessionService = inject(AXPSessionService);\n protected documentService = inject(AXMDocumentService);\n protected popupService = inject(AXPopupService);\n private scopedDriveCache: Map<AXMDriveScope, ScopedDriveService> = new Map();\n\n scope(scope: AXMDriveScope, options?: { tenantId?: string; userId?: string }): ScopedDriveService {\n const cacheKey = this.getScopeCacheKey(scope, options);\n if (!this.scopedDriveCache.has(cacheKey)) {\n this.scopedDriveCache.set(cacheKey, new ScopedDriveService(this, scope, options));\n }\n return this.scopedDriveCache.get(cacheKey)!;\n }\n\n private getScopeCacheKey(scope: AXMDriveScope, options?: { tenantId?: string; userId?: string }): AXMDriveScope {\n // در آینده میتوان این را برای کش کردن بر اساس ترکیب scope و options گسترش داد\n return scope;\n }\n\n /**\n * Gets the platform root folder (top-level folder)\n * @returns Root folder for the platform\n */\n private async getPlatformRootFolder(): Promise<AXMDocumentManagementFolderEntityModel> {\n const result = await this.folderService.query({\n skip: 0,\n take: 1,\n filter: {\n operator: null!,\n logic: 'and',\n filters: [\n { field: 'parentId', operator: { type: 'isNull' } },\n { field: 'tenantId', operator: { type: 'isNull' } },\n { field: 'userId', operator: { type: 'isNull' } },\n ],\n },\n });\n\n if (result.items.length === 0) {\n throw new Error('Platform root folder not found');\n }\n\n return result.items[0];\n }\n\n /**\n * Gets the tenant root folder\n * @param rootFolderId The platform root folder ID\n * @param tenantId The tenant ID\n * @returns Tenant root folder\n */\n private async getTenantRootFolder(\n rootFolderId: string,\n tenantId: string\n ): Promise<AXMDocumentManagementFolderEntityModel> {\n if (!tenantId) {\n throw new Error('Tenant ID is required');\n }\n\n const result = await this.folderService.query({\n skip: 0,\n take: 1,\n filter: {\n operator: null!,\n logic: 'and',\n filters: [\n { field: 'parentId', operator: { type: 'equal' }, value: rootFolderId },\n { field: 'tenantId', operator: { type: 'equal' }, value: tenantId },\n { field: 'userId', operator: { type: 'isNull' } },\n ],\n },\n });\n\n if (result.items.length === 0) {\n throw new Error('Tenant root folder not found');\n }\n\n return result.items[0];\n }\n\n /**\n * Gets the user root folder\n * @param tenantFolderId The tenant folder ID\n * @param tenantId The tenant ID\n * @param userId The user ID\n * @returns User root folder\n */\n private async getUserRootFolder(\n tenantFolderId: string,\n tenantId: string,\n userId: string\n ): Promise<AXMDocumentManagementFolderEntityModel> {\n if (!tenantId || !userId) {\n throw new Error('Both Tenant ID and User ID are required');\n }\n\n const result = await this.folderService.query({\n skip: 0,\n take: 1,\n filter: {\n operator: null!,\n logic: 'and',\n filters: [\n { field: 'parentId', operator: { type: 'equal' }, value: tenantFolderId },\n { field: 'tenantId', operator: { type: 'equal' }, value: tenantId },\n { field: 'userId', operator: { type: 'equal' }, value: userId },\n ],\n },\n });\n\n if (result.items.length === 0) {\n throw new Error('User root folder not found');\n }\n\n return result.items[0];\n }\n\n private mapFolderDtoToFolderNode(folder: AXMDocumentManagementFolderEntityModel): AXMDocumentExplorerNode {\n return {\n id: folder.id!,\n name: folder.name,\n type: 'folder',\n parentId: folder.parentId || null,\n lastModified: folder.updatedAt,\n children: [\n ...(folder.folders?.map((child) => ({\n id: child.id!,\n name: child.name,\n type: 'folder' as const,\n parentId: child.parentId || null,\n lastModified: child.updatedAt,\n size: AXPDataGenerator.number(50, 9000000),\n })) || []),\n ...(folder.documents?.map((doc) => ({\n id: doc.id!,\n name: doc.name,\n type: 'file' as const,\n parentId: doc.parentId,\n lastModified: AXPDataGenerator.date(),\n size: AXPDataGenerator.number(50, 9000000),\n })) || []),\n ],\n };\n }\n\n private async buildPath(node: AXMDocumentExplorerNode): Promise<AXMDocumentExplorerNode[]> {\n if (node.type === 'file') {\n return (await this.documentService.getPath(node.id)).map(this.mapFolderDtoToFolderNode);\n }\n return (await this.folderService.getPath(node.id)).map(this.mapFolderDtoToFolderNode);\n }\n\n private async findNodeById(id: string): Promise<AXMDocumentExplorerNode | null> {\n const findNode = (nodes: AXMDocumentExplorerNode[]): AXMDocumentExplorerNode | null => {\n for (const node of nodes) {\n if (node.id === id) {\n return node;\n }\n if (node.children) {\n const found = findNode(node.children);\n if (found) return found;\n }\n }\n return null;\n };\n\n return findNode([(await this.getRoot(AXMDriveScope.Platform)).result]);\n }\n\n /**\n * Gets the root folder based on the specified scope\n * @param scope The drive scope (Platform, Tenant, User)\n * @param options Optional parameters for tenant and user IDs\n * @returns Root folder for the specified scope\n */\n async getRoot(\n scope: AXMDriveScope,\n options?: { tenantId?: string; userId?: string }\n ): Promise<{\n path: AXMDocumentExplorerNode[];\n result: AXMDocumentExplorerNode;\n }> {\n const rootFolder = await this.getPlatformRootFolder();\n let result: AXMDocumentExplorerNode;\n\n switch (scope) {\n case AXMDriveScope.Platform:\n result = this.mapFolderDtoToFolderNode(rootFolder);\n break;\n\n case AXMDriveScope.Tenant: {\n if (!options?.tenantId) {\n throw new Error('Tenant ID is required for tenant scope');\n }\n const tenantRoot = await this.getTenantRootFolder(rootFolder.id!, options.tenantId);\n result = this.mapFolderDtoToFolderNode(tenantRoot);\n break;\n }\n\n case AXMDriveScope.User: {\n if (!options?.tenantId || !options?.userId) {\n throw new Error('Both Tenant ID and User ID are required for user scope');\n }\n const tenantFolder = await this.getTenantRootFolder(rootFolder.id!, options.tenantId);\n const userRoot = await this.getUserRootFolder(tenantFolder.id!, options.tenantId, options.userId);\n result = this.mapFolderDtoToFolderNode(userRoot);\n break;\n }\n\n default:\n throw new Error(`Invalid scope: ${scope}`);\n }\n\n const path = await this.buildPath(result);\n return { path, result };\n }\n\n /**\n * Gets a specific folder by ID\n * @param folderId The folder ID to retrieve\n * @returns The requested folder\n */\n async getFolder(folderId: string): Promise<{\n path: AXMDocumentExplorerNode[];\n result: AXMDocumentExplorerNode;\n }> {\n if (!folderId) {\n throw new Error('Folder ID is required');\n }\n\n const folder = await this.folderService.getOne(folderId);\n if (!folder) {\n throw new Error('Folder not found');\n }\n\n const result = this.mapFolderDtoToFolderNode(folder);\n const path = await this.buildPath(result);\n return { path, result };\n }\n\n async createFolder(data: AXMDocumentManagementFolderCreateDto): Promise<AXMDocumentExplorerNode> {\n const now = new Date();\n const currentUser = this.sessionService.user;\n\n const folderToCreate: Omit<AXMDocumentManagementFolderEntityModel, 'id'> = {\n ...data,\n createdAt: now,\n updatedAt: now,\n createdBy: currentUser?.id?.toString() ?? 'system',\n updatedBy: currentUser?.id?.toString() ?? 'system',\n isSystem: false,\n isHidden: false,\n isDeleted: false,\n };\n\n const createdFolder = await this.folderService.insertOne(folderToCreate);\n const folder = await this.folderService.getOne(createdFolder);\n return this.mapFolderDtoToFolderNode(folder);\n }\n\n async updateFolder(folderId: string, data: UpdateFolderDto): Promise<AXMDocumentExplorerNode> {\n const currentUser = this.sessionService.user;\n const updateData = {\n ...data,\n updatedBy: currentUser?.id?.toString() ?? 'system',\n updatedAt: new Date(),\n };\n await this.folderService.updateOne(folderId, updateData);\n const updatedFolder = await this.folderService.getOne(folderId);\n return this.mapFolderDtoToFolderNode(updatedFolder);\n }\n\n async deleteFolder(folderId: string): Promise<void> {\n await this.folderService.deleteOne(folderId);\n }\n\n async getAvailableSpace(): Promise<number> {\n // For now, return a fixed value of 100GB (56 * 1024 * 1024 * 1024 bytes)\n // This should be replaced with actual storage quota logic when implemented\n return 56 * 1024 * 1024 * 1024;\n }\n\n private mapFileToNode(file: AXMDocumentManagementDocumentEntityModel): AXMDocumentExplorerNode {\n return {\n id: file.id!,\n name: file.name,\n type: 'file',\n parentId: file.parentId,\n lastModified: new Date(),\n };\n }\n\n async createFile(data: CreateFileDto): Promise<AXMDocumentExplorerNode> {\n const fileId = await this.documentService.insertOne(data);\n const file = await this.documentService.getOne(fileId);\n return this.mapFileToNode(file);\n }\n\n async updateFile(fileId: string, data: UpdateFileDto): Promise<AXMDocumentExplorerNode> {\n const updatedFile = await this.documentService.updateOne(fileId, data);\n return this.mapFileToNode(updatedFile);\n }\n\n async deleteFile(fileId: string): Promise<void> {\n await this.documentService.deleteOne(fileId);\n }\n\n async deleteNodes(nodeIds: string[]): Promise<void> {\n for (const nodeId of nodeIds) {\n try {\n await this.deleteFolder(nodeId);\n } catch {\n try {\n await this.deleteFile(nodeId);\n } catch (error) {\n console.error(`Failed to delete node with id ${nodeId}:`, error);\n }\n }\n }\n }\n\n async showCreateFolderDialog(parentId?: string): Promise<AXMDocumentExplorerNode | null> {\n const popup = await this.popupService.open(AXMCreateFolderDialog, {\n title: 't(\"actions.create-folder\")',\n data: {\n parentId,\n },\n });\n return popup.data?.folder as AXMDocumentExplorerNode;\n }\n\n async rename(node: AXMDocumentExplorerNode) {}\n}\n\nclass ScopedDriveService {\n constructor(\n private parent: AXMDocumentManagerService,\n private scope: AXMDriveScope,\n private options?: { tenantId?: string; userId?: string }\n ) {\n this.validateScopeOptions();\n }\n\n private validateScopeOptions(): void {\n switch (this.scope) {\n case AXMDriveScope.Tenant:\n if (!this.options?.tenantId) {\n throw new Error('Tenant ID is required for tenant scope');\n }\n break;\n case AXMDriveScope.User:\n if (!this.options?.tenantId || !this.options?.userId) {\n throw new Error('Both Tenant ID and User ID are required for user scope');\n }\n break;\n }\n }\n\n async getRoot(): Promise<{\n path: AXMDocumentExplorerNode[];\n result: AXMDocumentExplorerNode;\n }> {\n return this.parent.getRoot(this.scope, this.options);\n }\n\n async getFolder(folderId: string): Promise<{\n path: AXMDocumentExplorerNode[];\n result: AXMDocumentExplorerNode;\n }> {\n return this.parent.getFolder(folderId);\n }\n\n async createFolder(\n data: Omit<AXMDocumentManagementFolderCreateDto, 'tenantId' | 'userId'>\n ): Promise<AXMDocumentExplorerNode> {\n const folderData: AXMDocumentManagementFolderCreateDto = {\n ...data,\n tenantId: this.options?.tenantId,\n userId: this.options?.userId,\n };\n return this.parent.createFolder(folderData);\n }\n\n async updateFolder(folderId: string, data: UpdateFolderDto): Promise<AXMDocumentExplorerNode> {\n return this.parent.updateFolder(folderId, data);\n }\n\n async deleteFolder(folderId: string): Promise<void> {\n return this.parent.deleteFolder(folderId);\n }\n\n async getAvailableSpace(): Promise<number> {\n return this.parent.getAvailableSpace();\n }\n}\n","export enum AXPDocumentExplorerSettings {\n ViewMode = 'document-explorer:layout:view-mode',\n SortField = 'document-explorer:layout:sort-field',\n SortDirection = 'document-explorer:layout:sort-direction'\n}\n\n","import { signalStore, withState, withMethods, withComputed, withHooks } from \"@ngrx/signals\";\nimport { AXMDocumentManagerService, AXMDocumentExplorerNode, AXMDriveScope, AXPDocumentExplorerViewMode } from \"../drive\";\nimport { AXPDocumentExplorerSettings } from \"./settings.keys\";\nimport { computed, inject } from \"@angular/core\";\nimport { patchState } from \"@ngrx/signals\";\nimport { AXPSettingService, AXPSettingScope, AXPFileTypeProviderService, AXPFileType } from \"@acorex/platform/common\";\nimport { filter } from \"rxjs\";\n\nexport const AXPDocumentExplorerViewModel = signalStore(\n { providedIn: 'root' },\n\n withState(() => ({\n // View State\n viewMode: 'grid' as AXPDocumentExplorerViewMode,\n isLoading: false,\n\n // Navigation State\n currentPath: [] as AXMDocumentExplorerNode[],\n currentNode: null as AXMDocumentExplorerNode | null,\n loadingFolderId: null as string | null,\n navigatingFolderId: null as string | null,\n\n // Sort State\n sortField: 'name',\n sortDirection: 'asc',\n\n // Content State\n folders: [] as AXMDocumentExplorerNode[],\n files: [] as AXMDocumentExplorerNode[],\n itemsCount: 0,\n availableSpace: 0,\n\n // Drive State\n currentDrive: null as AXMDriveScope | null,\n\n // File Type State\n fileTypes: [] as AXPFileType[],\n })),\n\n withComputed((store) => ({\n isRoot: computed(() => {\n const node = store.currentNode();\n return node?.id === 'root' || !node?.parentId;\n }),\n\n breadcrumb: computed(() => store.currentPath()),\n\n currentFolder: computed(() => store.currentNode()),\n\n currentFolderContents: computed(() => ({\n folders: store.folders(),\n files: store.files(),\n })),\n\n parentFolder: computed(() => {\n const currentNode = store.currentNode();\n return currentNode?.parentId ? store.folders().find(folder => folder.id === currentNode.parentId) : null;\n }),\n\n isGridView: computed(() => store.viewMode() === 'grid'),\n isListView: computed(() => store.viewMode() === 'list'),\n })),\n\n withMethods((store, fileTypeService = inject(AXPFileTypeProviderService), driveService = inject(AXMDocumentManagerService), settingService = inject(AXPSettingService)) => ({\n async initialize(path: string = 'root') {\n // Load file types\n const fileTypes = await fileTypeService.items();\n patchState(store, { fileTypes });\n\n // Load initial settings\n const viewMode = await settingService.get(AXPDocumentExplorerSettings.ViewMode);\n const sortField = await settingService.get(AXPDocumentExplorerSettings.SortField);\n const sortDirection = await settingService.get(AXPDocumentExplorerSettings.SortDirection);\n\n patchState(store, {\n viewMode: viewMode || 'grid',\n sortField: sortField || 'name',\n sortDirection: sortDirection || 'asc'\n });\n },\n\n\n _load: async (folderId: string) => {\n patchState(store, { loadingFolderId: folderId, isLoading: true });\n\n await new Promise(resolve => setTimeout(resolve, 100));\n\n\n try {\n const node = await driveService.getFolder(folderId);\n\n patchState(store, {\n currentNode: node.result,\n currentPath: node.path,\n folders: node.result.children?.filter((item: AXMDocumentExplorerNode) => item.type === 'folder') || [],\n files: node.result.children?.filter((item: AXMDocumentExplorerNode) => item.type === 'file') || [],\n itemsCount: node.result.children?.length || 0,\n availableSpace: await driveService.getAvailableSpace(),\n loadingFolderId: null,\n isLoading: false,\n navigatingFolderId: null\n });\n } catch (error) {\n patchState(store, {\n loadingFolderId: null,\n isLoading: false\n });\n throw error;\n }\n },\n\n navigateToFolder(folderId: string) {\n patchState(store, { navigatingFolderId: folderId });\n },\n\n async loadFolderContents(folderId: string) {\n await this._load(folderId)\n },\n\n\n setViewMode(mode: AXPDocumentExplorerViewMode) {\n patchState(store, { viewMode: mode });\n settingService.scope(AXPSettingScope.User).set(AXPDocumentExplorerSettings.ViewMode, mode);\n },\n\n setSortField(field: string) {\n patchState(store, { sortField: field });\n settingService.scope(AXPSettingScope.User).set(AXPDocumentExplorerSettings.SortField, field);\n },\n\n setSortDirection(direction: string) {\n patchState(store, { sortDirection: direction });\n settingService.scope(AXPSettingScope.User).set(AXPDocumentExplorerSettings.SortDirection, direction);\n },\n\n setDrive(scope: AXMDriveScope) {\n patchState(store, { currentDrive: scope });\n },\n\n isLoadingFolder(folderId: string): boolean {\n return store.loadingFolderId() === folderId;\n },\n\n getFileInfo(fileName: string): { icon: string, type: string } {\n const fileTypes = store.fileTypes();\n const extension = fileName.split('.').pop()?.toLowerCase() || '';\n const extensions = fileTypes.flatMap(type => type.extensions);\n const fileType = extensions.find(e => e.name === extension);\n\n return {\n icon: fileType?.icon || 'fa-light fa-file',\n type: fileType?.name || 'Unknown'\n };\n },\n\n sortItems(items: AXMDocumentExplorerNode[]): AXMDocumentExplorerNode[] {\n const field = store.sortField();\n const direction = store.sortDirection();\n\n return [...items].sort((a, b) => {\n let comparison = 0;\n\n switch (field) {\n case 'name':\n comparison = a.name.localeCompare(b.name);\n break;\n case 'modified':\n const aDate = a.lastModified ? new Date(a.lastModified) : new Date(0);\n const bDate = b.lastModified ? new Date(b.lastModified) : new Date(0);\n comparison = aDate.getTime() - bDate.getTime();\n break;\n case 'size':\n comparison = (a.size || 0) - (b.size || 0);\n break;\n }\n\n return direction === 'asc' ? comparison : -comparison;\n });\n },\n\n async refresh() {\n const currentFolder = store.currentNode();\n if (currentFolder) {\n await this._load(currentFolder.id)\n }\n }\n })),\n\n);\n","import { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXLoadingModule } from '@acorex/components/loading';\nimport { AXDateTimeModule } from '@acorex/core/date-time';\nimport { AXFormatModule } from '@acorex/core/format';\nimport { CommonModule } from '@angular/common';\nimport { Component, OnInit, effect, inject, viewChild } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { AXMDocumentManagerService, AXMDocumentExplorerNode } from '../drive';\nimport { AXContextMenuOpeningEvent, AXContextMenuItemsClickEvent, AXMenuModule, AXContextMenuComponent } from '@acorex/components/menu';\nimport { get } from 'lodash-es';\nimport { AXPElementDataDirective } from '@acorex/platform/core';\nimport { AXPDocumentExplorerViewModel } from './document-explorer.viewmodel';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { RootConfig } from '../../const';\n\n@Component({\n selector: 'axp-document-explorer',\n templateUrl: './document-explorer.component.html',\n styleUrls: ['./document-explorer.component.scss'],\n standalone: true,\n imports: [CommonModule, RouterModule, AXDecoratorModule, AXLoadingModule, AXFormatModule, AXDateTimeModule, AXMenuModule, AXPElementDataDirective],\n})\nexport class AXMDocumentExplorerComponent {\n protected vm = inject(AXPDocumentExplorerViewModel);\n protected contextMenu = viewChild<AXContextMenuComponent>('itemsContextMenu');\n protected rootContextMenu = viewChild<AXContextMenuComponent>('rootContextMenu');\n protected driveService = inject(AXMDocumentManagerService);\n protected translateService = inject(AXTranslationService);\n\n #effect = effect(() => {\n const navigatingFolderId = this.vm.loadingFolderId();\n if (!navigatingFolderId) {\n setTimeout(() => {\n this.contextMenu()?.refresh();\n this.rootContextMenu()?.refresh();\n }, 100);\n }\n });\n\n protected handleNavigateToFolder(folderId: string) {\n this.vm.navigateToFolder(folderId);\n }\n\n // Context Menu Handlers\n protected async handleContextMenuOnOpening(e: AXContextMenuOpeningEvent) {\n const node = get(e.targetElement, '__data__') as any as AXMDocumentExplorerNode;\n if (!node) {\n return;\n }\n\n const allowedAddItems = node.type === 'folder';\n const allowDelete = true;\n const isPasteAvailable = true;\n const allowPaste = false;\n\n\n const open = node.type == 'file' ? [\n {\n name: 'open-file',\n text: 'Open',\n icon: this.vm.getFileInfo(node.name).icon,\n data: node,\n },\n {\n name: 'download',\n text: 'Download',\n icon: 'fa-light fa-download',\n data: node,\n },\n ] : [\n {\n name: 'open-folder',\n text: 'Open',\n icon: 'fa-light fa-folder-open',\n data: node,\n },\n {\n name: 'upload-file',\n text: 'Upload File',\n icon: 'fa-light fa-file-arrow-up',\n break: true,\n data: this.vm.currentFolder(),\n },\n ];\n\n const info =\n {\n name: node.type == 'file' ? 'file-info' : 'folder-info',\n text: 'Information',\n icon: 'fa-light fa-circle-info',\n items: [\n {\n name: 'rename',\n text: 'Rename',\n icon: 'fa-light fa-pencil',\n data: node,\n },\n {\n name: 'properties',\n text: 'Properties',\n icon: 'fa-light fa-memo-circle-info',\n break: true,\n data: node,\n },\n {\n name: 'lock ',\n text: 'Lock',\n icon: 'fa-light fa-lock',\n data: node,\n }\n ],\n break: true,\n };\n\n\n e.items = [\n ...open,\n\n {\n name: 'share',\n text: 'Share',\n icon: 'fa-light fa-share-nodes',\n items: [\n {\n name: 'share',\n text: 'Share',\n icon: 'fa-light fa-users',\n },\n {\n name: 'share-with-email',\n text: 'Share with email',\n icon: 'fa-light fa-envelope',\n },\n {\n name: 'link',\n text: 'Link',\n icon: 'fa-light fa-link',\n }\n ],\n break: true,\n },\n info,\n {\n name: 'copy',\n text: 'Make a copy',\n icon: 'fa-light fa-copy',\n data: node,\n },\n {\n name: 'copy-to',\n text: 'Copy to',\n icon: 'fa-light fa-copy',\n data: node,\n },\n {\n name: 'move-to',\n text: 'Move to',\n icon: 'fa-light fa-arrow-right-arrow-left',\n break: true,\n data: node,\n },\n {\n name: 'delete',\n text: 'Delete',\n color: 'danger',\n icon: 'fa-light fa-trash',\n data: node,\n }\n ];\n }\n\n protected handleContextMenuRootOnOpening(e: AXContextMenuOpeningEvent) {\n //TODO: check async translate method in acorex\n const scope = RootConfig.config.i18n;\n e.items = [\n {\n name: 'new-folder',\n text: this.translateService.translateSync('actions.create-folder', { scope }),\n icon: 'fa-light fa-folder-plus',\n },\n {\n name: 'upload-file',\n text: this.translateService.translateSync('actions.upload-file', { scope }),\n icon: 'fa-light fa-file-arrow-up',\n break: true,\n },\n {\n name: 'refresh',\n text: 'Refresh',\n icon: 'fa-light fa-rotate-right',\n break: true,\n },\n {\n name: 'delete',\n text: 'Delete',\n color: 'danger',\n icon: 'fa-light fa-trash',\n },\n ];\n }\n\n protected async handleContextMenuItemClick(e: AXContextMenuItemsClickEvent) {\n const node = e.item.data as AXMDocumentExplorerNode;\n switch (e.item.name) {\n case 'open-folder':\n this.handleNavigateToFolder(node.id);\n break;\n case 'new-folder':\n await this.createFolder(node);\n // Handle new folder creation\n break;\n case 'upload-file':\n await this.uploadFile(node);\n break;\n case 'paste':\n // Handle paste operation\n break;\n case 'delete':\n // Handle delete operation\n break;\n case 'refresh':\n this.vm.refresh();\n break;\n }\n }\n\n public async createFolder(node?: AXMDocumentExplorerNode) {\n const folderId = node?.id ?? this.vm.currentFolder()?.id;\n if (folderId) {\n const result = await this.driveService.showCreateFolderDialog(this.vm.currentFolder()?.id);\n if (result) {\n await this.vm.refresh();\n }\n }\n }\n\n public async uploadFile(node?: AXMDocumentExplorerNode) {\n const folderId = node?.id ?? this.vm.currentFolder()?.id;\n if (folderId) {\n // const result = await this.driveService.showCreateFolderDialog(this.vm.currentFolder()?.id);\n // if (result) {\n // await this.vm.refresh();\n // }\n }\n }\n}\n","<!-- Content -->\n<div class=\"content\">\n <!-- Empty State -->\n @if (vm.folders().length === 0 && vm.files().length === 0) {\n <div class=\"ax-flex ax-flex-col ax-items-center ax-justify-center ax-py-16 ax-h-full\">\n <ax-icon icon=\"fa-light fa-folder-open\" class=\"ax-text-6xl ax-mb-4\"></ax-icon>\n <h3 class=\"ax-text-xl ax-font-medium ax-mb-2\">No Items Found</h3>\n <p class=\"\">This folder is empty. Add some files or folders to get started.</p>\n </div>\n } @else {\n <!-- Grid View -->\n @if (vm.isGridView()) {\n <!-- Folders Section -->\n @if (vm.folders().length > 0) {\n <div class=\"section\">\n <h3 class=\"section-title\">Folders</h3>\n <div class=\"items-grid\">\n @for (folder of vm.folders(); track folder.id) {\n <ng-container [ngTemplateOutlet]=\"gridFolderTemplate\" [ngTemplateOutletContext]=\"{ $implicit: folder }\">\n </ng-container>\n }\n </div>\n </div>\n }\n\n <!-- Files Section -->\n @if (vm.files().length > 0) {\n <div class=\"section\">\n <h3 class=\"section-title\">Files</h3>\n <div class=\"items-grid\">\n @for (file of vm.files(); track file.id) {\n <ng-container [ngTemplateOutlet]=\"gridFileTemplate\" [ngTemplateOutletContext]=\"{ $implicit: file }\">\n </ng-container>\n }\n </div>\n </div>\n }\n <!-- Grid View End -->\n }\n\n <!-- List View -->\n @if (vm.isListView()) {\n <div class=\"list-view\">\n <table class=\"items-table\">\n <thead>\n <tr>\n <th class=\"name-column\">Name</th>\n <th class=\"type-column\">Type</th>\n <th class=\"size-column\">Size</th>\n <th class=\"date-column\">Last Modified</th>\n </tr>\n </thead>\n <tbody>\n @for (folder of vm.folders(); track folder.id) {\n <ng-container [ngTemplateOutlet]=\"listFolderTemplate\" [ngTemplateOutletContext]=\"{ $implicit: folder }\">\n </ng-container>\n } @for (file of vm.files(); track file.id) {\n <ng-container [ngTemplateOutlet]=\"listFileTemplate\" [ngTemplateOutletContext]=\"{ $implicit: file }\">\n </ng-container>\n }\n </tbody>\n </table>\n </div>\n } }\n</div>\n\n<!-- Grid View Templates -->\n<ng-template #gridFolderTemplate let-folder>\n <div\n class=\"ax-group ax-cursor-pointer axp-explorer-item\"\n [axp-data]=\"folder\"\n (dblclick)=\"handleNavigateToFolder(folder.id)\"\n >\n <div class=\"ax-flex ax-flex-col ax-items-center ax-p-4 ax-rounded-lg ax-border ax-lighter-surface\">\n <div class=\"ax-text-yellow-400 ax-mb-2\" style=\"--fa-animation-duration: 2s\">\n @if (vm.isLoadingFolder(folder.id)) {\n <ng-container [ngTemplateOutlet]=\"folderLoading\"> </ng-container>\n } @else {\n <ax-icon icon=\"fa-light fa-folder-closed\" class=\"ax-text-3xl\"></ax-icon>\n }\n </div>\n <span class=\"ax-text-sm ax-truncate ax-w-full ax-text-center\">{{ folder.name }}</span>\n </div>\n </div>\n</ng-template>\n\n<ng-template #gridFileTemplate let-file>\n <div class=\"ax-group ax-cursor-pointer axp-explorer-item\" [axp-data]=\"file\">\n <div\n class=\"ax-flex ax-flex-col ax-items-center ax-p-4 ax-rounded-lg ax-border ax-border-gray-200 group-hover:ax-bg-gray-50\"\n >\n <div class=\"file-icon\">\n @let fileInfo = vm.getFileInfo(file.name);\n <i class=\"fa-fw {{ fileInfo.icon }}\"></i>\n <span>{{ fileInfo.type }}</span>\n </div>\n <div class=\"ax-flex ax-flex-col ax-items-center ax-gap-1 ax-mt-2\">\n <span class=\"ax-text-xs\">{{ file.size | format : 'filesize' | async }} </span>\n <span class=\"ax-text-xs\">{{ file.lastModified | format : 'datetime' : { format: 'datetime' } | async }}</span>\n </div>\n </div>\n </div>\n</ng-template>\n\n<!-- List View Templates -->\n<ng-template #listFolderTemplate let-folder>\n <tr class=\"folder-row\" (dblclick)=\"handleNavigateToFolder(folder.id)\">\n <td class=\"name-column axp-explorer-item\" [axp-data]=\"folder\">\n <div class=\"item-name\">\n @if (vm.isLoadingFolder(folder.id)) {\n <ng-container [ngTemplateOutlet]=\"folderLoading\"> </ng-container>\n } @else {\n <i class=\"fas fa-folder-closed\"></i>\n }\n <span>{{ folder.name }}</span>\n </div>\n </td>\n <td class=\"type-column axp-explorer-item\" [axp-data]=\"folder\">Folder</td>\n <td class=\"size-column axp-explorer-item\" [axp-data]=\"folder\">{{ folder.size | format : 'filesize' | async }}</td>\n <td class=\"date-column axp-explorer-item\" [axp-data]=\"folder\">\n {{ folder.lastModified | format : 'datetime' : { format: 'datetime' } | async }}\n </td>\n </tr>\n</ng-template>\n\n<ng-template #listFileTemplate let-file>\n <tr class=\"file-row\">\n @let fileInfo = vm.getFileInfo(file.name);\n <td class=\"name-column axp-explorer-item\" [axp-data]=\"file\">\n <div class=\"item-name\">\n <i class=\"fa-fw {{ fileInfo.icon }}\"></i>\n <span>{{ file.name }}</span>\n </div>\n </td>\n <td class=\"type-column axp-explorer-item\" [axp-data]=\"file\">{{ fileInfo.type }}</td>\n <td class=\"size-column axp-explorer-item\" [axp-data]=\"file\">{{ file.size | format : 'filesize' | async }}</td>\n <td class=\"date-column axp-explorer-item\" [axp-data]=\"file\">\n {{ file.lastModified | format : 'datetime' : { format: 'datetime' } | async }}\n </td>\n </tr>\n</ng-template>\n\n<ng-template #folderLoading>\n <i class=\"fa-light fa-spinner fa-spin-pulse ax-text-2xl\"></i>\n</ng-template>\n\n<!-- Context Menu-->\n<ax-context-menu\n #itemsContextMenu\n [target]=\"'.axp-explorer-item'\"\n [orientation]=\"'vertical'\"\n [closeOn]=\"'leave'\"\n (onItemClick)=\"handleContextMenuItemClick($event)\"\n (onOpening)=\"handleContextMenuOnOpening($event)\"\n>\n</ax-context-menu>\n\n<ax-context-menu\n #rootContextMenu\n [target]=\"'axp-document-explorer'\"\n [orientation]=\"'vertical'\"\n [closeOn]=\"'leave'\"\n (onItemClick)=\"handleContextMenuItemClick($event)\"\n (onOpening)=\"handleContextMenuRootOnOpening($event)\"\n>\n</ax-context-menu>\n","import { AXBadgeModule } from '@acorex/components/badge';\nimport { AXBreadcrumbsModule } from '@acorex/components/breadcrumbs';\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXButtonGroupModule } from '@acorex/components/button-group';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXDropdownModule } from '@acorex/components/dropdown';\nimport { AXDropdownButtonModule } from '@acorex/components/dropdown-button';\nimport { AXLoadingModule } from '@acorex/components/loading';\nimport { AXMenuModule } from '@acorex/components/menu';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXPSimplePageLayout } from '@acorex/platform/themes/default';\n\nimport { AXSearchBoxModule } from '@acorex/components/search-box';\nimport { AXDateTimeModule } from '@acorex/core/date-time';\nimport { AXFileModule } from '@acorex/core/file';\nimport { AXFormatModule } from '@acorex/core/format';\nimport { AXPFileTypeProviderService } from '@acorex/platform/common';\nimport {\n AXPLayoutThemeService,\n AXPThemeLayoutActionsComponent,\n AXPThemeLayoutBlockComponent,\n AXPThemeLayoutFooterComponent,\n AXPThemeLayoutHeaderTemplateComponent,\n AXPThemeLayoutPagePrimaryActionsComponent,\n AXPThemeLayoutPageSecondaryActionsComponent,\n AXPThemeLayoutToolbarComponent,\n} from '@acorex/platform/themes/shared';\nimport { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n inject,\n OnInit,\n signal,\n untracked,\n viewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport { RouterModule, Router, ActivatedRoute, NavigationEnd } from '@angular/router';\nimport { RootConfig } from '../../const';\nimport { AXMDocumentManagerService } from '../shared';\nimport { AXMDocumentExplorerComponent, AXPDocumentExplorerViewModel } from '../document-explorer';\nimport { AXMDriveScope } from '../shared/document-manager.types';\nimport { AXPSessionService } from '@acorex/platform/auth';\n\n@Component({\n selector: 'axp-document-drive',\n templateUrl: './drive.component.html',\n styleUrls: ['./drive.component.scss'],\n standalone: true,\n imports: [\n CommonModule,\n RouterModule,\n AXMenuModule,\n AXButtonModule,\n AXButtonGroupModule,\n AXDropdownButtonModule,\n AXDropdownModule,\n AXTranslationModule,\n AXDecoratorModule,\n AXLoadingModule,\n AXBreadcrumbsModule,\n AXBadgeModule,\n AXSearchBoxModule,\n AXFormatModule,\n AXFileModule,\n AXPSimplePageLayout,\n AXPThemeLayoutBlockComponent,\n AXPThemeLayoutHeaderTemplateComponent,\n AXPThemeLayoutActionsComponent,\n AXPThemeLayoutPagePrimaryActionsComponent,\n AXPThemeLayoutPageSecondaryActionsComponent,\n AXPThemeLayoutToolbarComponent,\n AXPThemeLayoutFooterComponent,\n AXDateTimeModule,\n AXMDocumentExplorerComponent\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [AXPDocumentExplorerViewModel],\n})\nexport class AXMDocumentDriveComponent implements OnInit {\n\n protected readonly layout = inject(AXPLayoutThemeService);\n protected readonly rootConfig = RootConfig;\n private readonly fileTypeService = inject(AXPFileTypeProviderService);\n private readonly driveService = inject(AXMDocumentManagerService);\n protected readonly vm = inject(AXPDocumentExplorerViewModel);\n protected readonly router = inject(Router);\n protected readonly activatedRoute = inject(ActivatedRoute);\n protected readonly sessionService = inject(AXPSessionService);\n\n protected readonly filterItems = signal<Array<{ key: string; textKey: string; icon: string }>>([]);\n public selectedFilter = signal<string>('all');\n\n protected readonly sortItems = signal([\n { key: 'name', textKey: 'actions.sort-by-name', icon: 'fa-light fa-font' },\n { key: 'modified', textKey: 'actions.sort-by-date', icon: 'fa-light fa-calendar' },\n { key: 'size', textKey: 'actions.sort-by-size', icon: 'fa-light fa-weight-hanging' },\n ]);\n\n\n protected documentExplorer = viewChild(AXMDocumentExplorerComponent)\n\n protected readonly selectedSort = computed(() => {\n const items = this.sortItems();\n return items.find((item) => item.key === this.vm.sortField()) || items[0];\n });\n\n #navigateEffect = effect(() => {\n const navigatingFolderId = this.vm.navigatingFolderId();\n if (navigatingFolderId) {\n this.handleNavigateToFolder(navigatingFolderId);\n }\n });\n\n #loadingEffect = effect(() => {\n const isLoading = this.vm.isLoading();\n untracked(() => {\n this.layout.setNavigationLoading(isLoading);\n });\n });\n\n async ngOnInit() {\n await this.loadFilterItems();\n await this.vm.initialize();\n // Subscribe to route changes\n this.activatedRoute.paramMap.subscribe(async params => {\n this.loadDrive();\n });\n }\n\n private async loadDrive() {\n const folderId = this.activatedRoute.snapshot.paramMap.get('id');\n if (folderId) {\n await this.vm.loadFolderContents(folderId);\n } else {\n const root = await this.driveService.getRoot(AXMDriveScope.Platform);\n if (root.result) {\n await this.router.navigate(\n [`${this.sessionService.application?.name}/drive/my/${root.result.id}`],\n { replaceUrl: true }\n );\n }\n }\n }\n\n async loadFilterItems() {\n const types = await this.fileTypeService.items();\n const items = [\n { key: 'all', textKey: 'file-types.all', icon: 'fa-light fa-folder-closed' },\n ...types.map((type) => ({\n key: type.name,\n textKey: `file-types.${type.name}`,\n icon: type.icon || 'fa-light fa-file',\n })),\n ];\n this.filterItems.set(items);\n }\n\n protected setFilter(key: string): void {\n this.selectedFilter.set(key);\n }\n\n protected getFilterIcon(): string {\n if (this.selectedFilter() === 'all') {\n return 'fa-light fa-folder-closed';\n }\n const item = this.filterItems().find((item) => item.key === this.selectedFilter());\n return item?.icon || 'fa-light fa-file';\n }\n\n protected getFilterText(): string {\n if (this.selectedFilter() === 'all') {\n return 'file-types.all';\n }\n const item = this.filterItems().find((item) => item.key === this.selectedFilter());\n return item?.textKey || 'file-types.all';\n }\n\n protected handleNavigateToFolder(folderId: string) {\n this.router.navigate([`${this.sessionService.application?.name}/drive/my/${folderId}`]);\n }\n}\n","<!-- Main Layout -->\n<axp-layout-simple-page *translate=\"let t\">\n <!-- Header Section -->\n <axp-layout-header>\n <!-- Title Section -->\n <axp-layout-title>\n @if(vm.isRoot()) {\n {{ t('my-drive.title', { scope: rootConfig.config.i18n }) | async }}\n }@else {\n {{ vm.currentFolder()?.name }}\n }\n </axp-layout-title>\n\n <!-- Description Section -->\n <axp-layout-description>\n {{\n t('my-drive.description', {\n scope: rootConfig.config.i18n,\n params: {\n count: vm.itemsCount(),\n size: vm.availableSpace() | format : 'filesize' | async\n }\n }) | async\n }}\n </axp-layout-description>\n\n <!-- Actions Section -->\n <axp-layout-actions>\n <!-- Primary Actions -->\n <axp-layout-actions-primary>\n <!-- Upload Dropdown -->\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 <ax-button-item-list>\n <ax-button-item\n (onClick)=\"documentExplorer()?.createFolder()\"\n [text]=\"(t('actions.create-folder', { scope: rootConfig.config.i18n }) | async)!\"\n >\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-folder-plus\"></ax-icon>\n </ax-prefix>\n </ax-button-item>\n <ax-divider></ax-divider>\n <ax-button-item \n (onClick)=\"documentExplorer()?.uploadFile()\"\n [text]=\"(t('actions.upload-file', { scope: rootConfig.config.i18n }) | async)!\">\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 </axp-layout-actions-primary>\n\n <!-- Secondary Actions -->\n <axp-layout-actions-secondary>\n <ax-button-item [text]=\"(t('actions.fa-share', { scope: rootConfig.config.i18n }) | async)!\">\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-share-nodes\"></ax-icon>\n </ax-prefix>\n </ax-button-item>\n </axp-layout-actions-secondary>\n </axp-layout-actions>\n\n <!-- Breadcrumbs Section -->\n <axp-layout-breadcrumbs>\n <ax-breadcrumbs [class.ax-hidden]=\"layout.isSmall()\">\n <ng-template #divider>\n <i class=\"fa-regular fa-slash-forward\"></i>\n </ng-template>\n <ax-breadcrumbs-item> {{ t('home') | async }} </ax-breadcrumbs-item>\n <ax-breadcrumbs-item> {{ t('profile.title', { scope: 'auth' }) | async }} </ax-breadcrumbs-item>\n </ax-breadcrumbs>\n </axp-layout-breadcrumbs>\n\n <!-- Toolbar Section -->\n <axp-layout-toolbar>\n <!-- Left Side Toolbar -->\n <axp-layout-prefix>\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\n <!-- Search Box -->\n <ax-search-box class=\"ax-w-72\" [placeholder]=\"t('actions.search', { scope: rootConfig.config.i18n }) | async\"\n ><ax-clear-button></ax-clear-button\n ></ax-search-box>\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 @if(vm.isGridView()) {\n <ax-icon icon=\"fa-light fa-grid-2\"></ax-icon>\n }@else {\n <ax-icon icon=\"fa-light fa-list\"></ax-icon>\n }\n <ax-dropdown-panel>\n <ax-button-item-list>\n <ax-button-item\n [text]=\"(t('actions.grid-view', { scope: rootConfig.config.i18n }) | async)!\"\n [selected]=\"vm.isGridView()\"\n (onClick)=\"vm.setViewMode('grid')\"\n >\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-grid-2\"></ax-icon>\n </ax-prefix>\n </ax-button-item>\n <ax-button-item\n [text]=\"(t('actions.list-view', { scope: rootConfig.config.i18n }) | async)!\"\n (onClick)=\"vm.setViewMode('list')\"\n [selected]=\"vm.isListView()\"\n >\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-list\"></ax-icon>\n </ax-prefix>\n </ax-button-item>\n </ax-button-item-list>\n </ax-dropdown-panel>\n </ax-button>\n </axp-layout-suffix>\n </axp-layout-toolbar>\n </axp-layout-header>\n\n <!-- Content Section -->\n <axp-layout-content class=\"ax-overflow-hidden ax-flex ax-flex-col ax-flex-1\">\n <axp-document-explorer></axp-document-explorer>\n </axp-layout-content>\n\n <!-- Footer Section -->\n <axp-layout-footer>\n <axp-layout-prefix>\n <div class=\"breadcrumb ax-xs\">\n @for (item of vm.currentPath(); track item.id; let i = $index;let last = $last) {\n <!-- Navigation Button -->\n <ax-button look=\"blank\" (onClick)=\"handleNavigateToFolder(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=\"fa-regular fa-chevron-right fa-fw fa-xs\"></i>\n } }\n </div>\n </axp-layout-prefix>\n\n <axp-layout-suffix> </axp-layout-suffix>\n </axp-layout-footer>\n</axp-layout-simple-page>\n"],"names":["i3","i5","i6","i2","i4","i7","i8"],"mappings":"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"}
|