@acorex/modules 19.3.2 → 19.3.3-next.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (122) hide show
  1. package/common/index.d.ts +1 -0
  2. package/common/lib/common.module.d.ts +3 -2
  3. package/common/lib/features/global-search/index.d.ts +3 -0
  4. package/common/lib/features/global-search/search-popup.component.d.ts +22 -0
  5. package/common/lib/features/global-search/search-slot.component.d.ts +9 -0
  6. package/common/lib/features/global-search/search.config.d.ts +5 -0
  7. package/common/lib/features/global-search/search.module.d.ts +11 -0
  8. package/common/lib/features/global-search/search.viewmodel.d.ts +34 -0
  9. package/common/lib/features/global-search/workflows/search.workflow.d.ts +11 -0
  10. package/document-management/lib/features/document-explorer/document-explorer.component.d.ts +1 -0
  11. package/document-management/lib/features/document-explorer/document-explorer.viewmodel.d.ts +1 -0
  12. package/document-management/lib/features/document-explorer/views/detail-panel/detail-panel.component.d.ts +1 -0
  13. package/document-management/lib/features/document-explorer/views/details/details-view.component.d.ts +1 -0
  14. package/document-management/lib/features/document-explorer/views/large-icons/large-icons-view.component.d.ts +1 -0
  15. package/document-management/lib/features/document-explorer/views/large-tiles/large-tiles-view.component.d.ts +1 -0
  16. package/document-management/lib/features/document-explorer/views/list/list-view.component.d.ts +1 -0
  17. package/document-management/lib/features/document-explorer/views/small-icons/small-icons-view.component.d.ts +1 -0
  18. package/document-management/lib/features/document-explorer/views/small-tiles/small-tiles-view.component.d.ts +1 -0
  19. package/document-management/lib/features/drive/drive.component.d.ts +1 -0
  20. package/document-management/lib/features/drive-choose/drive-choose.component.d.ts +1 -0
  21. package/document-management/lib/features/shared/components/folder-path-breadcrumbs/folder-path-breadcrumbs.component.d.ts +1 -0
  22. package/document-management/lib/features/widgets/document-attachment/document-attachment-widget-edit.component.d.ts +4 -3
  23. package/document-management/lib/permission-definition.provider.d.ts +4 -0
  24. package/document-management/lib/permission.keys.d.ts +19 -0
  25. package/fesm2022/acorex-modules-common-search-popup.component-C3XUb6pF.mjs +128 -0
  26. package/fesm2022/acorex-modules-common-search-popup.component-C3XUb6pF.mjs.map +1 -0
  27. package/fesm2022/acorex-modules-common.mjs +289 -7
  28. package/fesm2022/acorex-modules-common.mjs.map +1 -1
  29. package/fesm2022/{acorex-modules-dashboard-management-acorex-modules-dashboard-management-VORBD1g-.mjs → acorex-modules-dashboard-management-acorex-modules-dashboard-management-Ccj2AaJ1.mjs} +3 -3
  30. package/fesm2022/{acorex-modules-dashboard-management-acorex-modules-dashboard-management-VORBD1g-.mjs.map → acorex-modules-dashboard-management-acorex-modules-dashboard-management-Ccj2AaJ1.mjs.map} +1 -1
  31. package/fesm2022/{acorex-modules-dashboard-management-home-dashboard-DiPn_RhH.mjs → acorex-modules-dashboard-management-home-dashboard-BXD0g_tp.mjs} +2 -2
  32. package/fesm2022/{acorex-modules-dashboard-management-home-dashboard-DiPn_RhH.mjs.map → acorex-modules-dashboard-management-home-dashboard-BXD0g_tp.mjs.map} +1 -1
  33. package/fesm2022/acorex-modules-dashboard-management.mjs +1 -1
  34. package/fesm2022/{acorex-modules-document-management-acorex-modules-document-management-vYaqbxKs.mjs → acorex-modules-document-management-acorex-modules-document-management-Dw7YKb_h.mjs} +59 -41
  35. package/fesm2022/acorex-modules-document-management-acorex-modules-document-management-Dw7YKb_h.mjs.map +1 -0
  36. package/fesm2022/{acorex-modules-document-management-create-folder-dialog.component-Bc_IX3gT.mjs → acorex-modules-document-management-create-folder-dialog.component-Ty5V60Tu.mjs} +2 -2
  37. package/fesm2022/{acorex-modules-document-management-create-folder-dialog.component-Bc_IX3gT.mjs.map → acorex-modules-document-management-create-folder-dialog.component-Ty5V60Tu.mjs.map} +1 -1
  38. package/fesm2022/{acorex-modules-document-management-details-view.component-_9f5TQJi.mjs → acorex-modules-document-management-details-view.component-BuUJq8WU.mjs} +2 -2
  39. package/fesm2022/{acorex-modules-document-management-details-view.component-_9f5TQJi.mjs.map → acorex-modules-document-management-details-view.component-BuUJq8WU.mjs.map} +1 -1
  40. package/fesm2022/{acorex-modules-document-management-drive-choose.component-CFOb0_MF.mjs → acorex-modules-document-management-drive-choose.component-DSCIj1X_.mjs} +2 -2
  41. package/fesm2022/{acorex-modules-document-management-drive-choose.component-CFOb0_MF.mjs.map → acorex-modules-document-management-drive-choose.component-DSCIj1X_.mjs.map} +1 -1
  42. package/fesm2022/{acorex-modules-document-management-large-icons-view.component-D9es4CBl.mjs → acorex-modules-document-management-large-icons-view.component-DvrdSkIZ.mjs} +2 -2
  43. package/fesm2022/{acorex-modules-document-management-large-icons-view.component-D9es4CBl.mjs.map → acorex-modules-document-management-large-icons-view.component-DvrdSkIZ.mjs.map} +1 -1
  44. package/fesm2022/{acorex-modules-document-management-large-tiles-view.component-Q1Sjg47F.mjs → acorex-modules-document-management-large-tiles-view.component-rIxsD8sE.mjs} +2 -2
  45. package/fesm2022/{acorex-modules-document-management-large-tiles-view.component-Q1Sjg47F.mjs.map → acorex-modules-document-management-large-tiles-view.component-rIxsD8sE.mjs.map} +1 -1
  46. package/fesm2022/{acorex-modules-document-management-list-view.component-BUu5vrul.mjs → acorex-modules-document-management-list-view.component-BrutZLAU.mjs} +2 -2
  47. package/fesm2022/{acorex-modules-document-management-list-view.component-BUu5vrul.mjs.map → acorex-modules-document-management-list-view.component-BrutZLAU.mjs.map} +1 -1
  48. package/fesm2022/acorex-modules-document-management-permission-definition.provider-CQOLEctF.mjs +31 -0
  49. package/fesm2022/acorex-modules-document-management-permission-definition.provider-CQOLEctF.mjs.map +1 -0
  50. package/fesm2022/{acorex-modules-document-management-rename-node-dialog.component-BMRmdslE.mjs → acorex-modules-document-management-rename-node-dialog.component-zSY0PShA.mjs} +2 -2
  51. package/fesm2022/{acorex-modules-document-management-rename-node-dialog.component-BMRmdslE.mjs.map → acorex-modules-document-management-rename-node-dialog.component-zSY0PShA.mjs.map} +1 -1
  52. package/fesm2022/{acorex-modules-document-management-small-icons-view.component-ChSS7z9z.mjs → acorex-modules-document-management-small-icons-view.component-CFB6g5r6.mjs} +2 -2
  53. package/fesm2022/{acorex-modules-document-management-small-icons-view.component-ChSS7z9z.mjs.map → acorex-modules-document-management-small-icons-view.component-CFB6g5r6.mjs.map} +1 -1
  54. package/fesm2022/{acorex-modules-document-management-small-tiles-view.component-Ci33qbBY.mjs → acorex-modules-document-management-small-tiles-view.component-Dp2Lnb3c.mjs} +2 -2
  55. package/fesm2022/{acorex-modules-document-management-small-tiles-view.component-Ci33qbBY.mjs.map → acorex-modules-document-management-small-tiles-view.component-Dp2Lnb3c.mjs.map} +1 -1
  56. package/fesm2022/acorex-modules-document-management.mjs +1 -1
  57. package/fesm2022/{acorex-modules-form-template-management-acorex-modules-form-template-management-Cv92x_9Z.mjs → acorex-modules-form-template-management-acorex-modules-form-template-management-CJ2Qoott.mjs} +33 -15
  58. package/fesm2022/acorex-modules-form-template-management-acorex-modules-form-template-management-CJ2Qoott.mjs.map +1 -0
  59. package/fesm2022/{acorex-modules-form-template-management-category.entity-DPVwQW4X.mjs → acorex-modules-form-template-management-category.entity-BjNsUAZq.mjs} +2 -2
  60. package/fesm2022/{acorex-modules-form-template-management-category.entity-DPVwQW4X.mjs.map → acorex-modules-form-template-management-category.entity-BjNsUAZq.mjs.map} +1 -1
  61. package/fesm2022/{acorex-modules-form-template-management-permission-definition.provider-BrWbwKTK.mjs → acorex-modules-form-template-management-permission-definition.provider-CqZ8ytjA.mjs} +2 -21
  62. package/fesm2022/acorex-modules-form-template-management-permission-definition.provider-CqZ8ytjA.mjs.map +1 -0
  63. package/fesm2022/{acorex-modules-form-template-management-settings.provider-iwOUp0iw.mjs → acorex-modules-form-template-management-settings.provider-LrzsYkiL.mjs} +2 -2
  64. package/fesm2022/{acorex-modules-form-template-management-settings.provider-iwOUp0iw.mjs.map → acorex-modules-form-template-management-settings.provider-LrzsYkiL.mjs.map} +1 -1
  65. package/fesm2022/{acorex-modules-form-template-management-template-widget-edit.component-BkR3x74p.mjs → acorex-modules-form-template-management-template-widget-edit.component-BP75i9zU.mjs} +2 -2
  66. package/fesm2022/{acorex-modules-form-template-management-template-widget-edit.component-BkR3x74p.mjs.map → acorex-modules-form-template-management-template-widget-edit.component-BP75i9zU.mjs.map} +1 -1
  67. package/fesm2022/{acorex-modules-form-template-management-template.entity-NgmH7r8R.mjs → acorex-modules-form-template-management-template.entity-CCaHPkWq.mjs} +2 -2
  68. package/fesm2022/{acorex-modules-form-template-management-template.entity-NgmH7r8R.mjs.map → acorex-modules-form-template-management-template.entity-CCaHPkWq.mjs.map} +1 -1
  69. package/fesm2022/{acorex-modules-form-template-management-viewer-popup.component-Cq33xA62.mjs → acorex-modules-form-template-management-viewer-popup.component-CUOsh6e5.mjs} +2 -2
  70. package/fesm2022/{acorex-modules-form-template-management-viewer-popup.component-Cq33xA62.mjs.map → acorex-modules-form-template-management-viewer-popup.component-CUOsh6e5.mjs.map} +1 -1
  71. package/fesm2022/acorex-modules-form-template-management.mjs +1 -1
  72. package/fesm2022/{acorex-modules-issue-management-acorex-modules-issue-management-U5EJyG5e.mjs → acorex-modules-issue-management-acorex-modules-issue-management-DcmAnBue.mjs} +2 -3
  73. package/fesm2022/{acorex-modules-issue-management-acorex-modules-issue-management-U5EJyG5e.mjs.map → acorex-modules-issue-management-acorex-modules-issue-management-DcmAnBue.mjs.map} +1 -1
  74. package/fesm2022/{acorex-modules-issue-management-capture-screen.component-3ZAOJBfn.mjs → acorex-modules-issue-management-capture-screen.component-BMpafdHr.mjs} +2 -2
  75. package/fesm2022/{acorex-modules-issue-management-capture-screen.component-3ZAOJBfn.mjs.map → acorex-modules-issue-management-capture-screen.component-BMpafdHr.mjs.map} +1 -1
  76. package/fesm2022/acorex-modules-issue-management.mjs +1 -1
  77. package/fesm2022/acorex-modules-log-management.mjs +3 -8
  78. package/fesm2022/acorex-modules-log-management.mjs.map +1 -1
  79. package/fesm2022/{acorex-modules-organization-management-add-item.component-DW0TneoX.mjs → acorex-modules-organization-management-add-item.component-DE0Ek0dk.mjs} +3 -3
  80. package/fesm2022/{acorex-modules-organization-management-add-item.component-DW0TneoX.mjs.map → acorex-modules-organization-management-add-item.component-DE0Ek0dk.mjs.map} +1 -1
  81. package/fesm2022/acorex-modules-organization-management-org-chart-configuration.page-RuvkSheN.mjs +124 -0
  82. package/fesm2022/acorex-modules-organization-management-org-chart-configuration.page-RuvkSheN.mjs.map +1 -0
  83. package/fesm2022/{acorex-modules-organization-management-org-chart.page-DnRbGIWN.mjs → acorex-modules-organization-management-org-chart.page-C2qYJxpY.mjs} +59 -19
  84. package/fesm2022/acorex-modules-organization-management-org-chart.page-C2qYJxpY.mjs.map +1 -0
  85. package/fesm2022/acorex-modules-organization-management.mjs +7 -7
  86. package/fesm2022/acorex-modules-organization-management.mjs.map +1 -1
  87. package/fesm2022/{acorex-modules-platform-management-acorex-modules-platform-management-5lToZD6T.mjs → acorex-modules-platform-management-acorex-modules-platform-management-BaYlXX3M.mjs} +44 -51
  88. package/fesm2022/acorex-modules-platform-management-acorex-modules-platform-management-BaYlXX3M.mjs.map +1 -0
  89. package/fesm2022/{acorex-modules-platform-management-list-version.component-BElZjmXr.mjs → acorex-modules-platform-management-list-version.component-DB8pe9so.mjs} +2 -2
  90. package/fesm2022/{acorex-modules-platform-management-list-version.component-BElZjmXr.mjs.map → acorex-modules-platform-management-list-version.component-DB8pe9so.mjs.map} +1 -1
  91. package/fesm2022/{acorex-modules-platform-management-settings.provider-CemrvnbH.mjs → acorex-modules-platform-management-settings.provider-BQzM-lyt.mjs} +2 -2
  92. package/fesm2022/{acorex-modules-platform-management-settings.provider-CemrvnbH.mjs.map → acorex-modules-platform-management-settings.provider-BQzM-lyt.mjs.map} +1 -1
  93. package/fesm2022/acorex-modules-platform-management.mjs +1 -1
  94. package/fesm2022/acorex-modules-settings-management-setting-page.component-XDFtTqft.mjs +219 -0
  95. package/fesm2022/acorex-modules-settings-management-setting-page.component-XDFtTqft.mjs.map +1 -0
  96. package/fesm2022/acorex-modules-settings-management-setting-view.component-B_6RIU9e.mjs +103 -0
  97. package/fesm2022/acorex-modules-settings-management-setting-view.component-B_6RIU9e.mjs.map +1 -0
  98. package/fesm2022/acorex-modules-settings-management.mjs +442 -0
  99. package/fesm2022/acorex-modules-settings-management.mjs.map +1 -0
  100. package/fesm2022/acorex-modules-training-management.mjs +0 -2
  101. package/fesm2022/acorex-modules-training-management.mjs.map +1 -1
  102. package/organization-management/lib/features/organization-chart/org-chart-configuration.page.d.ts +7 -61
  103. package/organization-management/lib/features/organization-chart/org-chart.page.d.ts +8 -61
  104. package/package.json +5 -1
  105. package/platform-management/lib/const.d.ts +2 -6
  106. package/platform-management/lib/features/app-terms/pages/list/list-terms.component.d.ts +11 -13
  107. package/settings-management/README.md +3 -0
  108. package/settings-management/index.d.ts +2 -0
  109. package/settings-management/lib/features/settings/convert-setting-data.d.ts +2 -0
  110. package/settings-management/lib/features/settings/search-definition.provider.d.ts +4 -0
  111. package/settings-management/lib/features/settings/search.provider.d.ts +9 -0
  112. package/settings-management/lib/features/settings/setting-page/setting-page.component.d.ts +65 -0
  113. package/settings-management/lib/features/settings/setting-view/setting-view.component.d.ts +135 -0
  114. package/settings-management/lib/features/settings/settings.viewmodel.d.ts +46 -0
  115. package/settings-management/lib/settings-management.module.d.ts +9 -0
  116. package/fesm2022/acorex-modules-document-management-acorex-modules-document-management-vYaqbxKs.mjs.map +0 -1
  117. package/fesm2022/acorex-modules-form-template-management-acorex-modules-form-template-management-Cv92x_9Z.mjs.map +0 -1
  118. package/fesm2022/acorex-modules-form-template-management-permission-definition.provider-BrWbwKTK.mjs.map +0 -1
  119. package/fesm2022/acorex-modules-organization-management-org-chart-configuration.page-DFqOS0So.mjs +0 -92
  120. package/fesm2022/acorex-modules-organization-management-org-chart-configuration.page-DFqOS0So.mjs.map +0 -1
  121. package/fesm2022/acorex-modules-organization-management-org-chart.page-DnRbGIWN.mjs.map +0 -1
  122. package/fesm2022/acorex-modules-platform-management-acorex-modules-platform-management-5lToZD6T.mjs.map +0 -1
@@ -25,7 +25,7 @@ import { AXPLayoutThemeService, AXPThemeLayoutBlockComponent } from '@acorex/pla
25
25
  import * as i2$2 from '@acorex/components/loading';
26
26
  import { AXLoadingModule } from '@acorex/components/loading';
27
27
  import { AXPopupService } from '@acorex/components/popup';
28
- import { A as AXMDashboardService, R as RootConfig } from './acorex-modules-dashboard-management-acorex-modules-dashboard-management-VORBD1g-.mjs';
28
+ import { A as AXMDashboardService, R as RootConfig } from './acorex-modules-dashboard-management-acorex-modules-dashboard-management-Ccj2AaJ1.mjs';
29
29
  import { AXPSettingService } from '@acorex/platform/common';
30
30
  import { AXPPlatformScope, AXPDataGenerator } from '@acorex/platform/core';
31
31
  import { signalStore, withState, withComputed, withMethods, patchState } from '@ngrx/signals';
@@ -832,4 +832,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImpor
832
832
  }] });
833
833
 
834
834
  export { AXMDashboardHomeComponent };
835
- //# sourceMappingURL=acorex-modules-dashboard-management-home-dashboard-DiPn_RhH.mjs.map
835
+ //# sourceMappingURL=acorex-modules-dashboard-management-home-dashboard-BXD0g_tp.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"acorex-modules-dashboard-management-home-dashboard-DiPn_RhH.mjs","sources":["../../../../libs/modules/dashboard-management/src/lib/features/home-dashboard/widget-wrapper/dashboard-widget-wrapper.ts","../../../../libs/modules/dashboard-management/src/lib/features/home-dashboard/widget-wrapper/dashboard-widget-wrapper.html","../../../../libs/modules/dashboard-management/src/lib/settings.keys.ts","../../../../libs/modules/dashboard-management/src/lib/features/home-dashboard/dashboard-popups/add-dashboard-popup.ts","../../../../libs/modules/dashboard-management/src/lib/features/home-dashboard/dashboard-popups/configuration-popup.ts","../../../../libs/modules/dashboard-management/src/lib/features/home-dashboard/dashboard-popups/dashboard-popup.service.ts","../../../../libs/modules/dashboard-management/src/lib/features/home-dashboard/dashboard-home/home-dashboard.store.ts","../../../../libs/modules/dashboard-management/src/lib/features/home-dashboard/dashboard-home/home-dashboard.ts","../../../../libs/modules/dashboard-management/src/lib/features/home-dashboard/dashboard-home/home-dashboard.html"],"sourcesContent":["import { AXButtonItemComponent, AXButtonModule } from '@acorex/components/button';\nimport { AXEvent, AXItemClickEvent } from '@acorex/components/common';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXDropdownModule } from '@acorex/components/dropdown';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXPWidgetRendererDirective } from '@acorex/platform/layout/builder';\nimport { CommonModule } from '@angular/common';\nimport {\n afterNextRender,\n ChangeDetectionStrategy,\n Component,\n contentChild,\n input,\n output,\n signal,\n} from '@angular/core';\n\n@Component({\n selector: 'axm-dashboard-widget-wrapper',\n templateUrl: './dashboard-widget-wrapper.html',\n styleUrls: ['./dashboard-widget-wrapper.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [AXButtonModule, AXDecoratorModule, AXDropdownModule, AXTranslationModule, CommonModule],\n standalone: true,\n})\nexport class AXMDashboardWidgetWrapperComponent {\n title = input<string | null>(null);\n\n onDelete = output<void>();\n onConfiguration = output<void>();\n onValueChanged = output<unknown>();\n onOptionsChanged = output<unknown>();\n\n widget = contentChild(AXPWidgetRendererDirective);\n\n #init = afterNextRender(() => {\n this.widget()?.onOptionsChanged.subscribe((c) => {\n this.onOptionsChanged.emit(c.widget.options());\n });\n this.widget()?.onValueChanged.subscribe((c) => {\n this.onValueChanged.emit(c.widget.getValue());\n });\n });\n\n hasConfiguration = input<boolean>(true);\n isDropdownOpen = signal(false);\n\n handleOnItemClick(event: AXItemClickEvent<AXButtonItemComponent>) {\n switch (event.item.data) {\n case 'delete':\n this.onDelete.emit();\n break;\n case 'configuration':\n this.onConfiguration.emit();\n break;\n default:\n break;\n }\n this.isDropdownOpen.set(false);\n }\n log(event: AXEvent) {\n console.log('Dropdown event:', event);\n }\n}\n","<section class=\"ax-relative ax-size-full ax-flex ax-flex-col ax-group ax-overflow-hidden\">\n <!-- Action button - stays absolute -->\n <div\n class=\"ax-p-[0.6125rem] ax-absolute ax-top-0 ax-end-0 ax-z-[99] ax-invisible group-hover:ax-visible\"\n [class.!ax-visible]=\"isDropdownOpen()\"\n >\n <ax-button class=\"ax-sm\" [look]=\"'blank'\">\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-ellipsis-vertical\"></ax-icon>\n </ax-prefix>\n <ax-dropdown-panel (onOpened)=\"isDropdownOpen.set(true)\" (onClosed)=\"isDropdownOpen.set(false)\">\n <ng-container *translate=\"let t\">\n <ax-button-item-list (onItemClick)=\"handleOnItemClick($event)\">\n @if(hasConfiguration()){\n <ax-button-item\n [data]=\"'configuration'\"\n [text]=\"(t('configuration', { scope: 'dashboard' }) | async) || 'configuration'\"\n >\n <ax-prefix>\n <ax-icon icon=\"fa-solid fa-cog\"></ax-icon>\n </ax-prefix>\n </ax-button-item>\n <ax-divider></ax-divider>\n }\n <ax-button-item\n [data]=\"'delete'\"\n [text]=\"(t('delete', { scope: 'dashboard' }) | async) || 'delete'\"\n color=\"danger\"\n >\n <ax-prefix>\n <ax-icon icon=\"fa-solid fa-trash-can\"></ax-icon>\n </ax-prefix>\n </ax-button-item>\n </ax-button-item-list>\n </ng-container>\n </ax-dropdown-panel>\n </ax-button>\n </div>\n\n <!-- Title section -->\n @if(title()) {\n <div class=\"ax-ps-5 ax-pe-8 ax-py-3 ax-border-b\">\n <h3 class=\"ax-text-start ax-text-lg ax-font-medium ax-truncate\">{{title()}}</h3>\n </div>\n }\n\n <!-- Content section -->\n <div class=\"ax-overflow-auto ax-h-full\">\n <ng-content></ng-content>\n </div>\n</section>\n","const path = 'home:dashboard:';\nexport enum AXPHomeDashboardSetting {\n CurrentDashboard = `${path}current-dashboard`,\n}\n","import { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXLabelModule } from '@acorex/components/label';\nimport { AXBasePageComponent } from '@acorex/components/page';\nimport { AXTextBoxModule } from '@acorex/components/text-box';\nimport { Component, model, OnInit } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { AXMDashboardLayout } from '../dashboard-home';\n\ninterface AXMAddDashboardPopupResult extends Partial<AXMDashboardLayout> {\n isCanceled: boolean;\n}\n\n@Component({\n template: `\n <div class=\"ax-grid ax-grid-cols-[auto_18rem] ax-gap-4 ax-justify-center ax-p-4 ax-items-center\">\n <ax-label>Title</ax-label>\n <ax-text-box [(ngModel)]=\"title\" name=\"title\" placeholder=\"Enter dashboard title\"> </ax-text-box>\n\n <ax-label>Description</ax-label>\n <ax-text-box [(ngModel)]=\"description\" name=\"description\" placeholder=\"Enter dashboard description\">\n </ax-text-box>\n </div>\n\n <ax-footer>\n <ax-prefix></ax-prefix>\n <ax-suffix>\n <ax-button text=\"Cancel\" look=\"solid\" (onClick)=\"handleClose(true)\"> </ax-button>\n <ax-button text=\"Save\" look=\"solid\" color=\"primary\" [disabled]=\"!isValid\" (onClick)=\"handleClose()\">\n <ax-icon class=\"fa-solid fa-save\"></ax-icon>\n </ax-button>\n </ax-suffix>\n </ax-footer>\n `,\n imports: [FormsModule, AXButtonModule, AXTextBoxModule, AXLabelModule, AXDecoratorModule],\n})\nexport class AXMAddDashboardPopup extends AXBasePageComponent implements OnInit {\n private readonly data: Partial<AXMDashboardLayout>;\n\n protected readonly title = model<string>('');\n protected readonly description = model<string>('');\n\n protected get isValid(): boolean {\n return !!this.title()?.trim();\n }\n\n override ngOnInit(): void {\n this.title.set(this.data?.title || '');\n this.description.set(this.data?.description || '');\n }\n\n protected async handleClose(isCanceled = false): Promise<void> {\n this.close({\n title: this.title()?.trim(),\n description: this.description()?.trim(),\n isCanceled,\n });\n }\n}\n","import { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXBasePageComponent } from '@acorex/components/page';\nimport { AXPWidgetNode } from '@acorex/platform/layout/builder';\nimport { AXPWidgetPropertiesChangedEvent, AXPWidgetPropertyViewerComponent } from '@acorex/platform/layout/designer';\nimport { Component, OnInit, signal } from '@angular/core';\n\n@Component({\n template: `\n @if(widget) {\n <div class=\"ax-px-1\">\n <axp-widget-property-viewer (onChanged)=\"handlePropertyChange($event)\" [widget]=\"widget\">\n </axp-widget-property-viewer>\n </div>\n }\n <ax-footer>\n <ax-prefix></ax-prefix>\n <ax-suffix>\n <ax-button text=\"Cancel\" look=\"solid\" (onClick)=\"handleClose(true)\"> </ax-button>\n <ax-button text=\"Save\" look=\"solid\" color=\"primary\" (onClick)=\"handleClose()\">\n <ax-icon class=\"fa-solid fa-save\"></ax-icon>\n </ax-button>\n </ax-suffix>\n </ax-footer>\n `,\n imports: [AXButtonModule, AXDecoratorModule, AXPWidgetPropertyViewerComponent],\n})\nexport class AXMConfigurationPopup extends AXBasePageComponent implements OnInit {\n widget!: AXPWidgetNode;\n protected readonly widgetData = signal<AXPWidgetNode | null>(null);\n\n override ngOnInit(): void {\n this.widgetData.set(this.widget);\n }\n\n protected async handleClose(isCanceled = false): Promise<void> {\n this.close({\n isCanceled,\n widget: this.widgetData(),\n });\n }\n\n protected handlePropertyChange(event: AXPWidgetPropertiesChangedEvent): void {\n this.widgetData.set(event.values);\n }\n}\n","import { AXPopupService } from '@acorex/components/popup';\nimport { AXPWidgetNode } from '@acorex/platform/layout/builder';\nimport { inject, Injectable } from '@angular/core';\nimport { AXMDashboardLayout } from '../dashboard-home';\nimport { AXMAddDashboardPopup } from './add-dashboard-popup';\nimport { AXMConfigurationPopup } from './configuration-popup';\n\n@Injectable({ providedIn: 'root' })\nexport class AXMDashboardPopupService {\n private readonly popupService = inject(AXPopupService);\n\n async generateDashboardLayout(data: Partial<AXMDashboardLayout>): Promise<AXMDashboardLayout | void> {\n const result = await this.popupService.open(AXMAddDashboardPopup, {\n header: true,\n size: 'fit',\n draggable: true,\n hasBackdrop: true,\n title: 'Dashboard Layout Details',\n data: { data },\n });\n\n if (!result.data) {\n return;\n }\n\n const { isCanceled, ...rest } = result.data;\n if (isCanceled) {\n return;\n }\n\n return rest as AXMDashboardLayout;\n }\n\n async handlePopupConfiguration(widget: AXPWidgetNode): Promise<AXPWidgetNode | void> {\n const result = await this.popupService.open(AXMConfigurationPopup, {\n header: true,\n size: 'sm',\n draggable: true,\n hasBackdrop: true,\n title: 'Widget Configuration',\n data: { widget },\n });\n\n if (!result.data) {\n return;\n }\n\n const { isCanceled, ...rest } = result.data;\n if (isCanceled) {\n return;\n }\n\n return rest.widget as AXPWidgetNode;\n }\n}\n","import { AXDialogService } from '@acorex/components/dialog';\nimport { AXGridLayoutEvent, AXGridLayoutOptions } from '@acorex/components/grid-layout-builder';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { AXPSettingService } from '@acorex/platform/common';\nimport { AXPDataGenerator, AXPPlatformScope } from '@acorex/platform/core';\nimport { AXPWidgetGroupEnum, AXPWidgetNode } from '@acorex/platform/layout/builder';\nimport { AXPWidgetPickerService } from '@acorex/platform/layout/designer';\nimport { computed, effect, inject } from '@angular/core';\nimport { patchState, signalStore, withComputed, withMethods, withState } from '@ngrx/signals';\nimport { AXMDashboardService } from '../../../entities/dashboard/dashboard.service';\nimport { AXMCommonDashboardEntityModel } from '../../../entities/dashboard/dashboard.types';\nimport { AXPHomeDashboardSetting } from '../../../settings.keys';\nimport { AXMDashboardPopupService } from '../dashboard-popups/dashboard-popup.service';\nimport { AXMDashboardLayout, AXMDashboardWidgetData } from './home-dashboard.type';\n\n// Create the SignalStore\nexport const AXMDashboardStore = signalStore(\n { providedIn: 'root' },\n\n // Initial State Definition\n withState(() => {\n // Define initial empty state\n const state = {\n dashboards: [] as AXMDashboardLayout[],\n currentDashboardId: null as string | null,\n dashboardsOption: {\n float: true,\n cellHeight: 75,\n gap: 5,\n minRow: 9,\n column: 12,\n responsiveLayout: [\n { column: 12, width: 2048 },\n { column: 6, width: 768 },\n { column: 1, width: 480 },\n ],\n } as AXGridLayoutOptions,\n isLoading: false,\n };\n\n return state;\n }),\n\n // Computed Properties\n withComputed((state) => ({\n currentDashboard: computed(() => {\n return state.dashboards().find((dashboard) => dashboard.id === state.currentDashboardId()) || null;\n }),\n })),\n\n // Methods for State Management\n withMethods(\n (\n store,\n dashboardPopup = inject(AXMDashboardPopupService),\n dialogService = inject(AXDialogService),\n translationService = inject(AXTranslationService),\n widgetPickerService = inject(AXPWidgetPickerService),\n dashboardService = inject(AXMDashboardService),\n settingService = inject(AXPSettingService)\n ) => {\n // Load dashboards from service - runs on init via effect\n effect(() => {\n loadDashboards();\n });\n\n // Load dashboards from service\n async function loadDashboards(): Promise<void> {\n try {\n patchState(store, { isLoading: true });\n\n // Get dashboards from service using query method\n const result = await dashboardService.query({ skip: 0, take: 100 });\n const dashboardModels = result.items || [];\n\n // Convert dashboard models to AXPDashboardLayout\n const dashboards = dashboardModels.map(modelToDashboardLayout);\n\n // Get current dashboard from settings\n const currentDashboardId = await settingService\n .scope(AXPPlatformScope.User)\n .get(AXPHomeDashboardSetting.CurrentDashboard);\n\n let newCurrentDashboardId = null;\n\n if (dashboards.length > 0) {\n // Check if currentDashboardId exists and is valid\n const dashboardExists = currentDashboardId && dashboards.some((d) => d.id === currentDashboardId);\n\n if (dashboardExists) {\n newCurrentDashboardId = currentDashboardId as string;\n } else {\n // If current dashboard is not valid or not set, use the first one\n newCurrentDashboardId = dashboards[0].id;\n // Save to user settings\n settingService\n .scope(AXPPlatformScope.User)\n .set(AXPHomeDashboardSetting.CurrentDashboard, newCurrentDashboardId);\n }\n }\n\n patchState(store, {\n dashboards,\n isLoading: false,\n currentDashboardId: newCurrentDashboardId,\n });\n } catch (error) {\n console.error('Error loading dashboards:', error);\n patchState(store, { isLoading: false });\n }\n }\n\n // Convert entity model to dashboard layout\n function modelToDashboardLayout(model: AXMCommonDashboardEntityModel): AXMDashboardLayout {\n return {\n id: model.id || '',\n title: model.title,\n description: model.description,\n widgets: model.widgets || [],\n };\n }\n\n // Convert dashboard layout to entity model\n function dashboardLayoutToModel(layout: AXMDashboardLayout): AXMCommonDashboardEntityModel {\n return {\n id: layout.id,\n name: layout.title,\n title: layout.title,\n description: layout.description || '',\n widgets: layout.widgets,\n };\n }\n\n return {\n // Set current dashboard\n setCurrentDashboard(dashboardId: string): void {\n patchState(store, { currentDashboardId: dashboardId });\n settingService.scope(AXPPlatformScope.User).set(AXPHomeDashboardSetting.CurrentDashboard, dashboardId);\n },\n\n // Add a new dashboard\n async addDashboard(): Promise<void> {\n try {\n const newDashboard = await dashboardPopup.generateDashboardLayout({});\n if (!newDashboard) return;\n\n // Create dashboard model and save to service\n const dashboardModel = dashboardLayoutToModel(newDashboard);\n const createdDashboardId = await dashboardService.insertOne(dashboardModel);\n\n newDashboard.id = createdDashboardId;\n newDashboard.widgets = [];\n\n // Update local state\n const updatedDashboards = [...store.dashboards(), newDashboard];\n\n patchState(store, {\n dashboards: updatedDashboards,\n currentDashboardId: newDashboard.id,\n });\n\n // Save current dashboard to settings\n settingService.scope(AXPPlatformScope.User).set(AXPHomeDashboardSetting.CurrentDashboard, newDashboard.id);\n } catch (error) {\n console.error('Error adding dashboard:', error);\n }\n },\n\n // Add a widget to the current dashboard\n async addWidget(): Promise<void> {\n if (!store.currentDashboardId()) {\n console.warn('No current dashboard selected');\n return;\n }\n\n try {\n const widgets = await widgetPickerService.showPicker({\n groups: [AXPWidgetGroupEnum.DashboardWidget],\n });\n\n //remove meta from widgets //TODO TEMPORARY FIX\n const filteredWidgets = (widgets as any[]).map(({ __meta__, ...rest }) => rest);\n if (filteredWidgets[0]?.type === 'sticky-note') {\n if (!filteredWidgets[0].options) {\n filteredWidgets[0].options = {};\n }\n filteredWidgets[0].options.hasConfiguration = false;\n }\n filteredWidgets.forEach((widget) => {\n const randomId = AXPDataGenerator.uuid();\n widget.name = widget?.type + '-' + randomId;\n widget.path = widget?.type + '-' + randomId;\n });\n\n // Step 2: Convert the selected widgets into AXPDashboardWidgetData format\n const convertedWidgets: AXMDashboardWidgetData[] = filteredWidgets.map((widget) => {\n const id = AXPDataGenerator.uuid();\n return {\n config: {\n height: widget?.meta?.dimensions?.height ?? 2,\n width: widget?.meta?.dimensions?.width ?? 2,\n minHeight: widget?.meta?.dimensions?.minHeight,\n minWidth: widget?.meta?.dimensions?.minWidth,\n maxHeight: widget?.meta?.dimensions?.maxHeight,\n maxWidth: widget?.meta?.dimensions?.maxWidth,\n id,\n },\n node: { ...widget, name: id },\n };\n });\n\n // Step 3: Update the dashboards\n const updatedDashboards = store.dashboards().map((dashboard) => {\n if (dashboard.id === store.currentDashboardId()) {\n return {\n ...dashboard,\n widgets: [...dashboard.widgets, ...convertedWidgets],\n };\n }\n return dashboard;\n });\n\n // Step 4: Save the updated dashboard to the service\n const currentDashboard = updatedDashboards.find((d) => d.id === store.currentDashboardId());\n if (currentDashboard) {\n await dashboardService.updateOne(currentDashboard.id, dashboardLayoutToModel(currentDashboard));\n }\n\n patchState(store, { dashboards: updatedDashboards });\n } catch (error) {\n console.error('Error adding widget:', error);\n }\n },\n\n // Remove a dashboard\n async removeDashboard(id: string): Promise<void> {\n if (!id) {\n console.warn('No dashboard ID provided for removal');\n return;\n }\n\n try {\n const dialogResult = await dialogService.confirm(\n await translationService.translateAsync('workflow.warning'),\n await translationService.translateAsync('workflow.confirm-delete'),\n 'danger',\n 'horizontal'\n );\n\n if (dialogResult.result) {\n // Delete from service\n await dashboardService.deleteOne(id);\n\n // Remove the dashboard from local state\n const updatedDashboards = store.dashboards().filter((dashboard) => dashboard.id !== id);\n\n // Update state and select a new current dashboard if needed\n let newCurrentDashboardId = store.currentDashboardId();\n\n if (id === store.currentDashboardId()) {\n newCurrentDashboardId =\n updatedDashboards.length > 0 ? updatedDashboards[updatedDashboards.length - 1].id : null;\n\n // Save to settings if we changed the current dashboard\n if (newCurrentDashboardId) {\n settingService\n .scope(AXPPlatformScope.User)\n .set(AXPHomeDashboardSetting.CurrentDashboard, newCurrentDashboardId);\n }\n }\n\n patchState(store, {\n dashboards: updatedDashboards,\n currentDashboardId: newCurrentDashboardId,\n });\n }\n } catch (error) {\n console.error('Error removing dashboard:', error);\n }\n },\n\n // Remove a widget from a dashboard\n async removeWidget(dashboardId: string, widgetId: string): Promise<void> {\n const currentDashboard = store.dashboards().find((d) => d.id === dashboardId);\n if (!currentDashboard) return;\n\n const updatedDashboard = {\n ...currentDashboard,\n widgets: currentDashboard.widgets.filter((widget) => widget.config.id !== widgetId),\n };\n\n // Save to service\n await dashboardService.updateOne(dashboardId, dashboardLayoutToModel(updatedDashboard));\n\n // Update local state\n const updatedDashboards = store\n .dashboards()\n .map((dashboard) => (dashboard.id === dashboardId ? updatedDashboard : dashboard));\n\n patchState(store, { dashboards: updatedDashboards });\n },\n\n // Handle configuration changes\n async handleConfigChange(dashboard: AXMDashboardLayout): Promise<void> {\n // Save to service\n await dashboardService.updateOne(dashboard.id, dashboardLayoutToModel(dashboard));\n\n // Update local state\n const updatedDashboards = store.dashboards().map((d) => (d.id === dashboard.id ? dashboard : d));\n\n patchState(store, {\n dashboards: updatedDashboards,\n currentDashboardId: dashboard.id,\n });\n\n // Save current dashboard to settings\n settingService.scope(AXPPlatformScope.User).set(AXPHomeDashboardSetting.CurrentDashboard, dashboard.id);\n },\n\n // Handle grid layout changes\n async onGridChange(event: AXGridLayoutEvent): Promise<void> {\n if (!store.currentDashboard()) {\n console.warn('No current dashboard for grid change');\n return;\n }\n\n // Extract nodes from the event and remove the `element` property\n const nodes = event.nodes.map(({ element, ...rest }) => rest);\n\n // Update the current dashboard\n const currentDashboard = store.currentDashboard()!;\n const updatedWidgets = currentDashboard.widgets.map((widget) => {\n const updatedNode = nodes.find((node) => node.id === widget.config.id);\n if (updatedNode) {\n return {\n ...widget,\n config: updatedNode,\n };\n }\n return widget;\n });\n\n const updatedDashboard = {\n ...currentDashboard,\n widgets: updatedWidgets,\n };\n\n // Save to service\n await dashboardService.updateOne(updatedDashboard.id, dashboardLayoutToModel(updatedDashboard));\n\n // Update the dashboards\n const updatedDashboards = store\n .dashboards()\n .map((dashboard) => (dashboard.id === updatedDashboard.id ? updatedDashboard : dashboard));\n\n patchState(store, { dashboards: updatedDashboards });\n },\n\n // Handle widget configuration\n async handlePopupConfiguration(widgetNode: AXPWidgetNode): Promise<void> {\n if (!store.currentDashboard()) {\n console.warn('No current dashboard selected');\n return;\n }\n\n try {\n const updatedNode = await dashboardPopup.handlePopupConfiguration(widgetNode);\n\n if (!updatedNode) {\n return;\n }\n\n // Update the current dashboard's widget with the new configuration\n const currentDashboard = store.currentDashboard()!;\n const updatedWidgets = currentDashboard.widgets.map((widget) => {\n if (widget.node?.name === widgetNode.name && widget.node?.path === widgetNode.path) {\n return {\n ...widget,\n node: updatedNode,\n };\n }\n return widget;\n });\n\n const updatedDashboard = {\n ...currentDashboard,\n widgets: updatedWidgets,\n };\n\n // Save to service\n await dashboardService.updateOne(updatedDashboard.id, dashboardLayoutToModel(updatedDashboard));\n\n // Update the dashboards state\n const updatedDashboards = store\n .dashboards()\n .map((dashboard) => (dashboard.id === updatedDashboard.id ? updatedDashboard : dashboard));\n\n patchState(store, { dashboards: updatedDashboards });\n } catch (error) {\n console.error('Error handling widget configuration:', error);\n }\n },\n\n // Handle widget value changes\n async handleValueChanged(widgetNode: AXPWidgetNode, data: unknown): Promise<void> {\n if (!store.currentDashboard()) {\n console.warn('No current dashboard selected');\n return;\n }\n\n try {\n // Update the current dashboard's widget with the new value\n const currentDashboard = store.currentDashboard()!;\n const updatedWidgets = currentDashboard.widgets.map((widget) => {\n if (widget.node && widget.node.name === widgetNode.name && widget.node.path === widgetNode.path) {\n return {\n ...widget,\n node: {\n ...widget.node,\n defaultValue: data,\n },\n } as AXMDashboardWidgetData;\n }\n return widget;\n });\n\n const updatedDashboard = {\n ...currentDashboard,\n widgets: updatedWidgets,\n };\n\n // Save to service\n await dashboardService.updateOne(updatedDashboard.id, dashboardLayoutToModel(updatedDashboard));\n\n // Update the dashboards state\n const updatedDashboards = store\n .dashboards()\n .map((dashboard) => (dashboard.id === updatedDashboard.id ? updatedDashboard : dashboard));\n\n // patchState(store, { dashboards: updatedDashboards });\n } catch (error) {\n console.error('Error handling widget value change:', error);\n }\n },\n\n // Handle widget options changes\n async handleOptionsChanged(widgetNode: AXPWidgetNode, data: unknown): Promise<void> {\n if (!store.currentDashboard()) {\n console.warn('No current dashboard selected');\n return;\n }\n\n try {\n // Update the current dashboard's widget with the new options\n const currentDashboard = store.currentDashboard()!;\n const updatedWidgets = currentDashboard.widgets.map((widget) => {\n if (widget.node && widget.node.name === widgetNode.name && widget.node.path === widgetNode.path) {\n return {\n ...widget,\n node: {\n ...widget.node,\n options: {\n ...(widget.node.options || {}),\n ...(data as object),\n },\n },\n } as AXMDashboardWidgetData;\n }\n return widget;\n });\n\n const updatedDashboard = {\n ...currentDashboard,\n widgets: updatedWidgets,\n };\n\n // Save to service\n await dashboardService.updateOne(updatedDashboard.id, dashboardLayoutToModel(updatedDashboard));\n\n // Update the dashboards state\n const updatedDashboards = store\n .dashboards()\n .map((dashboard) => (dashboard.id === updatedDashboard.id ? updatedDashboard : dashboard));\n\n patchState(store, { dashboards: updatedDashboards });\n } catch (error) {\n console.error('Error handling widget options change:', error);\n }\n },\n\n // Reload dashboards from service\n async refreshDashboards(): Promise<void> {\n await loadDashboards();\n },\n };\n }\n )\n);\n","import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, effect, inject, OnInit, signal, ViewEncapsulation } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\n\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 { AXDialogService } from '@acorex/components/dialog';\nimport { AXDropdownModule } from '@acorex/components/dropdown';\nimport { AXDropdownButtonModule } from '@acorex/components/dropdown-button';\nimport { AXGridLayoutBuilderModule } from '@acorex/components/grid-layout-builder';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXPLayoutBuilderModule, AXPLayoutContextChangeEvent } from '@acorex/platform/layout/builder';\nimport { AXPDesignerService } from '@acorex/platform/layout/designer';\nimport { AXPBasePage, AXPBasePageComponent, AXPPageLayoutComponent } from '@acorex/platform/themes/default';\nimport { AXPLayoutThemeService, AXPThemeLayoutBlockComponent } from '@acorex/platform/themes/shared';\n\nimport { AXLoadingModule } from '@acorex/components/loading';\nimport { AXPopupService } from '@acorex/components/popup';\nimport { AXPActionMenuItem, AXPExecuteCommand } from '@acorex/platform/core';\nimport { RootConfig } from '../../../const';\nimport { AXMDashboardWidgetWrapperComponent } from '../widget-wrapper/dashboard-widget-wrapper';\nimport { AXMDashboardStore } from './home-dashboard.store';\n\n@Component({\n selector: 'axm-dashboard-home',\n templateUrl: './home-dashboard.html',\n styleUrls: ['./home-dashboard.scss'],\n standalone: true,\n imports: [\n CommonModule,\n AXLoadingModule,\n AXPLayoutBuilderModule,\n AXButtonModule,\n AXButtonGroupModule,\n AXGridLayoutBuilderModule,\n AXPPageLayoutComponent,\n AXPThemeLayoutBlockComponent,\n AXDropdownButtonModule,\n AXDropdownModule,\n AXDecoratorModule,\n AXTranslationModule,\n AXBreadcrumbsModule,\n AXMDashboardWidgetWrapperComponent,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [\n AXPDesignerService,\n AXMDashboardStore,\n {\n provide: AXPBasePage,\n useExisting: AXMDashboardHomeComponent,\n },\n ],\n})\nexport class AXMDashboardHomeComponent extends AXPBasePageComponent implements OnInit {\n //#region ---------------- Services & Dependencies ----------------\n\n protected readonly rootConfig = RootConfig;\n protected readonly popupService = inject(AXPopupService);\n protected readonly dialogService = inject(AXDialogService);\n protected readonly store = inject(AXMDashboardStore);\n protected readonly router = inject(Router);\n protected readonly activatedRoute = inject(ActivatedRoute);\n protected override layoutService = inject(AXPLayoutThemeService);\n\n //#endregion\n\n //#region ---------------- View Properties ----------------\n\n protected readonly isEdited = signal(false);\n protected readonly context = signal({});\n\n //#endregion\n\n //#region ---------------- Effects ----------------\n\n #loadingEffect = effect(() => {\n const isLoading = false; // Since store doesn't have isLoading, we'll default to false\n this.layoutService.setNavigationLoading(isLoading);\n });\n\n //#endregion\n\n //#region ---------------- Event Handlers ----------------\n\n protected toggleEdit(): void {\n this.isEdited.update((value) => !value);\n }\n\n protected async confirmWidgetDelete(dashboardId: string, widgetId: string): Promise<void> {\n try {\n const dialogResult = await this.dialogService.confirm(\n await this.translateService.translateAsync('workflow.warning'),\n await this.translateService.translateAsync('workflow.confirm-delete'),\n 'danger',\n 'horizontal'\n );\n\n if (dialogResult.result) {\n this.store.removeWidget(dashboardId, widgetId);\n }\n } catch (error) {\n console.error('Error confirming widget deletion:', error);\n }\n }\n\n //#endregion\n\n override getPageTitle(): string {\n return this.store.currentDashboard()?.title || 'Dashboard';\n }\n\n override async getPageDescription(): Promise<string> {\n return this.store.currentDashboard()?.description || '';\n }\n\n protected override getTitleActions(): AXPActionMenuItem[] | Promise<AXPActionMenuItem[]> {\n return [\n ...this.store.dashboards().map((i) => ({\n title: i.title,\n command: { name: i.id, metadata: { isDashboard: true, dashboard: i } },\n icon: i.id === this.store.currentDashboardId() ? 'fa-solid fa-check' : '',\n })),\n ];\n }\n\n override async getPrimaryMenuItems(): Promise<AXPActionMenuItem[]> {\n const scope = this.rootConfig.config.i18n;\n return [\n {\n title: 't(\"add-item\")',\n icon: 'fa-light fa-square-plus',\n color: 'primary',\n items: [\n {\n title: await this.translateService.translateAsync('dashboard', { scope: 'dashboard' }),\n icon: 'fa-light fa-gauge-high',\n break: true,\n command: {\n name: 'new-dashboard',\n },\n },\n {\n title: await this.translateService.translateAsync('widget', { scope: 'dashboard' }),\n icon: 'fa-light fa-window-restore',\n command: {\n name: 'new-widget',\n },\n },\n ],\n },\n ];\n }\n\n override async getSecondaryMenuItems(): Promise<AXPActionMenuItem[]> {\n const scope = this.rootConfig.config.i18n;\n return [\n {\n title: await this.translateService.translateAsync('delete-current-dashboard', { scope: 'dashboard' }),\n icon: 'fa-light fa-trash-can',\n color: 'danger',\n disabled: this.store.dashboards().length <= 1,\n command: {\n name: 'delete',\n },\n },\n ];\n }\n\n override async execute(command: AXPExecuteCommand): Promise<void> {\n if (command.metadata?.['isDashboard']) {\n this.store.handleConfigChange(command.metadata?.['dashboard']);\n this.recompute();\n } else {\n switch (command.name) {\n case 'new-dashboard':\n await this.store.addDashboard();\n this.recompute();\n break;\n case 'new-widget':\n await this.store.addWidget();\n this.recompute();\n break;\n case 'delete':\n await this.store.removeDashboard(this.store.currentDashboard()?.id!);\n this.recompute();\n break;\n }\n }\n }\n\n // #af = afterNextRender(() => {\n // this.store.refreshDashboards();\n // });\n log(event: AXPLayoutContextChangeEvent) {\n console.log(event);\n }\n\n //#endregion\n}\n","<axp-page-layout *translate=\"let t\">\n <!-- Content Section -->\n\n <axp-page-content class=\"ax-relative\">\n @if(store.isLoading()) {\n <div\n class=\"ax-flex ax-flex-col ax-items-center ax-justify-center ax-h-full ax-w-full ax-absolute ax-z-10 ax-bg-white/80\"\n >\n <ax-loading></ax-loading>\n <p class=\"ax-mt-3 ax-text-gray-600\">{{ t('loading', { scope: 'dashboard' }) | async }}</p>\n </div>\n } @else {\n <axp-widgets-container [context]=\"context()\">\n <ax-grid-layout-container [options]=\"store.dashboardsOption()\" (onChange)=\"store.onGridChange($event)\">\n @for(widget of store.currentDashboard()?.widgets; track widget.config.id) {\n <ax-grid-layout-widget [options]=\"widget.config\">\n <axm-dashboard-widget-wrapper\n [title]=\"widget.node?.options?.['title']\"\n [hasConfiguration]=\"widget.node?.options?.['hasConfiguration'] ?? true\"\n (onDelete)=\"confirmWidgetDelete(store.currentDashboard()?.id!, widget.config.id!)\"\n (onConfiguration)=\"store.handlePopupConfiguration(widget.node!)\"\n (onValueChanged)=\"store.handleValueChanged(widget?.node!,$event)\"\n (onOptionsChanged)=\"store.handleOptionsChanged(widget?.node!,$event)\"\n >\n @if(widget.node) {\n <ng-container axp-widget-renderer [node]=\"widget.node\" [mode]=\"'view'\"></ng-container>\n }\n </axm-dashboard-widget-wrapper>\n </ax-grid-layout-widget>\n } @empty {\n <div class=\"ax-flex ax-flex-col ax-items-center ax-justify-center ax-h-full ax-bg-gray-50 ax-p-4\">\n <ax-icon icon=\"fa-light fa-shapes\" class=\"ax-text-4xl ax-text-gray-400 ax-mb-4\"></ax-icon>\n <h2 class=\"ax-text-xl ax-font-semibold ax-text-gray-700 ax-mb-2\">\n {{ t('no-widgets', { scope: 'dashboard' }) | async }}\n </h2>\n <p class=\"ax-text-gray-500 ax-text-center ax-mb-6\">\n {{ t('add-first-widget', { scope: 'dashboard' }) | async }}\n </p>\n </div>\n }\n </ax-grid-layout-container>\n </axp-widgets-container>\n }\n </axp-page-content>\n</axp-page-layout>\n"],"names":["i5","i2","i3","i1","i4","i6"],"mappings":"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"}
1
+ {"version":3,"file":"acorex-modules-dashboard-management-home-dashboard-BXD0g_tp.mjs","sources":["../../../../libs/modules/dashboard-management/src/lib/features/home-dashboard/widget-wrapper/dashboard-widget-wrapper.ts","../../../../libs/modules/dashboard-management/src/lib/features/home-dashboard/widget-wrapper/dashboard-widget-wrapper.html","../../../../libs/modules/dashboard-management/src/lib/settings.keys.ts","../../../../libs/modules/dashboard-management/src/lib/features/home-dashboard/dashboard-popups/add-dashboard-popup.ts","../../../../libs/modules/dashboard-management/src/lib/features/home-dashboard/dashboard-popups/configuration-popup.ts","../../../../libs/modules/dashboard-management/src/lib/features/home-dashboard/dashboard-popups/dashboard-popup.service.ts","../../../../libs/modules/dashboard-management/src/lib/features/home-dashboard/dashboard-home/home-dashboard.store.ts","../../../../libs/modules/dashboard-management/src/lib/features/home-dashboard/dashboard-home/home-dashboard.ts","../../../../libs/modules/dashboard-management/src/lib/features/home-dashboard/dashboard-home/home-dashboard.html"],"sourcesContent":["import { AXButtonItemComponent, AXButtonModule } from '@acorex/components/button';\nimport { AXEvent, AXItemClickEvent } from '@acorex/components/common';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXDropdownModule } from '@acorex/components/dropdown';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXPWidgetRendererDirective } from '@acorex/platform/layout/builder';\nimport { CommonModule } from '@angular/common';\nimport {\n afterNextRender,\n ChangeDetectionStrategy,\n Component,\n contentChild,\n input,\n output,\n signal,\n} from '@angular/core';\n\n@Component({\n selector: 'axm-dashboard-widget-wrapper',\n templateUrl: './dashboard-widget-wrapper.html',\n styleUrls: ['./dashboard-widget-wrapper.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [AXButtonModule, AXDecoratorModule, AXDropdownModule, AXTranslationModule, CommonModule],\n standalone: true,\n})\nexport class AXMDashboardWidgetWrapperComponent {\n title = input<string | null>(null);\n\n onDelete = output<void>();\n onConfiguration = output<void>();\n onValueChanged = output<unknown>();\n onOptionsChanged = output<unknown>();\n\n widget = contentChild(AXPWidgetRendererDirective);\n\n #init = afterNextRender(() => {\n this.widget()?.onOptionsChanged.subscribe((c) => {\n this.onOptionsChanged.emit(c.widget.options());\n });\n this.widget()?.onValueChanged.subscribe((c) => {\n this.onValueChanged.emit(c.widget.getValue());\n });\n });\n\n hasConfiguration = input<boolean>(true);\n isDropdownOpen = signal(false);\n\n handleOnItemClick(event: AXItemClickEvent<AXButtonItemComponent>) {\n switch (event.item.data) {\n case 'delete':\n this.onDelete.emit();\n break;\n case 'configuration':\n this.onConfiguration.emit();\n break;\n default:\n break;\n }\n this.isDropdownOpen.set(false);\n }\n log(event: AXEvent) {\n console.log('Dropdown event:', event);\n }\n}\n","<section class=\"ax-relative ax-size-full ax-flex ax-flex-col ax-group ax-overflow-hidden\">\n <!-- Action button - stays absolute -->\n <div\n class=\"ax-p-[0.6125rem] ax-absolute ax-top-0 ax-end-0 ax-z-[99] ax-invisible group-hover:ax-visible\"\n [class.!ax-visible]=\"isDropdownOpen()\"\n >\n <ax-button class=\"ax-sm\" [look]=\"'blank'\">\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-ellipsis-vertical\"></ax-icon>\n </ax-prefix>\n <ax-dropdown-panel (onOpened)=\"isDropdownOpen.set(true)\" (onClosed)=\"isDropdownOpen.set(false)\">\n <ng-container *translate=\"let t\">\n <ax-button-item-list (onItemClick)=\"handleOnItemClick($event)\">\n @if(hasConfiguration()){\n <ax-button-item\n [data]=\"'configuration'\"\n [text]=\"(t('configuration', { scope: 'dashboard' }) | async) || 'configuration'\"\n >\n <ax-prefix>\n <ax-icon icon=\"fa-solid fa-cog\"></ax-icon>\n </ax-prefix>\n </ax-button-item>\n <ax-divider></ax-divider>\n }\n <ax-button-item\n [data]=\"'delete'\"\n [text]=\"(t('delete', { scope: 'dashboard' }) | async) || 'delete'\"\n color=\"danger\"\n >\n <ax-prefix>\n <ax-icon icon=\"fa-solid fa-trash-can\"></ax-icon>\n </ax-prefix>\n </ax-button-item>\n </ax-button-item-list>\n </ng-container>\n </ax-dropdown-panel>\n </ax-button>\n </div>\n\n <!-- Title section -->\n @if(title()) {\n <div class=\"ax-ps-5 ax-pe-8 ax-py-3 ax-border-b\">\n <h3 class=\"ax-text-start ax-text-lg ax-font-medium ax-truncate\">{{title()}}</h3>\n </div>\n }\n\n <!-- Content section -->\n <div class=\"ax-overflow-auto ax-h-full\">\n <ng-content></ng-content>\n </div>\n</section>\n","const path = 'home:dashboard:';\nexport enum AXPHomeDashboardSetting {\n CurrentDashboard = `${path}current-dashboard`,\n}\n","import { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXLabelModule } from '@acorex/components/label';\nimport { AXBasePageComponent } from '@acorex/components/page';\nimport { AXTextBoxModule } from '@acorex/components/text-box';\nimport { Component, model, OnInit } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { AXMDashboardLayout } from '../dashboard-home';\n\ninterface AXMAddDashboardPopupResult extends Partial<AXMDashboardLayout> {\n isCanceled: boolean;\n}\n\n@Component({\n template: `\n <div class=\"ax-grid ax-grid-cols-[auto_18rem] ax-gap-4 ax-justify-center ax-p-4 ax-items-center\">\n <ax-label>Title</ax-label>\n <ax-text-box [(ngModel)]=\"title\" name=\"title\" placeholder=\"Enter dashboard title\"> </ax-text-box>\n\n <ax-label>Description</ax-label>\n <ax-text-box [(ngModel)]=\"description\" name=\"description\" placeholder=\"Enter dashboard description\">\n </ax-text-box>\n </div>\n\n <ax-footer>\n <ax-prefix></ax-prefix>\n <ax-suffix>\n <ax-button text=\"Cancel\" look=\"solid\" (onClick)=\"handleClose(true)\"> </ax-button>\n <ax-button text=\"Save\" look=\"solid\" color=\"primary\" [disabled]=\"!isValid\" (onClick)=\"handleClose()\">\n <ax-icon class=\"fa-solid fa-save\"></ax-icon>\n </ax-button>\n </ax-suffix>\n </ax-footer>\n `,\n imports: [FormsModule, AXButtonModule, AXTextBoxModule, AXLabelModule, AXDecoratorModule],\n})\nexport class AXMAddDashboardPopup extends AXBasePageComponent implements OnInit {\n private readonly data: Partial<AXMDashboardLayout>;\n\n protected readonly title = model<string>('');\n protected readonly description = model<string>('');\n\n protected get isValid(): boolean {\n return !!this.title()?.trim();\n }\n\n override ngOnInit(): void {\n this.title.set(this.data?.title || '');\n this.description.set(this.data?.description || '');\n }\n\n protected async handleClose(isCanceled = false): Promise<void> {\n this.close({\n title: this.title()?.trim(),\n description: this.description()?.trim(),\n isCanceled,\n });\n }\n}\n","import { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXBasePageComponent } from '@acorex/components/page';\nimport { AXPWidgetNode } from '@acorex/platform/layout/builder';\nimport { AXPWidgetPropertiesChangedEvent, AXPWidgetPropertyViewerComponent } from '@acorex/platform/layout/designer';\nimport { Component, OnInit, signal } from '@angular/core';\n\n@Component({\n template: `\n @if(widget) {\n <div class=\"ax-px-1\">\n <axp-widget-property-viewer (onChanged)=\"handlePropertyChange($event)\" [widget]=\"widget\">\n </axp-widget-property-viewer>\n </div>\n }\n <ax-footer>\n <ax-prefix></ax-prefix>\n <ax-suffix>\n <ax-button text=\"Cancel\" look=\"solid\" (onClick)=\"handleClose(true)\"> </ax-button>\n <ax-button text=\"Save\" look=\"solid\" color=\"primary\" (onClick)=\"handleClose()\">\n <ax-icon class=\"fa-solid fa-save\"></ax-icon>\n </ax-button>\n </ax-suffix>\n </ax-footer>\n `,\n imports: [AXButtonModule, AXDecoratorModule, AXPWidgetPropertyViewerComponent],\n})\nexport class AXMConfigurationPopup extends AXBasePageComponent implements OnInit {\n widget!: AXPWidgetNode;\n protected readonly widgetData = signal<AXPWidgetNode | null>(null);\n\n override ngOnInit(): void {\n this.widgetData.set(this.widget);\n }\n\n protected async handleClose(isCanceled = false): Promise<void> {\n this.close({\n isCanceled,\n widget: this.widgetData(),\n });\n }\n\n protected handlePropertyChange(event: AXPWidgetPropertiesChangedEvent): void {\n this.widgetData.set(event.values);\n }\n}\n","import { AXPopupService } from '@acorex/components/popup';\nimport { AXPWidgetNode } from '@acorex/platform/layout/builder';\nimport { inject, Injectable } from '@angular/core';\nimport { AXMDashboardLayout } from '../dashboard-home';\nimport { AXMAddDashboardPopup } from './add-dashboard-popup';\nimport { AXMConfigurationPopup } from './configuration-popup';\n\n@Injectable({ providedIn: 'root' })\nexport class AXMDashboardPopupService {\n private readonly popupService = inject(AXPopupService);\n\n async generateDashboardLayout(data: Partial<AXMDashboardLayout>): Promise<AXMDashboardLayout | void> {\n const result = await this.popupService.open(AXMAddDashboardPopup, {\n header: true,\n size: 'fit',\n draggable: true,\n hasBackdrop: true,\n title: 'Dashboard Layout Details',\n data: { data },\n });\n\n if (!result.data) {\n return;\n }\n\n const { isCanceled, ...rest } = result.data;\n if (isCanceled) {\n return;\n }\n\n return rest as AXMDashboardLayout;\n }\n\n async handlePopupConfiguration(widget: AXPWidgetNode): Promise<AXPWidgetNode | void> {\n const result = await this.popupService.open(AXMConfigurationPopup, {\n header: true,\n size: 'sm',\n draggable: true,\n hasBackdrop: true,\n title: 'Widget Configuration',\n data: { widget },\n });\n\n if (!result.data) {\n return;\n }\n\n const { isCanceled, ...rest } = result.data;\n if (isCanceled) {\n return;\n }\n\n return rest.widget as AXPWidgetNode;\n }\n}\n","import { AXDialogService } from '@acorex/components/dialog';\nimport { AXGridLayoutEvent, AXGridLayoutOptions } from '@acorex/components/grid-layout-builder';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { AXPSettingService } from '@acorex/platform/common';\nimport { AXPDataGenerator, AXPPlatformScope } from '@acorex/platform/core';\nimport { AXPWidgetGroupEnum, AXPWidgetNode } from '@acorex/platform/layout/builder';\nimport { AXPWidgetPickerService } from '@acorex/platform/layout/designer';\nimport { computed, effect, inject } from '@angular/core';\nimport { patchState, signalStore, withComputed, withMethods, withState } from '@ngrx/signals';\nimport { AXMDashboardService } from '../../../entities/dashboard/dashboard.service';\nimport { AXMCommonDashboardEntityModel } from '../../../entities/dashboard/dashboard.types';\nimport { AXPHomeDashboardSetting } from '../../../settings.keys';\nimport { AXMDashboardPopupService } from '../dashboard-popups/dashboard-popup.service';\nimport { AXMDashboardLayout, AXMDashboardWidgetData } from './home-dashboard.type';\n\n// Create the SignalStore\nexport const AXMDashboardStore = signalStore(\n { providedIn: 'root' },\n\n // Initial State Definition\n withState(() => {\n // Define initial empty state\n const state = {\n dashboards: [] as AXMDashboardLayout[],\n currentDashboardId: null as string | null,\n dashboardsOption: {\n float: true,\n cellHeight: 75,\n gap: 5,\n minRow: 9,\n column: 12,\n responsiveLayout: [\n { column: 12, width: 2048 },\n { column: 6, width: 768 },\n { column: 1, width: 480 },\n ],\n } as AXGridLayoutOptions,\n isLoading: false,\n };\n\n return state;\n }),\n\n // Computed Properties\n withComputed((state) => ({\n currentDashboard: computed(() => {\n return state.dashboards().find((dashboard) => dashboard.id === state.currentDashboardId()) || null;\n }),\n })),\n\n // Methods for State Management\n withMethods(\n (\n store,\n dashboardPopup = inject(AXMDashboardPopupService),\n dialogService = inject(AXDialogService),\n translationService = inject(AXTranslationService),\n widgetPickerService = inject(AXPWidgetPickerService),\n dashboardService = inject(AXMDashboardService),\n settingService = inject(AXPSettingService)\n ) => {\n // Load dashboards from service - runs on init via effect\n effect(() => {\n loadDashboards();\n });\n\n // Load dashboards from service\n async function loadDashboards(): Promise<void> {\n try {\n patchState(store, { isLoading: true });\n\n // Get dashboards from service using query method\n const result = await dashboardService.query({ skip: 0, take: 100 });\n const dashboardModels = result.items || [];\n\n // Convert dashboard models to AXPDashboardLayout\n const dashboards = dashboardModels.map(modelToDashboardLayout);\n\n // Get current dashboard from settings\n const currentDashboardId = await settingService\n .scope(AXPPlatformScope.User)\n .get(AXPHomeDashboardSetting.CurrentDashboard);\n\n let newCurrentDashboardId = null;\n\n if (dashboards.length > 0) {\n // Check if currentDashboardId exists and is valid\n const dashboardExists = currentDashboardId && dashboards.some((d) => d.id === currentDashboardId);\n\n if (dashboardExists) {\n newCurrentDashboardId = currentDashboardId as string;\n } else {\n // If current dashboard is not valid or not set, use the first one\n newCurrentDashboardId = dashboards[0].id;\n // Save to user settings\n settingService\n .scope(AXPPlatformScope.User)\n .set(AXPHomeDashboardSetting.CurrentDashboard, newCurrentDashboardId);\n }\n }\n\n patchState(store, {\n dashboards,\n isLoading: false,\n currentDashboardId: newCurrentDashboardId,\n });\n } catch (error) {\n console.error('Error loading dashboards:', error);\n patchState(store, { isLoading: false });\n }\n }\n\n // Convert entity model to dashboard layout\n function modelToDashboardLayout(model: AXMCommonDashboardEntityModel): AXMDashboardLayout {\n return {\n id: model.id || '',\n title: model.title,\n description: model.description,\n widgets: model.widgets || [],\n };\n }\n\n // Convert dashboard layout to entity model\n function dashboardLayoutToModel(layout: AXMDashboardLayout): AXMCommonDashboardEntityModel {\n return {\n id: layout.id,\n name: layout.title,\n title: layout.title,\n description: layout.description || '',\n widgets: layout.widgets,\n };\n }\n\n return {\n // Set current dashboard\n setCurrentDashboard(dashboardId: string): void {\n patchState(store, { currentDashboardId: dashboardId });\n settingService.scope(AXPPlatformScope.User).set(AXPHomeDashboardSetting.CurrentDashboard, dashboardId);\n },\n\n // Add a new dashboard\n async addDashboard(): Promise<void> {\n try {\n const newDashboard = await dashboardPopup.generateDashboardLayout({});\n if (!newDashboard) return;\n\n // Create dashboard model and save to service\n const dashboardModel = dashboardLayoutToModel(newDashboard);\n const createdDashboardId = await dashboardService.insertOne(dashboardModel);\n\n newDashboard.id = createdDashboardId;\n newDashboard.widgets = [];\n\n // Update local state\n const updatedDashboards = [...store.dashboards(), newDashboard];\n\n patchState(store, {\n dashboards: updatedDashboards,\n currentDashboardId: newDashboard.id,\n });\n\n // Save current dashboard to settings\n settingService.scope(AXPPlatformScope.User).set(AXPHomeDashboardSetting.CurrentDashboard, newDashboard.id);\n } catch (error) {\n console.error('Error adding dashboard:', error);\n }\n },\n\n // Add a widget to the current dashboard\n async addWidget(): Promise<void> {\n if (!store.currentDashboardId()) {\n console.warn('No current dashboard selected');\n return;\n }\n\n try {\n const widgets = await widgetPickerService.showPicker({\n groups: [AXPWidgetGroupEnum.DashboardWidget],\n });\n\n //remove meta from widgets //TODO TEMPORARY FIX\n const filteredWidgets = (widgets as any[]).map(({ __meta__, ...rest }) => rest);\n if (filteredWidgets[0]?.type === 'sticky-note') {\n if (!filteredWidgets[0].options) {\n filteredWidgets[0].options = {};\n }\n filteredWidgets[0].options.hasConfiguration = false;\n }\n filteredWidgets.forEach((widget) => {\n const randomId = AXPDataGenerator.uuid();\n widget.name = widget?.type + '-' + randomId;\n widget.path = widget?.type + '-' + randomId;\n });\n\n // Step 2: Convert the selected widgets into AXPDashboardWidgetData format\n const convertedWidgets: AXMDashboardWidgetData[] = filteredWidgets.map((widget) => {\n const id = AXPDataGenerator.uuid();\n return {\n config: {\n height: widget?.meta?.dimensions?.height ?? 2,\n width: widget?.meta?.dimensions?.width ?? 2,\n minHeight: widget?.meta?.dimensions?.minHeight,\n minWidth: widget?.meta?.dimensions?.minWidth,\n maxHeight: widget?.meta?.dimensions?.maxHeight,\n maxWidth: widget?.meta?.dimensions?.maxWidth,\n id,\n },\n node: { ...widget, name: id },\n };\n });\n\n // Step 3: Update the dashboards\n const updatedDashboards = store.dashboards().map((dashboard) => {\n if (dashboard.id === store.currentDashboardId()) {\n return {\n ...dashboard,\n widgets: [...dashboard.widgets, ...convertedWidgets],\n };\n }\n return dashboard;\n });\n\n // Step 4: Save the updated dashboard to the service\n const currentDashboard = updatedDashboards.find((d) => d.id === store.currentDashboardId());\n if (currentDashboard) {\n await dashboardService.updateOne(currentDashboard.id, dashboardLayoutToModel(currentDashboard));\n }\n\n patchState(store, { dashboards: updatedDashboards });\n } catch (error) {\n console.error('Error adding widget:', error);\n }\n },\n\n // Remove a dashboard\n async removeDashboard(id: string): Promise<void> {\n if (!id) {\n console.warn('No dashboard ID provided for removal');\n return;\n }\n\n try {\n const dialogResult = await dialogService.confirm(\n await translationService.translateAsync('workflow.warning'),\n await translationService.translateAsync('workflow.confirm-delete'),\n 'danger',\n 'horizontal'\n );\n\n if (dialogResult.result) {\n // Delete from service\n await dashboardService.deleteOne(id);\n\n // Remove the dashboard from local state\n const updatedDashboards = store.dashboards().filter((dashboard) => dashboard.id !== id);\n\n // Update state and select a new current dashboard if needed\n let newCurrentDashboardId = store.currentDashboardId();\n\n if (id === store.currentDashboardId()) {\n newCurrentDashboardId =\n updatedDashboards.length > 0 ? updatedDashboards[updatedDashboards.length - 1].id : null;\n\n // Save to settings if we changed the current dashboard\n if (newCurrentDashboardId) {\n settingService\n .scope(AXPPlatformScope.User)\n .set(AXPHomeDashboardSetting.CurrentDashboard, newCurrentDashboardId);\n }\n }\n\n patchState(store, {\n dashboards: updatedDashboards,\n currentDashboardId: newCurrentDashboardId,\n });\n }\n } catch (error) {\n console.error('Error removing dashboard:', error);\n }\n },\n\n // Remove a widget from a dashboard\n async removeWidget(dashboardId: string, widgetId: string): Promise<void> {\n const currentDashboard = store.dashboards().find((d) => d.id === dashboardId);\n if (!currentDashboard) return;\n\n const updatedDashboard = {\n ...currentDashboard,\n widgets: currentDashboard.widgets.filter((widget) => widget.config.id !== widgetId),\n };\n\n // Save to service\n await dashboardService.updateOne(dashboardId, dashboardLayoutToModel(updatedDashboard));\n\n // Update local state\n const updatedDashboards = store\n .dashboards()\n .map((dashboard) => (dashboard.id === dashboardId ? updatedDashboard : dashboard));\n\n patchState(store, { dashboards: updatedDashboards });\n },\n\n // Handle configuration changes\n async handleConfigChange(dashboard: AXMDashboardLayout): Promise<void> {\n // Save to service\n await dashboardService.updateOne(dashboard.id, dashboardLayoutToModel(dashboard));\n\n // Update local state\n const updatedDashboards = store.dashboards().map((d) => (d.id === dashboard.id ? dashboard : d));\n\n patchState(store, {\n dashboards: updatedDashboards,\n currentDashboardId: dashboard.id,\n });\n\n // Save current dashboard to settings\n settingService.scope(AXPPlatformScope.User).set(AXPHomeDashboardSetting.CurrentDashboard, dashboard.id);\n },\n\n // Handle grid layout changes\n async onGridChange(event: AXGridLayoutEvent): Promise<void> {\n if (!store.currentDashboard()) {\n console.warn('No current dashboard for grid change');\n return;\n }\n\n // Extract nodes from the event and remove the `element` property\n const nodes = event.nodes.map(({ element, ...rest }) => rest);\n\n // Update the current dashboard\n const currentDashboard = store.currentDashboard()!;\n const updatedWidgets = currentDashboard.widgets.map((widget) => {\n const updatedNode = nodes.find((node) => node.id === widget.config.id);\n if (updatedNode) {\n return {\n ...widget,\n config: updatedNode,\n };\n }\n return widget;\n });\n\n const updatedDashboard = {\n ...currentDashboard,\n widgets: updatedWidgets,\n };\n\n // Save to service\n await dashboardService.updateOne(updatedDashboard.id, dashboardLayoutToModel(updatedDashboard));\n\n // Update the dashboards\n const updatedDashboards = store\n .dashboards()\n .map((dashboard) => (dashboard.id === updatedDashboard.id ? updatedDashboard : dashboard));\n\n patchState(store, { dashboards: updatedDashboards });\n },\n\n // Handle widget configuration\n async handlePopupConfiguration(widgetNode: AXPWidgetNode): Promise<void> {\n if (!store.currentDashboard()) {\n console.warn('No current dashboard selected');\n return;\n }\n\n try {\n const updatedNode = await dashboardPopup.handlePopupConfiguration(widgetNode);\n\n if (!updatedNode) {\n return;\n }\n\n // Update the current dashboard's widget with the new configuration\n const currentDashboard = store.currentDashboard()!;\n const updatedWidgets = currentDashboard.widgets.map((widget) => {\n if (widget.node?.name === widgetNode.name && widget.node?.path === widgetNode.path) {\n return {\n ...widget,\n node: updatedNode,\n };\n }\n return widget;\n });\n\n const updatedDashboard = {\n ...currentDashboard,\n widgets: updatedWidgets,\n };\n\n // Save to service\n await dashboardService.updateOne(updatedDashboard.id, dashboardLayoutToModel(updatedDashboard));\n\n // Update the dashboards state\n const updatedDashboards = store\n .dashboards()\n .map((dashboard) => (dashboard.id === updatedDashboard.id ? updatedDashboard : dashboard));\n\n patchState(store, { dashboards: updatedDashboards });\n } catch (error) {\n console.error('Error handling widget configuration:', error);\n }\n },\n\n // Handle widget value changes\n async handleValueChanged(widgetNode: AXPWidgetNode, data: unknown): Promise<void> {\n if (!store.currentDashboard()) {\n console.warn('No current dashboard selected');\n return;\n }\n\n try {\n // Update the current dashboard's widget with the new value\n const currentDashboard = store.currentDashboard()!;\n const updatedWidgets = currentDashboard.widgets.map((widget) => {\n if (widget.node && widget.node.name === widgetNode.name && widget.node.path === widgetNode.path) {\n return {\n ...widget,\n node: {\n ...widget.node,\n defaultValue: data,\n },\n } as AXMDashboardWidgetData;\n }\n return widget;\n });\n\n const updatedDashboard = {\n ...currentDashboard,\n widgets: updatedWidgets,\n };\n\n // Save to service\n await dashboardService.updateOne(updatedDashboard.id, dashboardLayoutToModel(updatedDashboard));\n\n // Update the dashboards state\n const updatedDashboards = store\n .dashboards()\n .map((dashboard) => (dashboard.id === updatedDashboard.id ? updatedDashboard : dashboard));\n\n // patchState(store, { dashboards: updatedDashboards });\n } catch (error) {\n console.error('Error handling widget value change:', error);\n }\n },\n\n // Handle widget options changes\n async handleOptionsChanged(widgetNode: AXPWidgetNode, data: unknown): Promise<void> {\n if (!store.currentDashboard()) {\n console.warn('No current dashboard selected');\n return;\n }\n\n try {\n // Update the current dashboard's widget with the new options\n const currentDashboard = store.currentDashboard()!;\n const updatedWidgets = currentDashboard.widgets.map((widget) => {\n if (widget.node && widget.node.name === widgetNode.name && widget.node.path === widgetNode.path) {\n return {\n ...widget,\n node: {\n ...widget.node,\n options: {\n ...(widget.node.options || {}),\n ...(data as object),\n },\n },\n } as AXMDashboardWidgetData;\n }\n return widget;\n });\n\n const updatedDashboard = {\n ...currentDashboard,\n widgets: updatedWidgets,\n };\n\n // Save to service\n await dashboardService.updateOne(updatedDashboard.id, dashboardLayoutToModel(updatedDashboard));\n\n // Update the dashboards state\n const updatedDashboards = store\n .dashboards()\n .map((dashboard) => (dashboard.id === updatedDashboard.id ? updatedDashboard : dashboard));\n\n patchState(store, { dashboards: updatedDashboards });\n } catch (error) {\n console.error('Error handling widget options change:', error);\n }\n },\n\n // Reload dashboards from service\n async refreshDashboards(): Promise<void> {\n await loadDashboards();\n },\n };\n }\n )\n);\n","import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, effect, inject, OnInit, signal, ViewEncapsulation } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\n\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 { AXDialogService } from '@acorex/components/dialog';\nimport { AXDropdownModule } from '@acorex/components/dropdown';\nimport { AXDropdownButtonModule } from '@acorex/components/dropdown-button';\nimport { AXGridLayoutBuilderModule } from '@acorex/components/grid-layout-builder';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXPLayoutBuilderModule, AXPLayoutContextChangeEvent } from '@acorex/platform/layout/builder';\nimport { AXPDesignerService } from '@acorex/platform/layout/designer';\nimport { AXPBasePage, AXPBasePageComponent, AXPPageLayoutComponent } from '@acorex/platform/themes/default';\nimport { AXPLayoutThemeService, AXPThemeLayoutBlockComponent } from '@acorex/platform/themes/shared';\n\nimport { AXLoadingModule } from '@acorex/components/loading';\nimport { AXPopupService } from '@acorex/components/popup';\nimport { AXPActionMenuItem, AXPExecuteCommand } from '@acorex/platform/core';\nimport { RootConfig } from '../../../const';\nimport { AXMDashboardWidgetWrapperComponent } from '../widget-wrapper/dashboard-widget-wrapper';\nimport { AXMDashboardStore } from './home-dashboard.store';\n\n@Component({\n selector: 'axm-dashboard-home',\n templateUrl: './home-dashboard.html',\n styleUrls: ['./home-dashboard.scss'],\n standalone: true,\n imports: [\n CommonModule,\n AXLoadingModule,\n AXPLayoutBuilderModule,\n AXButtonModule,\n AXButtonGroupModule,\n AXGridLayoutBuilderModule,\n AXPPageLayoutComponent,\n AXPThemeLayoutBlockComponent,\n AXDropdownButtonModule,\n AXDropdownModule,\n AXDecoratorModule,\n AXTranslationModule,\n AXBreadcrumbsModule,\n AXMDashboardWidgetWrapperComponent,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [\n AXPDesignerService,\n AXMDashboardStore,\n {\n provide: AXPBasePage,\n useExisting: AXMDashboardHomeComponent,\n },\n ],\n})\nexport class AXMDashboardHomeComponent extends AXPBasePageComponent implements OnInit {\n //#region ---------------- Services & Dependencies ----------------\n\n protected readonly rootConfig = RootConfig;\n protected readonly popupService = inject(AXPopupService);\n protected readonly dialogService = inject(AXDialogService);\n protected readonly store = inject(AXMDashboardStore);\n protected readonly router = inject(Router);\n protected readonly activatedRoute = inject(ActivatedRoute);\n protected override layoutService = inject(AXPLayoutThemeService);\n\n //#endregion\n\n //#region ---------------- View Properties ----------------\n\n protected readonly isEdited = signal(false);\n protected readonly context = signal({});\n\n //#endregion\n\n //#region ---------------- Effects ----------------\n\n #loadingEffect = effect(() => {\n const isLoading = false; // Since store doesn't have isLoading, we'll default to false\n this.layoutService.setNavigationLoading(isLoading);\n });\n\n //#endregion\n\n //#region ---------------- Event Handlers ----------------\n\n protected toggleEdit(): void {\n this.isEdited.update((value) => !value);\n }\n\n protected async confirmWidgetDelete(dashboardId: string, widgetId: string): Promise<void> {\n try {\n const dialogResult = await this.dialogService.confirm(\n await this.translateService.translateAsync('workflow.warning'),\n await this.translateService.translateAsync('workflow.confirm-delete'),\n 'danger',\n 'horizontal'\n );\n\n if (dialogResult.result) {\n this.store.removeWidget(dashboardId, widgetId);\n }\n } catch (error) {\n console.error('Error confirming widget deletion:', error);\n }\n }\n\n //#endregion\n\n override getPageTitle(): string {\n return this.store.currentDashboard()?.title || 'Dashboard';\n }\n\n override async getPageDescription(): Promise<string> {\n return this.store.currentDashboard()?.description || '';\n }\n\n protected override getTitleActions(): AXPActionMenuItem[] | Promise<AXPActionMenuItem[]> {\n return [\n ...this.store.dashboards().map((i) => ({\n title: i.title,\n command: { name: i.id, metadata: { isDashboard: true, dashboard: i } },\n icon: i.id === this.store.currentDashboardId() ? 'fa-solid fa-check' : '',\n })),\n ];\n }\n\n override async getPrimaryMenuItems(): Promise<AXPActionMenuItem[]> {\n const scope = this.rootConfig.config.i18n;\n return [\n {\n title: 't(\"add-item\")',\n icon: 'fa-light fa-square-plus',\n color: 'primary',\n items: [\n {\n title: await this.translateService.translateAsync('dashboard', { scope: 'dashboard' }),\n icon: 'fa-light fa-gauge-high',\n break: true,\n command: {\n name: 'new-dashboard',\n },\n },\n {\n title: await this.translateService.translateAsync('widget', { scope: 'dashboard' }),\n icon: 'fa-light fa-window-restore',\n command: {\n name: 'new-widget',\n },\n },\n ],\n },\n ];\n }\n\n override async getSecondaryMenuItems(): Promise<AXPActionMenuItem[]> {\n const scope = this.rootConfig.config.i18n;\n return [\n {\n title: await this.translateService.translateAsync('delete-current-dashboard', { scope: 'dashboard' }),\n icon: 'fa-light fa-trash-can',\n color: 'danger',\n disabled: this.store.dashboards().length <= 1,\n command: {\n name: 'delete',\n },\n },\n ];\n }\n\n override async execute(command: AXPExecuteCommand): Promise<void> {\n if (command.metadata?.['isDashboard']) {\n this.store.handleConfigChange(command.metadata?.['dashboard']);\n this.recompute();\n } else {\n switch (command.name) {\n case 'new-dashboard':\n await this.store.addDashboard();\n this.recompute();\n break;\n case 'new-widget':\n await this.store.addWidget();\n this.recompute();\n break;\n case 'delete':\n await this.store.removeDashboard(this.store.currentDashboard()?.id!);\n this.recompute();\n break;\n }\n }\n }\n\n // #af = afterNextRender(() => {\n // this.store.refreshDashboards();\n // });\n log(event: AXPLayoutContextChangeEvent) {\n console.log(event);\n }\n\n //#endregion\n}\n","<axp-page-layout *translate=\"let t\">\n <!-- Content Section -->\n\n <axp-page-content class=\"ax-relative\">\n @if(store.isLoading()) {\n <div\n class=\"ax-flex ax-flex-col ax-items-center ax-justify-center ax-h-full ax-w-full ax-absolute ax-z-10 ax-bg-white/80\"\n >\n <ax-loading></ax-loading>\n <p class=\"ax-mt-3 ax-text-gray-600\">{{ t('loading', { scope: 'dashboard' }) | async }}</p>\n </div>\n } @else {\n <axp-widgets-container [context]=\"context()\">\n <ax-grid-layout-container [options]=\"store.dashboardsOption()\" (onChange)=\"store.onGridChange($event)\">\n @for(widget of store.currentDashboard()?.widgets; track widget.config.id) {\n <ax-grid-layout-widget [options]=\"widget.config\">\n <axm-dashboard-widget-wrapper\n [title]=\"widget.node?.options?.['title']\"\n [hasConfiguration]=\"widget.node?.options?.['hasConfiguration'] ?? true\"\n (onDelete)=\"confirmWidgetDelete(store.currentDashboard()?.id!, widget.config.id!)\"\n (onConfiguration)=\"store.handlePopupConfiguration(widget.node!)\"\n (onValueChanged)=\"store.handleValueChanged(widget?.node!,$event)\"\n (onOptionsChanged)=\"store.handleOptionsChanged(widget?.node!,$event)\"\n >\n @if(widget.node) {\n <ng-container axp-widget-renderer [node]=\"widget.node\" [mode]=\"'view'\"></ng-container>\n }\n </axm-dashboard-widget-wrapper>\n </ax-grid-layout-widget>\n } @empty {\n <div class=\"ax-flex ax-flex-col ax-items-center ax-justify-center ax-h-full ax-bg-gray-50 ax-p-4\">\n <ax-icon icon=\"fa-light fa-shapes\" class=\"ax-text-4xl ax-text-gray-400 ax-mb-4\"></ax-icon>\n <h2 class=\"ax-text-xl ax-font-semibold ax-text-gray-700 ax-mb-2\">\n {{ t('no-widgets', { scope: 'dashboard' }) | async }}\n </h2>\n <p class=\"ax-text-gray-500 ax-text-center ax-mb-6\">\n {{ t('add-first-widget', { scope: 'dashboard' }) | async }}\n </p>\n </div>\n }\n </ax-grid-layout-container>\n </axp-widgets-container>\n }\n </axp-page-content>\n</axp-page-layout>\n"],"names":["i5","i2","i3","i1","i4","i6"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- export { a as AXMDashboardManagementModule, c as AXPBarChartWidget, b as AXPBarChartWidgetViewComponent, g as AXPClockCalendarWidget, f as AXPClockCalendarWidgetViewComponent, k as AXPDonutChartWidget, j as AXPDonutChartWidgetViewComponent, m as AXPGaugeChartWidget, l as AXPGaugeChartWidgetViewComponent, o as AXPLineChartWidget, n as AXPLineChartWidgetViewComponent, q as AXPStickyNoteWidget, p as AXPStickyNoteWidgetViewComponent, s as AXPTaskListWidget, r as AXPTaskListWidgetViewComponent, t as AXPWeatherApiAbstract, u as AXPWeatherApiMockService, v as AXPWeatherApiService, x as AXPWeatherWidget, w as AXPWeatherWidgetViewComponent, i as AXP_DATE_FORMAT_OPTIONS, h as AXP_TIMEZONE_OPTIONS, d as AXP_WIDGETS_CHART_CATEGORY, e as AXP_WIDGETS_UTILITY_CATEGORY, R as RootConfig } from './acorex-modules-dashboard-management-acorex-modules-dashboard-management-VORBD1g-.mjs';
1
+ export { a as AXMDashboardManagementModule, c as AXPBarChartWidget, b as AXPBarChartWidgetViewComponent, g as AXPClockCalendarWidget, f as AXPClockCalendarWidgetViewComponent, k as AXPDonutChartWidget, j as AXPDonutChartWidgetViewComponent, m as AXPGaugeChartWidget, l as AXPGaugeChartWidgetViewComponent, o as AXPLineChartWidget, n as AXPLineChartWidgetViewComponent, q as AXPStickyNoteWidget, p as AXPStickyNoteWidgetViewComponent, s as AXPTaskListWidget, r as AXPTaskListWidgetViewComponent, t as AXPWeatherApiAbstract, u as AXPWeatherApiMockService, v as AXPWeatherApiService, x as AXPWeatherWidget, w as AXPWeatherWidgetViewComponent, i as AXP_DATE_FORMAT_OPTIONS, h as AXP_TIMEZONE_OPTIONS, d as AXP_WIDGETS_CHART_CATEGORY, e as AXP_WIDGETS_UTILITY_CATEGORY, R as RootConfig } from './acorex-modules-dashboard-management-acorex-modules-dashboard-management-Ccj2AaJ1.mjs';
2
2
  //# sourceMappingURL=acorex-modules-dashboard-management.mjs.map
@@ -141,6 +141,26 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImpor
141
141
  type: Injectable
142
142
  }] });
143
143
 
144
+ const AXMPermissionsKeys = {
145
+ DocumentManagement: {
146
+ Management: 'document-management:manage',
147
+ DocumentType: {
148
+ Management: 'document-management:document-type:manage',
149
+ View: 'document-management:document-type:view',
150
+ Edit: 'document-management:document-type:edit',
151
+ Delete: 'document-management:document-type:delete',
152
+ Create: 'document-management:document-type:create',
153
+ },
154
+ Driver: {
155
+ Management: 'document-management:driver:manage',
156
+ View: 'document-management:driver:view',
157
+ Edit: 'document-management:driver:edit',
158
+ Delete: 'document-management:driver:delete',
159
+ Create: 'document-management:driver:create',
160
+ },
161
+ },
162
+ };
163
+
144
164
  class AXMMenuProvider {
145
165
  constructor() {
146
166
  this.entityService = inject(AXPEntityService);
@@ -157,11 +177,17 @@ class AXMMenuProvider {
157
177
  priority: 9001,
158
178
  text: RootConfig.module.title,
159
179
  icon: RootConfig.module.icon,
180
+ data: {
181
+ requiredPermission: [AXMPermissionsKeys.DocumentManagement.Management]
182
+ },
160
183
  children: [
161
184
  {
162
185
  text: RootConfig.entities.documentType.title,
163
186
  path: this.entityService.createPath(RootConfig.module.name, RootConfig.entities.documentType.name),
164
187
  icon: RootConfig.entities.documentType.icon,
188
+ data: {
189
+ requiredPermission: [AXMPermissionsKeys.DocumentManagement.DocumentType.Management]
190
+ },
165
191
  badgeKey: 'badge-1',
166
192
  priority: 2,
167
193
  },
@@ -169,6 +195,10 @@ class AXMMenuProvider {
169
195
  text: `t('scope.tenant.title', {scope: "${RootConfig.config.i18n}"})`,
170
196
  path: `${this.sessionService.application?.name}/drive/tenant`,
171
197
  icon: RootConfig.entities.document.icon,
198
+ data: {
199
+ requiredPermission: [AXMPermissionsKeys.DocumentManagement.Driver.Management],
200
+ scope: 'tenant',
201
+ },
172
202
  badgeKey: 'badge-2',
173
203
  priority: 1,
174
204
  },
@@ -184,24 +214,13 @@ class AXMMenuProvider {
184
214
  path: `${this.sessionService.application?.name}/drive/user`,
185
215
  data: {
186
216
  scope: 'user',
217
+ requiredPermission: [AXMPermissionsKeys.DocumentManagement.Driver.Management]
187
218
  },
188
219
  },
189
220
  ]);
190
221
  }
191
222
  }
192
223
 
193
- class AXMPermissionDefinitionProvider {
194
- async define(context) {
195
- // context.addPermissions([
196
- // {
197
- // name: 'view_templates',
198
- // title: 'Permission to view templates',
199
- // isArchived: false,
200
- // },
201
- // ]);
202
- }
203
- }
204
-
205
224
  class AXMSearchCommandProvider extends AXPSearchCommandProvider {
206
225
  constructor() {
207
226
  super(...arguments);
@@ -3184,7 +3203,7 @@ class AXMDocumentManagerService {
3184
3203
  }
3185
3204
  }
3186
3205
  async showFolderEditDialog(node) {
3187
- const comp = (await import('./acorex-modules-document-management-create-folder-dialog.component-Bc_IX3gT.mjs'))
3206
+ const comp = (await import('./acorex-modules-document-management-create-folder-dialog.component-Ty5V60Tu.mjs'))
3188
3207
  .AXMCreateFolderDialog;
3189
3208
  const popup = await this.popupService.open(comp, {
3190
3209
  title: 't("actions.update-folder")',
@@ -3332,7 +3351,7 @@ class AXMDocumentManagerService {
3332
3351
  }
3333
3352
  }
3334
3353
  async showCreateFolderDialog(parentId) {
3335
- const comp = (await import('./acorex-modules-document-management-create-folder-dialog.component-Bc_IX3gT.mjs'))
3354
+ const comp = (await import('./acorex-modules-document-management-create-folder-dialog.component-Ty5V60Tu.mjs'))
3336
3355
  .AXMCreateFolderDialog;
3337
3356
  const popup = await this.popupService.open(comp, {
3338
3357
  title: 't("actions.create-folder")',
@@ -3343,7 +3362,7 @@ class AXMDocumentManagerService {
3343
3362
  return popup.data?.folder;
3344
3363
  }
3345
3364
  async moveTo(options) {
3346
- const comp = (await import('./acorex-modules-document-management-drive-choose.component-CFOb0_MF.mjs')).AXMDocumentDriveChooseComponent;
3365
+ const comp = (await import('./acorex-modules-document-management-drive-choose.component-DSCIj1X_.mjs')).AXMDocumentDriveChooseComponent;
3347
3366
  //
3348
3367
  const popup = await this.popupService.open(comp, {
3349
3368
  title: `Choose ${options.browseMode == 'file' ? 'File' : 'Folder'}`,
@@ -3374,7 +3393,7 @@ class AXMDocumentManagerService {
3374
3393
  }
3375
3394
  }
3376
3395
  async copyTo(options) {
3377
- const comp = (await import('./acorex-modules-document-management-drive-choose.component-CFOb0_MF.mjs')).AXMDocumentDriveChooseComponent;
3396
+ const comp = (await import('./acorex-modules-document-management-drive-choose.component-DSCIj1X_.mjs')).AXMDocumentDriveChooseComponent;
3378
3397
  //
3379
3398
  const popup = await this.popupService.open(comp, {
3380
3399
  title: `Choose ${options.browseMode == 'file' ? 'File' : 'Folder'}`,
@@ -3467,7 +3486,7 @@ class AXMDocumentManagerService {
3467
3486
  const file = await this.documentService.getOne(node.id);
3468
3487
  }
3469
3488
  async showRenamePopup(node) {
3470
- const comp = (await import('./acorex-modules-document-management-rename-node-dialog.component-BMRmdslE.mjs'))
3489
+ const comp = (await import('./acorex-modules-document-management-rename-node-dialog.component-zSY0PShA.mjs'))
3471
3490
  .AXMRenameNodeDialog;
3472
3491
  const popup = await this.popupService.open(comp, {
3473
3492
  title: 't("actions.rename")',
@@ -3515,7 +3534,7 @@ class AXMDocumentManagerService {
3515
3534
  return [...(await this.getAllFolders()), ...(await this.getAllFiles())];
3516
3535
  }
3517
3536
  async showChooseFileDialog(scope) {
3518
- const comp = (await import('./acorex-modules-document-management-drive-choose.component-CFOb0_MF.mjs')).AXMDocumentDriveChooseComponent;
3537
+ const comp = (await import('./acorex-modules-document-management-drive-choose.component-DSCIj1X_.mjs')).AXMDocumentDriveChooseComponent;
3519
3538
  const result = await this.popupService.open(comp, {
3520
3539
  title: `t("actions.choose-from-drive" , scope: {"${RootConfig.config.i18n}"})`,
3521
3540
  data: {
@@ -4225,12 +4244,12 @@ class AXMDocumentExplorerComponent {
4225
4244
  this.showContextMenu = input(true);
4226
4245
  this.view = signal(null);
4227
4246
  this.viewMap = {
4228
- list: async () => (await import('./acorex-modules-document-management-list-view.component-BUu5vrul.mjs')).AXMDocumentExplorerListViewComponent,
4229
- 'small-tiles': async () => (await import('./acorex-modules-document-management-small-tiles-view.component-Ci33qbBY.mjs')).AXMDocumentExplorerSmallTilesViewComponent,
4230
- 'large-tiles': async () => (await import('./acorex-modules-document-management-large-tiles-view.component-Q1Sjg47F.mjs')).AXMDocumentExplorerLargeTilesViewComponent,
4231
- details: async () => (await import('./acorex-modules-document-management-details-view.component-_9f5TQJi.mjs')).AXMDocumentExplorerDetailsViewComponent,
4232
- 'large-icons': async () => (await import('./acorex-modules-document-management-large-icons-view.component-D9es4CBl.mjs')).AXMDocumentExplorerLargeIconsViewComponent,
4233
- 'small-icons': async () => (await import('./acorex-modules-document-management-small-icons-view.component-ChSS7z9z.mjs')).AXMDocumentExplorerSmallIconsViewComponent,
4247
+ list: async () => (await import('./acorex-modules-document-management-list-view.component-BrutZLAU.mjs')).AXMDocumentExplorerListViewComponent,
4248
+ 'small-tiles': async () => (await import('./acorex-modules-document-management-small-tiles-view.component-Dp2Lnb3c.mjs')).AXMDocumentExplorerSmallTilesViewComponent,
4249
+ 'large-tiles': async () => (await import('./acorex-modules-document-management-large-tiles-view.component-rIxsD8sE.mjs')).AXMDocumentExplorerLargeTilesViewComponent,
4250
+ details: async () => (await import('./acorex-modules-document-management-details-view.component-BuUJq8WU.mjs')).AXMDocumentExplorerDetailsViewComponent,
4251
+ 'large-icons': async () => (await import('./acorex-modules-document-management-large-icons-view.component-DvrdSkIZ.mjs')).AXMDocumentExplorerLargeIconsViewComponent,
4252
+ 'small-icons': async () => (await import('./acorex-modules-document-management-small-icons-view.component-CFB6g5r6.mjs')).AXMDocumentExplorerSmallIconsViewComponent,
4234
4253
  };
4235
4254
  this.#effect = effect(() => {
4236
4255
  if (this.vm.loadingFolderId() == null) {
@@ -5132,9 +5151,7 @@ class AXMDocumentAttachmentWidgetEditComponent extends AXPValueWidgetComponent {
5132
5151
  this.multiple = computed(() => this.options()['multiple']);
5133
5152
  this.entity = computed(() => this.options()['entity']);
5134
5153
  this.entityRecordId = computed(() => this.options()['record']);
5135
- // protected defaultValues = computed<any[]>(() => this.options()['defaultValue'] as any[]);
5136
- this.initFiles = computed(() => this.options()['initFiles']);
5137
- this.onChange = computed(() => this.options()['onChange']);
5154
+ this.documentTypes = computed(() => this.options()['types']);
5138
5155
  }
5139
5156
  async ngOnDestroy() {
5140
5157
  const status = this.layoutService.status();
@@ -5212,6 +5229,7 @@ class AXMDocumentAttachmentWidgetEditComponent extends AXPValueWidgetComponent {
5212
5229
  });
5213
5230
  this.vm.initialize({ browseMode: 'file' });
5214
5231
  this.vm.virtualFolder([...files, this.defaultValue()]);
5232
+ this.setValue([...files, this.defaultValue()]);
5215
5233
  }
5216
5234
  async chooseFromDrive(scope) {
5217
5235
  const result = ((await this.documentExplorer()?.chooseFile(scope)) ?? []).map((item) => ({
@@ -5249,25 +5267,17 @@ class AXMDocumentAttachmentWidgetEditComponent extends AXPValueWidgetComponent {
5249
5267
  async updateContents(files) {
5250
5268
  if (this.multiple()) {
5251
5269
  await this.vm.virtualFolder(files);
5252
- const onChangeCallback = this.onChange();
5253
- if (onChangeCallback) {
5254
- onChangeCallback(files);
5255
- }
5270
+ this.setValue(files);
5256
5271
  }
5257
5272
  else {
5258
5273
  await this.vm.virtualFolder([files[files.length - 1]]);
5259
- const onChangeCallback = this.onChange();
5260
- if (onChangeCallback) {
5261
- onChangeCallback([files[files.length - 1]]);
5262
- }
5274
+ this.setValue([files[files.length - 1]]);
5263
5275
  }
5264
5276
  }
5265
5277
  async handleActionCallback(action) {
5266
5278
  try {
5267
5279
  const result = await action.callback();
5268
- debugger;
5269
5280
  if (result) {
5270
- console.log('result: ', result);
5271
5281
  const allFiles = this.vm.files();
5272
5282
  const f = await this.fileStorageService.save({
5273
5283
  file: result,
@@ -5532,7 +5542,11 @@ class AXMDocumentManagementModule {
5532
5542
  },
5533
5543
  {
5534
5544
  provide: AXP_PERMISSION_DEFINITION_PROVIDER,
5535
- useClass: AXMPermissionDefinitionProvider,
5545
+ useFactory: async () => {
5546
+ const injector = inject(Injector);
5547
+ const provider = (await import('./acorex-modules-document-management-permission-definition.provider-CQOLEctF.mjs')).AXMPermissionDefinitionProvider;
5548
+ return new provider(injector);
5549
+ },
5536
5550
  multi: true,
5537
5551
  },
5538
5552
  {
@@ -5624,7 +5638,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImpor
5624
5638
  },
5625
5639
  {
5626
5640
  provide: AXP_PERMISSION_DEFINITION_PROVIDER,
5627
- useClass: AXMPermissionDefinitionProvider,
5641
+ useFactory: async () => {
5642
+ const injector = inject(Injector);
5643
+ const provider = (await import('./acorex-modules-document-management-permission-definition.provider-CQOLEctF.mjs')).AXMPermissionDefinitionProvider;
5644
+ return new provider(injector);
5645
+ },
5628
5646
  multi: true,
5629
5647
  },
5630
5648
  {
@@ -5650,5 +5668,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImpor
5650
5668
  * Generated bundle index. Do not edit.
5651
5669
  */
5652
5670
 
5653
- 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 };
5654
- //# sourceMappingURL=acorex-modules-document-management-acorex-modules-document-management-vYaqbxKs.mjs.map
5671
+ export { AXMPermissionsKeys as A, AXMFolderService as B, AXMFolderServiceImpl as C, AXMEntityProvider as D, AXMMenuProvider as E, AXMSearchCommandProvider as F, AXMSettingProvider as G, RootConfig as R, AXMDocumentManagerService as a, AXMDocumentTypeService as b, AXPDocumentExplorerViewModel as c, AXMDocumentExplorerComponent as d, AXMFolderPathBreadcrumbsComponent as e, AXMDocumentManagementModule as f, documentFactory as g, AXMDocumentManagementDocumentEntityModule as h, AXMDocumentService as i, AXMDocumentServiceImpl as j, documentTypeFactory as k, AXMDocumentManagementDocumentTypeEntityModule as l, AXMDocumentTypeServiceImpl as m, documentTypeMetaDefinitionfactory as n, AXMDocumentManagementDocumentTypeMetaDefinitionEntityModule as o, AXMDocumentManagementDocumentTypeMetaDefinitionEntityService as p, AXMDocumentManagementDocumentTypeMetaDefinitionEntityServiceImpl as q, documentTypeMetaValueFactory as r, AXMDocumentManagementDocumentTypeMetaValueEntityModule as s, AXMDocumentManagementDocumentTypeMetaValueEntityService as t, AXMDocumentManagementDocumentTypeMetaValueEntityServiceImpl as u, documentTypeStatusDefinitionFactory as v, AXMDocumentManagementDocumentTypeStatusDefinitionEntityModule as w, AXMDocumentManagementDocumentTypeStatusDefinitionEntityService as x, AXMDocumentManagementDocumentTypeStatusDefinitionEntityServiceImpl as y, folderFactory as z };
5672
+ //# sourceMappingURL=acorex-modules-document-management-acorex-modules-document-management-Dw7YKb_h.mjs.map