@acorex/modules 21.0.0-next.44 → 21.0.0-next.45

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/fesm2022/{acorex-modules-assessment-management-acorex-modules-assessment-management-c8OrTwDw.mjs → acorex-modules-assessment-management-acorex-modules-assessment-management-BD5oxehv.mjs} +59 -75
  2. package/fesm2022/acorex-modules-assessment-management-acorex-modules-assessment-management-BD5oxehv.mjs.map +1 -0
  3. package/fesm2022/{acorex-modules-assessment-management-assessment-case.entity-DEsJE7x3.mjs → acorex-modules-assessment-management-assessment-case.entity-BWj2PB39.mjs} +2 -2
  4. package/fesm2022/{acorex-modules-assessment-management-assessment-case.entity-DEsJE7x3.mjs.map → acorex-modules-assessment-management-assessment-case.entity-BWj2PB39.mjs.map} +1 -1
  5. package/fesm2022/{acorex-modules-assessment-management-assessment-session.entity-eNFfu-Jq.mjs → acorex-modules-assessment-management-assessment-session.entity-BQnYnNOz.mjs} +2 -2
  6. package/fesm2022/{acorex-modules-assessment-management-assessment-session.entity-eNFfu-Jq.mjs.map → acorex-modules-assessment-management-assessment-session.entity-BQnYnNOz.mjs.map} +1 -1
  7. package/fesm2022/{acorex-modules-assessment-management-fill-assessment-session.command-BeSUBkI9.mjs → acorex-modules-assessment-management-fill-assessment-session.command-BiS7QO_E.mjs} +2 -2
  8. package/fesm2022/{acorex-modules-assessment-management-fill-assessment-session.command-BeSUBkI9.mjs.map → acorex-modules-assessment-management-fill-assessment-session.command-BiS7QO_E.mjs.map} +1 -1
  9. package/fesm2022/{acorex-modules-assessment-management-index-3GB9Xkyv.mjs → acorex-modules-assessment-management-index-BXw0Lf5c.mjs} +4 -4
  10. package/fesm2022/{acorex-modules-assessment-management-index-3GB9Xkyv.mjs.map → acorex-modules-assessment-management-index-BXw0Lf5c.mjs.map} +1 -1
  11. package/fesm2022/{acorex-modules-assessment-management-preview-question.command-QinKZtTz.mjs → acorex-modules-assessment-management-preview-question.command-Bm1v6ngB.mjs} +2 -2
  12. package/fesm2022/{acorex-modules-assessment-management-preview-question.command-QinKZtTz.mjs.map → acorex-modules-assessment-management-preview-question.command-Bm1v6ngB.mjs.map} +1 -1
  13. package/fesm2022/{acorex-modules-assessment-management-preview-questionnaire.command-CKZYSyOv.mjs → acorex-modules-assessment-management-preview-questionnaire.command-Dja4PbGz.mjs} +2 -2
  14. package/fesm2022/{acorex-modules-assessment-management-preview-questionnaire.command-CKZYSyOv.mjs.map → acorex-modules-assessment-management-preview-questionnaire.command-Dja4PbGz.mjs.map} +1 -1
  15. package/fesm2022/{acorex-modules-assessment-management-question-bank-interface-editor-widget-edit.component-qZXANgNr.mjs → acorex-modules-assessment-management-question-bank-interface-editor-widget-edit.component-BbkWs23A.mjs} +2 -2
  16. package/fesm2022/{acorex-modules-assessment-management-question-bank-interface-editor-widget-edit.component-qZXANgNr.mjs.map → acorex-modules-assessment-management-question-bank-interface-editor-widget-edit.component-BbkWs23A.mjs.map} +1 -1
  17. package/fesm2022/{acorex-modules-assessment-management-question-bank-item.entity-Dp4eYR3O.mjs → acorex-modules-assessment-management-question-bank-item.entity-X8s42nZH.mjs} +2 -2
  18. package/fesm2022/{acorex-modules-assessment-management-question-bank-item.entity-Dp4eYR3O.mjs.map → acorex-modules-assessment-management-question-bank-item.entity-X8s42nZH.mjs.map} +1 -1
  19. package/fesm2022/{acorex-modules-assessment-management-questionnaire-calculation.entity-BMB9IEIv.mjs → acorex-modules-assessment-management-questionnaire-calculation.entity-d8HUAvWp.mjs} +2 -2
  20. package/fesm2022/{acorex-modules-assessment-management-questionnaire-calculation.entity-BMB9IEIv.mjs.map → acorex-modules-assessment-management-questionnaire-calculation.entity-d8HUAvWp.mjs.map} +1 -1
  21. package/fesm2022/{acorex-modules-assessment-management-questionnaire-viewer-popup.component-DgC1xuH9.mjs → acorex-modules-assessment-management-questionnaire-viewer-popup.component-YUDOSypz.mjs} +2 -2
  22. package/fesm2022/{acorex-modules-assessment-management-questionnaire-viewer-popup.component-DgC1xuH9.mjs.map → acorex-modules-assessment-management-questionnaire-viewer-popup.component-YUDOSypz.mjs.map} +1 -1
  23. package/fesm2022/{acorex-modules-assessment-management-questionnaire.entity-ChUNq9Bc.mjs → acorex-modules-assessment-management-questionnaire.entity-q3Z4VIiA.mjs} +3 -3
  24. package/fesm2022/{acorex-modules-assessment-management-questionnaire.entity-ChUNq9Bc.mjs.map → acorex-modules-assessment-management-questionnaire.entity-q3Z4VIiA.mjs.map} +1 -1
  25. package/fesm2022/{acorex-modules-assessment-management-save-questionnaire-questions.command-sji05ut4.mjs → acorex-modules-assessment-management-save-questionnaire-questions.command-4OLYEn35.mjs} +2 -2
  26. package/fesm2022/{acorex-modules-assessment-management-save-questionnaire-questions.command-sji05ut4.mjs.map → acorex-modules-assessment-management-save-questionnaire-questions.command-4OLYEn35.mjs.map} +1 -1
  27. package/fesm2022/{acorex-modules-assessment-management-view-session-answers.command-BIpotfIE.mjs → acorex-modules-assessment-management-view-session-answers.command-DWEd-ZM_.mjs} +2 -2
  28. package/fesm2022/{acorex-modules-assessment-management-view-session-answers.command-BIpotfIE.mjs.map → acorex-modules-assessment-management-view-session-answers.command-DWEd-ZM_.mjs.map} +1 -1
  29. package/fesm2022/acorex-modules-assessment-management.mjs +1 -1
  30. package/fesm2022/{acorex-modules-asset-management-acorex-modules-asset-management-fQ0rp8vu.mjs → acorex-modules-asset-management-acorex-modules-asset-management-B1mg2dIR.mjs} +8 -19
  31. package/fesm2022/acorex-modules-asset-management-acorex-modules-asset-management-B1mg2dIR.mjs.map +1 -0
  32. package/fesm2022/{acorex-modules-asset-management-asset-system-assignment.entity-DuFgujR6.mjs → acorex-modules-asset-management-asset-system-assignment.entity-lL1FBlzA.mjs} +2 -2
  33. package/fesm2022/{acorex-modules-asset-management-asset-system-assignment.entity-DuFgujR6.mjs.map → acorex-modules-asset-management-asset-system-assignment.entity-lL1FBlzA.mjs.map} +1 -1
  34. package/fesm2022/{acorex-modules-asset-management-asset-system-type.entity-sszGMFny.mjs → acorex-modules-asset-management-asset-system-type.entity-DFHVqE7a.mjs} +2 -2
  35. package/fesm2022/{acorex-modules-asset-management-asset-system-type.entity-sszGMFny.mjs.map → acorex-modules-asset-management-asset-system-type.entity-DFHVqE7a.mjs.map} +1 -1
  36. package/fesm2022/{acorex-modules-asset-management-asset-system.entity-tWUPNYQq.mjs → acorex-modules-asset-management-asset-system.entity-DlpOp7Xj.mjs} +2 -2
  37. package/fesm2022/{acorex-modules-asset-management-asset-system.entity-tWUPNYQq.mjs.map → acorex-modules-asset-management-asset-system.entity-DlpOp7Xj.mjs.map} +1 -1
  38. package/fesm2022/{acorex-modules-asset-management-asset-type-section-component.entity-l3xXMo2l.mjs → acorex-modules-asset-management-asset-type-section-component.entity-CIkXc51V.mjs} +2 -2
  39. package/fesm2022/{acorex-modules-asset-management-asset-type-section-component.entity-l3xXMo2l.mjs.map → acorex-modules-asset-management-asset-type-section-component.entity-CIkXc51V.mjs.map} +1 -1
  40. package/fesm2022/{acorex-modules-asset-management-asset-type-section.entity-CldvQBUW.mjs → acorex-modules-asset-management-asset-type-section.entity-Ctxh5hGa.mjs} +2 -2
  41. package/fesm2022/{acorex-modules-asset-management-asset-type-section.entity-CldvQBUW.mjs.map → acorex-modules-asset-management-asset-type-section.entity-Ctxh5hGa.mjs.map} +1 -1
  42. package/fesm2022/{acorex-modules-asset-management-asset-type.entity-CP0dryvp.mjs → acorex-modules-asset-management-asset-type.entity-CN6K0Uw3.mjs} +2 -2
  43. package/fesm2022/{acorex-modules-asset-management-asset-type.entity-CP0dryvp.mjs.map → acorex-modules-asset-management-asset-type.entity-CN6K0Uw3.mjs.map} +1 -1
  44. package/fesm2022/{acorex-modules-asset-management-asset.entity-Du_fWe9V.mjs → acorex-modules-asset-management-asset.entity-2XZut6JS.mjs} +6 -5
  45. package/fesm2022/acorex-modules-asset-management-asset.entity-2XZut6JS.mjs.map +1 -0
  46. package/fesm2022/acorex-modules-asset-management.mjs +1 -1
  47. package/fesm2022/acorex-modules-common.mjs +399 -399
  48. package/fesm2022/acorex-modules-common.mjs.map +1 -1
  49. package/fesm2022/{acorex-modules-human-capital-management-acorex-modules-human-capital-management-hImDhzkB.mjs → acorex-modules-human-capital-management-acorex-modules-human-capital-management-B37ZqEql.mjs} +301 -22
  50. package/fesm2022/acorex-modules-human-capital-management-acorex-modules-human-capital-management-B37ZqEql.mjs.map +1 -0
  51. package/fesm2022/{acorex-modules-human-capital-management-approve-leave-request.command-DujyJOvo.mjs → acorex-modules-human-capital-management-approve-leave-request.command-Bf8iPUE-.mjs} +2 -2
  52. package/fesm2022/{acorex-modules-human-capital-management-approve-leave-request.command-DujyJOvo.mjs.map → acorex-modules-human-capital-management-approve-leave-request.command-Bf8iPUE-.mjs.map} +1 -1
  53. package/fesm2022/{acorex-modules-human-capital-management-assign-position-assignment.command-BPB9vaCn.mjs → acorex-modules-human-capital-management-assign-position-assignment.command-DqX9OAq4.mjs} +2 -2
  54. package/fesm2022/{acorex-modules-human-capital-management-assign-position-assignment.command-BPB9vaCn.mjs.map → acorex-modules-human-capital-management-assign-position-assignment.command-DqX9OAq4.mjs.map} +1 -1
  55. package/fesm2022/{acorex-modules-human-capital-management-cancel-leave-request.command-BdPUdhbU.mjs → acorex-modules-human-capital-management-cancel-leave-request.command-DQG0Al0X.mjs} +2 -2
  56. package/fesm2022/{acorex-modules-human-capital-management-cancel-leave-request.command-BdPUdhbU.mjs.map → acorex-modules-human-capital-management-cancel-leave-request.command-DQG0Al0X.mjs.map} +1 -1
  57. package/fesm2022/acorex-modules-human-capital-management-employee-lifecycle-process.entity-DSsgKG8S.mjs +225 -0
  58. package/fesm2022/acorex-modules-human-capital-management-employee-lifecycle-process.entity-DSsgKG8S.mjs.map +1 -0
  59. package/fesm2022/{acorex-modules-human-capital-management-employee.entity-CgmF-WPf.mjs → acorex-modules-human-capital-management-employee.entity-C8PaZEDs.mjs} +38 -2
  60. package/fesm2022/acorex-modules-human-capital-management-employee.entity-C8PaZEDs.mjs.map +1 -0
  61. package/fesm2022/{acorex-modules-human-capital-management-employment-type.entity-Chio_E9S.mjs → acorex-modules-human-capital-management-employment-type.entity-DhqHdESk.mjs} +2 -2
  62. package/fesm2022/{acorex-modules-human-capital-management-employment-type.entity-Chio_E9S.mjs.map → acorex-modules-human-capital-management-employment-type.entity-DhqHdESk.mjs.map} +1 -1
  63. package/fesm2022/{acorex-modules-human-capital-management-leave-request.entity--9iGu0H7.mjs → acorex-modules-human-capital-management-leave-request.entity-CPdV6kiR.mjs} +2 -2
  64. package/fesm2022/{acorex-modules-human-capital-management-leave-request.entity--9iGu0H7.mjs.map → acorex-modules-human-capital-management-leave-request.entity-CPdV6kiR.mjs.map} +1 -1
  65. package/fesm2022/{acorex-modules-human-capital-management-leave-type.entity-O0j4P2oU.mjs → acorex-modules-human-capital-management-leave-type.entity-D3iarVMG.mjs} +2 -2
  66. package/fesm2022/{acorex-modules-human-capital-management-leave-type.entity-O0j4P2oU.mjs.map → acorex-modules-human-capital-management-leave-type.entity-D3iarVMG.mjs.map} +1 -1
  67. package/fesm2022/acorex-modules-human-capital-management-lifecycle-process-type.entity-EazvPSR6.mjs +175 -0
  68. package/fesm2022/acorex-modules-human-capital-management-lifecycle-process-type.entity-EazvPSR6.mjs.map +1 -0
  69. package/fesm2022/{acorex-modules-human-capital-management-position-assignment.entity-Bg6omEy_.mjs → acorex-modules-human-capital-management-position-assignment.entity-mROyAoz-.mjs} +2 -2
  70. package/fesm2022/{acorex-modules-human-capital-management-position-assignment.entity-Bg6omEy_.mjs.map → acorex-modules-human-capital-management-position-assignment.entity-mROyAoz-.mjs.map} +1 -1
  71. package/fesm2022/{acorex-modules-human-capital-management-reject-leave-request.command-ZNGufyB1.mjs → acorex-modules-human-capital-management-reject-leave-request.command-Bq7OtST6.mjs} +2 -2
  72. package/fesm2022/{acorex-modules-human-capital-management-reject-leave-request.command-ZNGufyB1.mjs.map → acorex-modules-human-capital-management-reject-leave-request.command-Bq7OtST6.mjs.map} +1 -1
  73. package/fesm2022/{acorex-modules-human-capital-management-revoke-position-assignment.command-C8pwJExa.mjs → acorex-modules-human-capital-management-revoke-position-assignment.command-BpklMLve.mjs} +2 -2
  74. package/fesm2022/{acorex-modules-human-capital-management-revoke-position-assignment.command-C8pwJExa.mjs.map → acorex-modules-human-capital-management-revoke-position-assignment.command-BpklMLve.mjs.map} +1 -1
  75. package/fesm2022/acorex-modules-human-capital-management.mjs +1 -1
  76. package/fesm2022/{acorex-modules-maintenance-management-acorex-modules-maintenance-management-C0LLBxMR.mjs → acorex-modules-maintenance-management-acorex-modules-maintenance-management-coPYjl8-.mjs} +321 -151
  77. package/fesm2022/acorex-modules-maintenance-management-acorex-modules-maintenance-management-coPYjl8-.mjs.map +1 -0
  78. package/fesm2022/{acorex-modules-maintenance-management-failure-effect.entity-D8yOqKWQ.mjs → acorex-modules-maintenance-management-failure-effect.entity-BdnnavfB.mjs} +2 -2
  79. package/fesm2022/{acorex-modules-maintenance-management-failure-effect.entity-D8yOqKWQ.mjs.map → acorex-modules-maintenance-management-failure-effect.entity-BdnnavfB.mjs.map} +1 -1
  80. package/fesm2022/{acorex-modules-maintenance-management-failure-mode-asset-type.entity-CHXkbEHG.mjs → acorex-modules-maintenance-management-failure-mode-asset-type.entity-tlcqWco6.mjs} +2 -2
  81. package/fesm2022/{acorex-modules-maintenance-management-failure-mode-asset-type.entity-CHXkbEHG.mjs.map → acorex-modules-maintenance-management-failure-mode-asset-type.entity-tlcqWco6.mjs.map} +1 -1
  82. package/fesm2022/{acorex-modules-maintenance-management-failure-mode-mechanism.entity-yR11e9TU.mjs → acorex-modules-maintenance-management-failure-mode-mechanism.entity-DivWl32L.mjs} +2 -2
  83. package/fesm2022/{acorex-modules-maintenance-management-failure-mode-mechanism.entity-yR11e9TU.mjs.map → acorex-modules-maintenance-management-failure-mode-mechanism.entity-DivWl32L.mjs.map} +1 -1
  84. package/fesm2022/{acorex-modules-maintenance-management-failure-mode-solution.entity-BD4Uz6G-.mjs → acorex-modules-maintenance-management-failure-mode-solution.entity-9FiLeySZ.mjs} +2 -2
  85. package/fesm2022/{acorex-modules-maintenance-management-failure-mode-solution.entity-BD4Uz6G-.mjs.map → acorex-modules-maintenance-management-failure-mode-solution.entity-9FiLeySZ.mjs.map} +1 -1
  86. package/fesm2022/{acorex-modules-maintenance-management-failure-register-cause.entity-CZFgl-t4.mjs → acorex-modules-maintenance-management-failure-register-cause.entity-3cq1KeYM.mjs} +2 -2
  87. package/fesm2022/{acorex-modules-maintenance-management-failure-register-cause.entity-CZFgl-t4.mjs.map → acorex-modules-maintenance-management-failure-register-cause.entity-3cq1KeYM.mjs.map} +1 -1
  88. package/fesm2022/{acorex-modules-maintenance-management-failure-register-effect.entity-DQE5nqiN.mjs → acorex-modules-maintenance-management-failure-register-effect.entity-CaVb6rDn.mjs} +2 -2
  89. package/fesm2022/{acorex-modules-maintenance-management-failure-register-effect.entity-DQE5nqiN.mjs.map → acorex-modules-maintenance-management-failure-register-effect.entity-CaVb6rDn.mjs.map} +1 -1
  90. package/fesm2022/{acorex-modules-maintenance-management-failure-register-mechanism.entity-C6mhbWzU.mjs → acorex-modules-maintenance-management-failure-register-mechanism.entity-C2UKW63M.mjs} +2 -2
  91. package/fesm2022/{acorex-modules-maintenance-management-failure-register-mechanism.entity-C6mhbWzU.mjs.map → acorex-modules-maintenance-management-failure-register-mechanism.entity-C2UKW63M.mjs.map} +1 -1
  92. package/fesm2022/{acorex-modules-maintenance-management-failure-register.entity-DSnrVaWI.mjs → acorex-modules-maintenance-management-failure-register.entity-KghFLCIJ.mjs} +16 -3
  93. package/fesm2022/acorex-modules-maintenance-management-failure-register.entity-KghFLCIJ.mjs.map +1 -0
  94. package/fesm2022/{acorex-modules-maintenance-management-failure-severity.entity-DZoMhgW7.mjs → acorex-modules-maintenance-management-failure-severity.entity-BebswR7S.mjs} +2 -2
  95. package/fesm2022/{acorex-modules-maintenance-management-failure-severity.entity-DZoMhgW7.mjs.map → acorex-modules-maintenance-management-failure-severity.entity-BebswR7S.mjs.map} +1 -1
  96. package/fesm2022/{acorex-modules-maintenance-management-maintenance-template.entity-qf2WNKB_.mjs → acorex-modules-maintenance-management-maintenance-template.entity-1V4swUZ4.mjs} +191 -35
  97. package/fesm2022/acorex-modules-maintenance-management-maintenance-template.entity-1V4swUZ4.mjs.map +1 -0
  98. package/fesm2022/acorex-modules-maintenance-management-work-order-list-command-3hlrAtIr.mjs +154 -0
  99. package/fesm2022/acorex-modules-maintenance-management-work-order-list-command-3hlrAtIr.mjs.map +1 -0
  100. package/fesm2022/acorex-modules-maintenance-management.mjs +1 -1
  101. package/fesm2022/{acorex-modules-report-management-report-runner-root-page.component-B-NoGoOJ.mjs → acorex-modules-report-management-report-runner-root-page.component-Dum62tB8.mjs} +4 -6
  102. package/fesm2022/{acorex-modules-report-management-report-runner-root-page.component-B-NoGoOJ.mjs.map → acorex-modules-report-management-report-runner-root-page.component-Dum62tB8.mjs.map} +1 -1
  103. package/fesm2022/acorex-modules-report-management.mjs +36 -19
  104. package/fesm2022/acorex-modules-report-management.mjs.map +1 -1
  105. package/fesm2022/acorex-modules-workflow-management.mjs +249 -52
  106. package/fesm2022/acorex-modules-workflow-management.mjs.map +1 -1
  107. package/package.json +2 -2
  108. package/types/acorex-modules-common.d.ts +14 -14
  109. package/types/acorex-modules-human-capital-management.d.ts +100 -2
  110. package/types/acorex-modules-maintenance-management.d.ts +6 -6
  111. package/types/acorex-modules-report-management.d.ts +8 -0
  112. package/types/acorex-modules-workflow-management.d.ts +51 -4
  113. package/fesm2022/acorex-modules-assessment-management-acorex-modules-assessment-management-c8OrTwDw.mjs.map +0 -1
  114. package/fesm2022/acorex-modules-asset-management-acorex-modules-asset-management-fQ0rp8vu.mjs.map +0 -1
  115. package/fesm2022/acorex-modules-asset-management-asset.entity-Du_fWe9V.mjs.map +0 -1
  116. package/fesm2022/acorex-modules-human-capital-management-acorex-modules-human-capital-management-hImDhzkB.mjs.map +0 -1
  117. package/fesm2022/acorex-modules-human-capital-management-employee.entity-CgmF-WPf.mjs.map +0 -1
  118. package/fesm2022/acorex-modules-maintenance-management-acorex-modules-maintenance-management-C0LLBxMR.mjs.map +0 -1
  119. package/fesm2022/acorex-modules-maintenance-management-failure-register.entity-DSnrVaWI.mjs.map +0 -1
  120. package/fesm2022/acorex-modules-maintenance-management-maintenance-template.entity-qf2WNKB_.mjs.map +0 -1
  121. package/fesm2022/acorex-modules-maintenance-management-work-order-list-command-DTKNtyBF.mjs +0 -54
  122. package/fesm2022/acorex-modules-maintenance-management-work-order-list-command-DTKNtyBF.mjs.map +0 -1
@@ -1,7 +1,7 @@
1
- import { AXPEntityCommandScope, createQueryView, AXPRefreshEvent, AXVChangeType, AXPVersioningService, AXPSettingsService, AXPCommonSettings, createAllQueryView, AXPEntityQueryType, AXPSearchService, AXPLockService, AXPStatusDefinitionProviderService, AXPStatusProvider, AXPSystemStatuses, AXPSystemStatusType, AXPHomePageService, ALL_DEFAULT_OPERATORS, AXP_MENU_PROVIDER, AXP_SETTING_DEFINITION_PROVIDER, AXP_STATUS_PROVIDERS } from '@acorex/platform/common';
2
- import * as i1$3 from '@acorex/platform/core';
3
- import { AXPSystemActionType, AXPExpressionEvaluatorService, getSmart, AXPComponentSlotModule, AXPPlatformScope, AXP_EXPRESSION_EVALUATOR_SCOPE_PROVIDER, AXPBroadcastEventService, AXP_MODULE_MANIFEST_PROVIDER, AXP_FEATURE_DEFINITION_PROVIDER } from '@acorex/platform/core';
4
- import { provideCommandSetups, AXPCommandExecutor, provideCommandMiddleware } from '@acorex/platform/runtime';
1
+ import { AXPEntityCommandScope, createQueryView, AXPRefreshEvent, AXVChangeType, AXPVersioningService, AXPSettingsService, AXPCommonSettings, createAllQueryView, AXPEntityQueryType, AXPLockService, AXPStatusDefinitionProviderService, AXPStatusProvider, AXPSystemStatuses, AXPSystemStatusType, AXPHomePageService, ALL_DEFAULT_OPERATORS, AXP_MENU_PROVIDER, AXP_SETTING_DEFINITION_PROVIDER, AXP_STATUS_PROVIDERS, AXPSearchService } from '@acorex/platform/common';
2
+ import * as i1$4 from '@acorex/platform/core';
3
+ import { AXPSystemActionType, AXPExpressionEvaluatorService, getSmart, AXP_EXPRESSION_EVALUATOR_SCOPE_PROVIDER, AXPBroadcastEventService, AXP_MODULE_MANIFEST_PROVIDER, AXP_FEATURE_DEFINITION_PROVIDER, AXPComponentSlotModule, AXPPlatformScope } from '@acorex/platform/core';
4
+ import { provideCommandSetups, provideCommandMiddleware, AXPCommandExecutor } from '@acorex/platform/runtime';
5
5
  import { AXPWidgetsModule } from '@acorex/platform/layout/widgets';
6
6
  import * as i0 from '@angular/core';
7
7
  import { inject, Injectable, NgModule, input, signal, computed, ChangeDetectionStrategy, Component, Injector, runInInjectionContext, ViewEncapsulation, InjectionToken, HostListener } from '@angular/core';
@@ -28,12 +28,12 @@ import { AXBasePageComponent } from '@acorex/components/page';
28
28
  import { AXFormatService } from '@acorex/core/format';
29
29
  import { get, set } from 'lodash-es';
30
30
  import { AXToastService } from '@acorex/components/toast';
31
- import { AXTextBoxModule } from '@acorex/components/text-box';
32
- import { Subject, firstValueFrom } from 'rxjs';
33
31
  import { AXPLayoutBuilderService } from '@acorex/platform/layout/builder';
34
- import * as i1$4 from '@acorex/core/validation';
32
+ import * as i1$3 from '@acorex/core/validation';
35
33
  import { AXValidationModule } from '@acorex/core/validation';
36
34
  import { AXCalendarService } from '@acorex/core/date-time';
35
+ import { firstValueFrom, Subject } from 'rxjs';
36
+ import { AXTextBoxModule } from '@acorex/components/text-box';
37
37
  import { AXPPageLayoutBaseComponent, AXPPageLayoutComponent, AXPPageLayoutBase } from '@acorex/platform/layout/views';
38
38
 
39
39
  const config = {
@@ -4334,407 +4334,119 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
4334
4334
  }]
4335
4335
  }] });
4336
4336
 
4337
- const AXP_GLOBAL_SEARCH_CONFIG_TOKEN = new InjectionToken('AXP_GLOBAL_SEARCH_CONFIG_TOKEN');
4338
-
4339
- class AXPGlobalSearchSlotComponent {
4340
- constructor() {
4341
- this.workflow = inject(AXPWorkflowService);
4342
- }
4343
- async startSearch() {
4344
- await this.workflow.execute('global-search');
4345
- }
4346
- async handleKeyboardEvent(event) {
4347
- if (event.ctrlKey) {
4348
- switch (event.code) {
4349
- case 'KeyK':
4350
- event.preventDefault();
4351
- event.stopPropagation();
4352
- await this.startSearch();
4353
- break;
4337
+ const iconPlugin = {
4338
+ name: 'icon',
4339
+ order: 75,
4340
+ apply: (ctx, options) => {
4341
+ ensureListActions(ctx);
4342
+ const groupId = 'appearance';
4343
+ const groups = ctx.groups.list() ?? [];
4344
+ if (!groups.some((g) => g.id === groupId)) {
4345
+ ctx.groups.add({ id: groupId, title: '@general:terms.interface.appearance' });
4346
+ }
4347
+ const props = ctx.properties.list();
4348
+ if (!props.some((p) => p.name === 'icon')) {
4349
+ ctx.properties.add({
4350
+ name: 'icon',
4351
+ title: '@general:terms.common.icon',
4352
+ groupId,
4353
+ schema: {
4354
+ dataType: 'string',
4355
+ interface: {
4356
+ type: AXPWidgetsList.Theme.IconChooser,
4357
+ options: {},
4358
+ },
4359
+ },
4360
+ validations: [],
4361
+ options: {
4362
+ sort: { enabled: false },
4363
+ filter: {
4364
+ advance: { enabled: false },
4365
+ inline: { enabled: false },
4366
+ },
4367
+ },
4368
+ });
4369
+ }
4370
+ //#region ---- Add Column to List View ----
4371
+ // Add icon column to list view if enabled (default: true)
4372
+ const columnEnabled = options?.column?.enabled ?? true;
4373
+ if (columnEnabled) {
4374
+ const columns = ctx.columns.list() ?? [];
4375
+ if (!columns.some((c) => c.name === 'icon')) {
4376
+ ctx.columns.add({
4377
+ name: 'icon',
4378
+ title: '@general:terms.common.icon',
4379
+ sort: { enabled: false },
4380
+ options: {
4381
+ visible: options?.column?.visible ?? false,
4382
+ width: `${options?.column?.width ?? 120}px`,
4383
+ },
4384
+ });
4354
4385
  }
4355
4386
  }
4356
- }
4357
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPGlobalSearchSlotComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
4358
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.9", type: AXPGlobalSearchSlotComponent, isStandalone: true, selector: "ng-component", host: { listeners: { "document:keydown": "handleKeyboardEvent($event)" } }, ngImport: i0, template: `
4359
- <ax-button color="primary" class="ax-flex md:ax-hidden" (onClick)="startSearch()">
4360
- <ax-icon class="fa-regular fa-search">
4361
- </ax-icon>
4362
- </ax-button>
4363
- <div class="ax-bg-primary-200/15 ax-h-10 ax-w-72 ax-rounded-default ax-cursor-pointer ax-justify-between ax-hidden md:ax-flex ax-items-center ax-px-3 hover:ax-bg-primary-200/30 ax-text-primary-text" (click)="startSearch()">
4364
- <div class="ax-flex ax-items-center ax-gap-2">
4365
- <i class="fa-light fa-search ax-text-xl"></i>
4366
- <span>{{ '@global-search:terms.search-placeholder' | translate | async}}</span>
4367
- </div>
4368
- <kbd class="ax-text-sm">Ctrl+K</kbd>
4369
- </div>
4370
- `, isInline: true, dependencies: [{ kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i2.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i1$1.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "ngmodule", type: AXTextBoxModule }, { kind: "pipe", type: i4.AXTranslatorPipe, name: "translate" }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
4387
+ //#endregion
4388
+ //#region ---- Update Interface Layouts ----
4389
+ // Ensure layout includes property in create/modify/single
4390
+ const applyLayoutPatch = (layout) => {
4391
+ const next = cloneLayoutArrays(layout);
4392
+ ensureLayoutSection(next, { id: groupId, order: 150 });
4393
+ ensureLayoutPropertyView(next, { name: 'icon', layout: { positions: { lg: { colSpan: 6 } } } });
4394
+ return next;
4395
+ };
4396
+ ctx.interfaces.master.create.update((create) => applyLayoutPatch(create ?? { sections: [], properties: [] }));
4397
+ ctx.interfaces.master.modify.update((modify) => applyLayoutPatch(modify ?? { sections: [], properties: [] }));
4398
+ ctx.interfaces.master.single.update((single) => applyLayoutPatch(single ?? { title: ctx.entity.title, sections: [], properties: [] }));
4399
+ //#endregion
4400
+ },
4401
+ };
4402
+
4403
+ class AXPIconPluginModule {
4404
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPIconPluginModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
4405
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.9", ngImport: i0, type: AXPIconPluginModule }); }
4406
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPIconPluginModule, providers: [{ provide: AXP_ENTITY_ACTION_PLUGIN, multi: true, useValue: iconPlugin }] }); }
4371
4407
  }
4372
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPGlobalSearchSlotComponent, decorators: [{
4373
- type: Component,
4408
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPIconPluginModule, decorators: [{
4409
+ type: NgModule,
4374
4410
  args: [{
4375
- template: `
4376
- <ax-button color="primary" class="ax-flex md:ax-hidden" (onClick)="startSearch()">
4377
- <ax-icon class="fa-regular fa-search">
4378
- </ax-icon>
4379
- </ax-button>
4380
- <div class="ax-bg-primary-200/15 ax-h-10 ax-w-72 ax-rounded-default ax-cursor-pointer ax-justify-between ax-hidden md:ax-flex ax-items-center ax-px-3 hover:ax-bg-primary-200/30 ax-text-primary-text" (click)="startSearch()">
4381
- <div class="ax-flex ax-items-center ax-gap-2">
4382
- <i class="fa-light fa-search ax-text-xl"></i>
4383
- <span>{{ '@global-search:terms.search-placeholder' | translate | async}}</span>
4384
- </div>
4385
- <kbd class="ax-text-sm">Ctrl+K</kbd>
4386
- </div>
4387
- `,
4388
- imports: [AXButtonModule, AXDecoratorModule, AXTranslationModule, AXTextBoxModule, AsyncPipe],
4389
- changeDetection: ChangeDetectionStrategy.OnPush,
4411
+ declarations: [],
4412
+ imports: [],
4413
+ exports: [],
4414
+ providers: [{ provide: AXP_ENTITY_ACTION_PLUGIN, multi: true, useValue: iconPlugin }],
4390
4415
  }]
4391
- }], propDecorators: { handleKeyboardEvent: [{
4392
- type: HostListener,
4393
- args: ['document:keydown', ['$event']]
4394
- }] } });
4416
+ }] });
4395
4417
 
4396
- class AXPGlobalSearchStartAction extends AXPWorkflowAction {
4397
- constructor() {
4398
- super(...arguments);
4399
- this.popupService = inject(AXPopupService);
4400
- this.workflow = inject(AXPWorkflowService);
4401
- this.commandExecutor = inject(AXPCommandExecutor);
4402
- this.config = inject(AXP_GLOBAL_SEARCH_CONFIG_TOKEN);
4403
- }
4404
- async execute(context) {
4405
- const component = await this.config.window();
4406
- const popup = await this.popupService.open(component, {
4407
- title: 'Search...',
4408
- size: 'fit',
4409
- closeOnBackdropClick: true,
4410
- data: {
4411
- text: context.getVariable('text'),
4412
- },
4413
- header: false,
4414
- });
4415
- if (popup.data) {
4416
- const result = popup.data;
4417
- if (result && result.command) {
4418
- const commandName = result.command.name;
4419
- const commandOptions = result.command.options ?? {};
4420
- if (this.workflow.exists(commandName)) {
4421
- await this.workflow.execute(commandName, commandOptions);
4422
- }
4423
- else {
4424
- await this.commandExecutor.execute(commandName, commandOptions);
4425
- }
4418
+ const lockGuardMiddleware = {
4419
+ target: { ops: ['update', 'delete'], order: 10 },
4420
+ execute: async (ctx, next) => {
4421
+ const lockService = inject(AXPLockService);
4422
+ const session = inject(AXPSessionService);
4423
+ const lock = await lockService.check({ refId: ctx.id, refType: ctx.entityName });
4424
+ if (lock) {
4425
+ const info = await lockService.getInfo({ refId: ctx.id, refType: ctx.entityName });
4426
+ if (info && session.user && info.lockedBy.id !== session.user.id) {
4427
+ throw new Error('This record is locked and cannot be edited.');
4426
4428
  }
4427
4429
  }
4428
- }
4429
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPGlobalSearchStartAction, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
4430
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPGlobalSearchStartAction }); }
4431
- }
4432
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPGlobalSearchStartAction, decorators: [{
4433
- type: Injectable
4434
- }] });
4435
- const AXPGlobalSearchWorkflow = {
4436
- startStepId: 'start',
4437
- steps: {
4438
- start: {
4439
- action: 'AXPGlobalSearchStartAction',
4440
- },
4430
+ await next();
4441
4431
  },
4442
4432
  };
4443
4433
 
4444
- const AXPCommonFeatureKeys = {
4445
- GlobalSearch: 'Common:Feature:GlobalSearch',
4446
- AdvancedExport: 'Common:Feature:AdvancedExport',
4447
- ActivityLog: 'Common:Feature:ActivityLog',
4448
- DataImport: 'Common:Feature:DataImport',
4449
- BulkOperations: 'Common:Feature:BulkOperations',
4450
- AdvancedFiltering: 'Common:Feature:AdvancedFiltering',
4451
- DataSynchronization: 'Common:Feature:DataSynchronization',
4452
- };
4453
-
4454
- class AXPGlobalSearchModule {
4455
- constructor(appInitService, injector) {
4434
+ class AXMLockPopupWorkflowAction extends AXPWorkflowAction {
4435
+ constructor() {
4436
+ super(...arguments);
4437
+ this.translationService = inject(AXTranslationService);
4438
+ this.layoutBuilder = inject(AXPLayoutBuilderService);
4439
+ this.lockService = inject(AXPLockService);
4440
+ this.sessionService = inject(AXPSessionService);
4456
4441
  }
4457
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPGlobalSearchModule, deps: [{ token: i1$3.AXPAppStartUpService }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.NgModule }); }
4458
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.9", ngImport: i0, type: AXPGlobalSearchModule, imports: [i1$3.AXPComponentSlotModule, i1.AXPWorkflowModule] }); }
4459
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPGlobalSearchModule, providers: [
4442
+ async execute(context) {
4443
+ const refId = context.getVariable('options.refId');
4444
+ const refType = context.getVariable('options.refType');
4445
+ const durationOptions = [
4460
4446
  {
4461
- provide: AXP_GLOBAL_SEARCH_CONFIG_TOKEN,
4462
- useValue: {
4463
- window: () => import('./acorex-modules-common-search-popup.component-BbRyjGia.mjs').then((c) => c.AXPGlobalSearchPopupComponent),
4464
- },
4465
- },
4466
- ], imports: [AXPComponentSlotModule.forChild({
4467
- 'root-header-start': [
4468
- {
4469
- priority: 0,
4470
- name: 'search',
4471
- component: AXPGlobalSearchSlotComponent,
4472
- features: [AXPCommonFeatureKeys.GlobalSearch],
4473
- },
4474
- ],
4475
- }),
4476
- //
4477
- AXPWorkflowModule.forChild({
4478
- actions: {
4479
- AXPGlobalSearchStartAction
4480
- },
4481
- workflows: {
4482
- 'global-search': AXPGlobalSearchWorkflow,
4483
- },
4484
- })] }); }
4485
- }
4486
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPGlobalSearchModule, decorators: [{
4487
- type: NgModule,
4488
- args: [{
4489
- imports: [
4490
- AXPComponentSlotModule.forChild({
4491
- 'root-header-start': [
4492
- {
4493
- priority: 0,
4494
- name: 'search',
4495
- component: AXPGlobalSearchSlotComponent,
4496
- features: [AXPCommonFeatureKeys.GlobalSearch],
4497
- },
4498
- ],
4499
- }),
4500
- //
4501
- AXPWorkflowModule.forChild({
4502
- actions: {
4503
- AXPGlobalSearchStartAction
4504
- },
4505
- workflows: {
4506
- 'global-search': AXPGlobalSearchWorkflow,
4507
- },
4508
- })
4509
- ],
4510
- exports: [],
4511
- declarations: [],
4512
- providers: [
4513
- {
4514
- provide: AXP_GLOBAL_SEARCH_CONFIG_TOKEN,
4515
- useValue: {
4516
- window: () => import('./acorex-modules-common-search-popup.component-BbRyjGia.mjs').then((c) => c.AXPGlobalSearchPopupComponent),
4517
- },
4518
- },
4519
- ]
4520
- }]
4521
- }], ctorParameters: () => [{ type: i1$3.AXPAppStartUpService }, { type: i0.Injector }] });
4522
-
4523
- class AXPGlobalSearchViewModel {
4524
- constructor() {
4525
- this.settingKeys = {
4526
- recent: "global-search:recents:items",
4527
- pinned: "global-search:pinned:items"
4528
- };
4529
- this.searchService = inject(AXPSearchService);
4530
- this.settingsService = inject(AXPSettingsService);
4531
- this._text = signal(null, ...(ngDevMode ? [{ debugName: "_text" }] : /* istanbul ignore next */ []));
4532
- this.text = this._text.asReadonly();
4533
- this._results = signal([], ...(ngDevMode ? [{ debugName: "_results" }] : /* istanbul ignore next */ []));
4534
- this.results = this._results.asReadonly();
4535
- this._isBusy = signal(false, ...(ngDevMode ? [{ debugName: "_isBusy" }] : /* istanbul ignore next */ []));
4536
- this.isBusy = this._isBusy.asReadonly();
4537
- this.isEmpty = computed(() => this.text() && this.results().length == 0, ...(ngDevMode ? [{ debugName: "isEmpty" }] : /* istanbul ignore next */ []));
4538
- this.isValid = computed(() => (this.text()?.length ?? 0) > 2, ...(ngDevMode ? [{ debugName: "isValid" }] : /* istanbul ignore next */ []));
4539
- this.isStart = computed(() => !this.isEmpty() && this.results().length == 0, ...(ngDevMode ? [{ debugName: "isStart" }] : /* istanbul ignore next */ []));
4540
- this.isWelcome = computed(() => this.isStart() && this.pinnedItems().length == 0 && this.recentItems().length == 0, ...(ngDevMode ? [{ debugName: "isWelcome" }] : /* istanbul ignore next */ []));
4541
- this._recentItems = signal([], ...(ngDevMode ? [{ debugName: "_recentItems" }] : /* istanbul ignore next */ []));
4542
- this._pinnedItems = signal([], ...(ngDevMode ? [{ debugName: "_pinnedItems" }] : /* istanbul ignore next */ []));
4543
- this.pinnedItems = this._pinnedItems.asReadonly();
4544
- this.recentItems = computed(() => this.getTopRecentItems(), ...(ngDevMode ? [{ debugName: "recentItems" }] : /* istanbul ignore next */ []));
4545
- this.onItemSelected = new Subject();
4546
- this.loadSettings();
4547
- }
4548
- async search(text) {
4549
- this._isBusy.set(true);
4550
- this._text.set(text);
4551
- if (!this.isValid()) {
4552
- this._results.set([]);
4553
- }
4554
- else {
4555
- await new Promise((resolve) => setTimeout(resolve, 250));
4556
- const results = await this.searchService.search(text);
4557
- this._results.set(results);
4558
- }
4559
- this._isBusy.set(false);
4560
- }
4561
- async execute(item) {
4562
- this.onItemSelected.next(item);
4563
- await this.updateSelectionHistory(item);
4564
- }
4565
- async pin(item) {
4566
- const currentPinned = this._pinnedItems();
4567
- if (!currentPinned.some(i => i.id === item.id)) {
4568
- this._pinnedItems.set([item, ...currentPinned].slice(0, 5));
4569
- await this.saveSettings();
4570
- }
4571
- }
4572
- async unpin(item) {
4573
- const currentPinned = this._pinnedItems();
4574
- this._pinnedItems.set(currentPinned.filter(i => i.id !== item.id));
4575
- await this.saveSettings();
4576
- }
4577
- async togglePin(item) {
4578
- if (this.isPinned(item)) {
4579
- await this.unpin(item);
4580
- }
4581
- else {
4582
- await this.pin(item);
4583
- }
4584
- }
4585
- isPinned(item) {
4586
- const currentPinned = this._pinnedItems();
4587
- return currentPinned.some(i => i.id === item.id);
4588
- }
4589
- async updateSelectionHistory(item) {
4590
- // Update recent selections
4591
- const currentHistory = this._recentItems();
4592
- const updatedHistory = [item, ...currentHistory.filter(i => i.id !== item.id)].slice(0, 5);
4593
- this._recentItems.set(updatedHistory);
4594
- // Save updated settings
4595
- await this.saveSettings();
4596
- }
4597
- getTopRecentItems() {
4598
- const pinnedIds = new Set(this._pinnedItems().map(item => item.id));
4599
- return this._recentItems().filter(item => !pinnedIds.has(item.id)).slice(0, 5);
4600
- }
4601
- async clearRecentItems() {
4602
- this._recentItems.set([]);
4603
- await this.settingsService.scope(AXPPlatformScope.User).set(this.settingKeys.recent, []);
4604
- }
4605
- async loadSettings() {
4606
- // Load recent selections
4607
- const recent = await this.settingsService.get(this.settingKeys.recent);
4608
- if (recent) {
4609
- this._recentItems.set(recent.slice(0, 5));
4610
- }
4611
- // Load pinned items
4612
- const pinned = await this.settingsService.get(this.settingKeys.pinned);
4613
- if (pinned) {
4614
- this._pinnedItems.set(pinned.slice(0, 5));
4615
- }
4616
- }
4617
- async saveSettings() {
4618
- // Save recent selections
4619
- await this.settingsService.scope(AXPPlatformScope.User).set(this.settingKeys.recent, this._recentItems().slice(0, 5));
4620
- // Save pinned items
4621
- await this.settingsService.scope(AXPPlatformScope.User).set(this.settingKeys.pinned, this._pinnedItems().slice(0, 5));
4622
- }
4623
- }
4624
-
4625
- const iconPlugin = {
4626
- name: 'icon',
4627
- order: 75,
4628
- apply: (ctx, options) => {
4629
- ensureListActions(ctx);
4630
- const groupId = 'appearance';
4631
- const groups = ctx.groups.list() ?? [];
4632
- if (!groups.some((g) => g.id === groupId)) {
4633
- ctx.groups.add({ id: groupId, title: '@general:terms.interface.appearance' });
4634
- }
4635
- const props = ctx.properties.list();
4636
- if (!props.some((p) => p.name === 'icon')) {
4637
- ctx.properties.add({
4638
- name: 'icon',
4639
- title: '@general:terms.common.icon',
4640
- groupId,
4641
- schema: {
4642
- dataType: 'string',
4643
- interface: {
4644
- type: AXPWidgetsList.Theme.IconChooser,
4645
- options: {},
4646
- },
4647
- },
4648
- validations: [],
4649
- options: {
4650
- sort: { enabled: false },
4651
- filter: {
4652
- advance: { enabled: false },
4653
- inline: { enabled: false },
4654
- },
4655
- },
4656
- });
4657
- }
4658
- //#region ---- Add Column to List View ----
4659
- // Add icon column to list view if enabled (default: true)
4660
- const columnEnabled = options?.column?.enabled ?? true;
4661
- if (columnEnabled) {
4662
- const columns = ctx.columns.list() ?? [];
4663
- if (!columns.some((c) => c.name === 'icon')) {
4664
- ctx.columns.add({
4665
- name: 'icon',
4666
- title: '@general:terms.common.icon',
4667
- sort: { enabled: false },
4668
- options: {
4669
- visible: options?.column?.visible ?? false,
4670
- width: `${options?.column?.width ?? 120}px`,
4671
- },
4672
- });
4673
- }
4674
- }
4675
- //#endregion
4676
- //#region ---- Update Interface Layouts ----
4677
- // Ensure layout includes property in create/modify/single
4678
- const applyLayoutPatch = (layout) => {
4679
- const next = cloneLayoutArrays(layout);
4680
- ensureLayoutSection(next, { id: groupId, order: 150 });
4681
- ensureLayoutPropertyView(next, { name: 'icon', layout: { positions: { lg: { colSpan: 6 } } } });
4682
- return next;
4683
- };
4684
- ctx.interfaces.master.create.update((create) => applyLayoutPatch(create ?? { sections: [], properties: [] }));
4685
- ctx.interfaces.master.modify.update((modify) => applyLayoutPatch(modify ?? { sections: [], properties: [] }));
4686
- ctx.interfaces.master.single.update((single) => applyLayoutPatch(single ?? { title: ctx.entity.title, sections: [], properties: [] }));
4687
- //#endregion
4688
- },
4689
- };
4690
-
4691
- class AXPIconPluginModule {
4692
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPIconPluginModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
4693
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.9", ngImport: i0, type: AXPIconPluginModule }); }
4694
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPIconPluginModule, providers: [{ provide: AXP_ENTITY_ACTION_PLUGIN, multi: true, useValue: iconPlugin }] }); }
4695
- }
4696
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPIconPluginModule, decorators: [{
4697
- type: NgModule,
4698
- args: [{
4699
- declarations: [],
4700
- imports: [],
4701
- exports: [],
4702
- providers: [{ provide: AXP_ENTITY_ACTION_PLUGIN, multi: true, useValue: iconPlugin }],
4703
- }]
4704
- }] });
4705
-
4706
- const lockGuardMiddleware = {
4707
- target: { ops: ['update', 'delete'], order: 10 },
4708
- execute: async (ctx, next) => {
4709
- const lockService = inject(AXPLockService);
4710
- const session = inject(AXPSessionService);
4711
- const lock = await lockService.check({ refId: ctx.id, refType: ctx.entityName });
4712
- if (lock) {
4713
- const info = await lockService.getInfo({ refId: ctx.id, refType: ctx.entityName });
4714
- if (info && session.user && info.lockedBy.id !== session.user.id) {
4715
- throw new Error('This record is locked and cannot be edited.');
4716
- }
4717
- }
4718
- await next();
4719
- },
4720
- };
4721
-
4722
- class AXMLockPopupWorkflowAction extends AXPWorkflowAction {
4723
- constructor() {
4724
- super(...arguments);
4725
- this.translationService = inject(AXTranslationService);
4726
- this.layoutBuilder = inject(AXPLayoutBuilderService);
4727
- this.lockService = inject(AXPLockService);
4728
- this.sessionService = inject(AXPSessionService);
4729
- }
4730
- async execute(context) {
4731
- const refId = context.getVariable('options.refId');
4732
- const refType = context.getVariable('options.refType');
4733
- const durationOptions = [
4734
- {
4735
- value: '1h',
4736
- text: await this.translationService.translateAsync('@lock-system:components.lock-dialog.fields.duration.options.1h'),
4737
- hours: 1,
4447
+ value: '1h',
4448
+ text: await this.translationService.translateAsync('@lock-system:components.lock-dialog.fields.duration.options.1h'),
4449
+ hours: 1,
4738
4450
  },
4739
4451
  {
4740
4452
  value: '1d',
@@ -6146,7 +5858,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
6146
5858
  */
6147
5859
  class AXPValidationRulesModule {
6148
5860
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPValidationRulesModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
6149
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.9", ngImport: i0, type: AXPValidationRulesModule, imports: [i1$4.AXValidationModule] }); }
5861
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.9", ngImport: i0, type: AXPValidationRulesModule, imports: [i1$3.AXValidationModule] }); }
6150
5862
  static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPValidationRulesModule, imports: [AXValidationModule.forChild({
6151
5863
  rules: [VariableNameValidationRule, UniqueValidationRule, AtLeastOneOfValidationRule],
6152
5864
  })] }); }
@@ -6585,6 +6297,16 @@ class AXMFilterOperatorEvaluatorScopeProvider {
6585
6297
  }
6586
6298
  }
6587
6299
 
6300
+ const AXPCommonFeatureKeys = {
6301
+ GlobalSearch: 'Common:Feature:GlobalSearch',
6302
+ AdvancedExport: 'Common:Feature:AdvancedExport',
6303
+ ActivityLog: 'Common:Feature:ActivityLog',
6304
+ DataImport: 'Common:Feature:DataImport',
6305
+ BulkOperations: 'Common:Feature:BulkOperations',
6306
+ AdvancedFiltering: 'Common:Feature:AdvancedFiltering',
6307
+ DataSynchronization: 'Common:Feature:DataSynchronization',
6308
+ };
6309
+
6588
6310
  //#region ---- Imports ----
6589
6311
  //#endregion
6590
6312
  //#region ---- Feature Definition Provider ----
@@ -6973,7 +6695,7 @@ class AXMCommonModule {
6973
6695
  AXPAvatarPluginModule,
6974
6696
  //#endregion
6975
6697
  //#region ---- Feature Modules ----
6976
- AXPGlobalSearchModule,
6698
+ // AXPGlobalSearchModule,
6977
6699
  AXPCompareModule,
6978
6700
  AXPStatusPluginModule,
6979
6701
  AXPComputedPropertiesModule,
@@ -7087,7 +6809,7 @@ class AXMCommonModule {
7087
6809
  AXPAvatarPluginModule,
7088
6810
  //#endregion
7089
6811
  //#region ---- Feature Modules ----
7090
- AXPGlobalSearchModule,
6812
+ // AXPGlobalSearchModule,
7091
6813
  AXPCompareModule,
7092
6814
  AXPStatusPluginModule,
7093
6815
  AXPComputedPropertiesModule,
@@ -7127,7 +6849,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
7127
6849
  AXPAvatarPluginModule,
7128
6850
  //#endregion
7129
6851
  //#region ---- Feature Modules ----
7130
- AXPGlobalSearchModule,
6852
+ // AXPGlobalSearchModule,
7131
6853
  AXPCompareModule,
7132
6854
  AXPStatusPluginModule,
7133
6855
  AXPComputedPropertiesModule,
@@ -7222,6 +6944,284 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
7222
6944
  }]
7223
6945
  }] });
7224
6946
 
6947
+ const AXP_GLOBAL_SEARCH_CONFIG_TOKEN = new InjectionToken('AXP_GLOBAL_SEARCH_CONFIG_TOKEN');
6948
+
6949
+ class AXPGlobalSearchSlotComponent {
6950
+ constructor() {
6951
+ this.workflow = inject(AXPWorkflowService);
6952
+ }
6953
+ async startSearch() {
6954
+ await this.workflow.execute('global-search');
6955
+ }
6956
+ async handleKeyboardEvent(event) {
6957
+ if (event.ctrlKey) {
6958
+ switch (event.code) {
6959
+ case 'KeyK':
6960
+ event.preventDefault();
6961
+ event.stopPropagation();
6962
+ await this.startSearch();
6963
+ break;
6964
+ }
6965
+ }
6966
+ }
6967
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPGlobalSearchSlotComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
6968
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.9", type: AXPGlobalSearchSlotComponent, isStandalone: true, selector: "ng-component", host: { listeners: { "document:keydown": "handleKeyboardEvent($event)" } }, ngImport: i0, template: `
6969
+ <ax-button color="primary" class="ax-flex md:ax-hidden" (onClick)="startSearch()">
6970
+ <ax-icon class="fa-regular fa-search">
6971
+ </ax-icon>
6972
+ </ax-button>
6973
+ <div class="ax-bg-primary-200/15 ax-h-10 ax-w-72 ax-rounded-default ax-cursor-pointer ax-justify-between ax-hidden md:ax-flex ax-items-center ax-px-3 hover:ax-bg-primary-200/30 ax-text-primary-text" (click)="startSearch()">
6974
+ <div class="ax-flex ax-items-center ax-gap-2">
6975
+ <i class="fa-light fa-search ax-text-xl"></i>
6976
+ <span>{{ '@global-search:terms.search-placeholder' | translate | async}}</span>
6977
+ </div>
6978
+ <kbd class="ax-text-sm">Ctrl+K</kbd>
6979
+ </div>
6980
+ `, isInline: true, dependencies: [{ kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i2.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i1$1.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "ngmodule", type: AXTextBoxModule }, { kind: "pipe", type: i4.AXTranslatorPipe, name: "translate" }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
6981
+ }
6982
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPGlobalSearchSlotComponent, decorators: [{
6983
+ type: Component,
6984
+ args: [{
6985
+ template: `
6986
+ <ax-button color="primary" class="ax-flex md:ax-hidden" (onClick)="startSearch()">
6987
+ <ax-icon class="fa-regular fa-search">
6988
+ </ax-icon>
6989
+ </ax-button>
6990
+ <div class="ax-bg-primary-200/15 ax-h-10 ax-w-72 ax-rounded-default ax-cursor-pointer ax-justify-between ax-hidden md:ax-flex ax-items-center ax-px-3 hover:ax-bg-primary-200/30 ax-text-primary-text" (click)="startSearch()">
6991
+ <div class="ax-flex ax-items-center ax-gap-2">
6992
+ <i class="fa-light fa-search ax-text-xl"></i>
6993
+ <span>{{ '@global-search:terms.search-placeholder' | translate | async}}</span>
6994
+ </div>
6995
+ <kbd class="ax-text-sm">Ctrl+K</kbd>
6996
+ </div>
6997
+ `,
6998
+ imports: [AXButtonModule, AXDecoratorModule, AXTranslationModule, AXTextBoxModule, AsyncPipe],
6999
+ changeDetection: ChangeDetectionStrategy.OnPush,
7000
+ }]
7001
+ }], propDecorators: { handleKeyboardEvent: [{
7002
+ type: HostListener,
7003
+ args: ['document:keydown', ['$event']]
7004
+ }] } });
7005
+
7006
+ class AXPGlobalSearchStartAction extends AXPWorkflowAction {
7007
+ constructor() {
7008
+ super(...arguments);
7009
+ this.popupService = inject(AXPopupService);
7010
+ this.workflow = inject(AXPWorkflowService);
7011
+ this.commandExecutor = inject(AXPCommandExecutor);
7012
+ this.config = inject(AXP_GLOBAL_SEARCH_CONFIG_TOKEN);
7013
+ }
7014
+ async execute(context) {
7015
+ const component = await this.config.window();
7016
+ const popup = await this.popupService.open(component, {
7017
+ title: 'Search...',
7018
+ size: 'fit',
7019
+ closeOnBackdropClick: true,
7020
+ data: {
7021
+ text: context.getVariable('text'),
7022
+ },
7023
+ header: false,
7024
+ });
7025
+ if (popup.data) {
7026
+ const result = popup.data;
7027
+ if (result && result.command) {
7028
+ const commandName = result.command.name;
7029
+ const commandOptions = result.command.options ?? {};
7030
+ if (this.workflow.exists(commandName)) {
7031
+ await this.workflow.execute(commandName, commandOptions);
7032
+ }
7033
+ else {
7034
+ await this.commandExecutor.execute(commandName, commandOptions);
7035
+ }
7036
+ }
7037
+ }
7038
+ }
7039
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPGlobalSearchStartAction, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
7040
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPGlobalSearchStartAction }); }
7041
+ }
7042
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPGlobalSearchStartAction, decorators: [{
7043
+ type: Injectable
7044
+ }] });
7045
+ const AXPGlobalSearchWorkflow = {
7046
+ startStepId: 'start',
7047
+ steps: {
7048
+ start: {
7049
+ action: 'AXPGlobalSearchStartAction',
7050
+ },
7051
+ },
7052
+ };
7053
+
7054
+ class AXPGlobalSearchModule {
7055
+ constructor(appInitService, injector) {
7056
+ }
7057
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPGlobalSearchModule, deps: [{ token: i1$4.AXPAppStartUpService }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.NgModule }); }
7058
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.9", ngImport: i0, type: AXPGlobalSearchModule, imports: [i1$4.AXPComponentSlotModule, i1.AXPWorkflowModule] }); }
7059
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPGlobalSearchModule, providers: [
7060
+ {
7061
+ provide: AXP_GLOBAL_SEARCH_CONFIG_TOKEN,
7062
+ useValue: {
7063
+ window: () => import('./acorex-modules-common-search-popup.component-BbRyjGia.mjs').then((c) => c.AXPGlobalSearchPopupComponent),
7064
+ },
7065
+ },
7066
+ ], imports: [AXPComponentSlotModule.forChild({
7067
+ 'root-header-start': [
7068
+ {
7069
+ priority: 0,
7070
+ name: 'search',
7071
+ component: AXPGlobalSearchSlotComponent,
7072
+ features: [AXPCommonFeatureKeys.GlobalSearch],
7073
+ },
7074
+ ],
7075
+ }),
7076
+ //
7077
+ AXPWorkflowModule.forChild({
7078
+ actions: {
7079
+ AXPGlobalSearchStartAction
7080
+ },
7081
+ workflows: {
7082
+ 'global-search': AXPGlobalSearchWorkflow,
7083
+ },
7084
+ })] }); }
7085
+ }
7086
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPGlobalSearchModule, decorators: [{
7087
+ type: NgModule,
7088
+ args: [{
7089
+ imports: [
7090
+ AXPComponentSlotModule.forChild({
7091
+ 'root-header-start': [
7092
+ {
7093
+ priority: 0,
7094
+ name: 'search',
7095
+ component: AXPGlobalSearchSlotComponent,
7096
+ features: [AXPCommonFeatureKeys.GlobalSearch],
7097
+ },
7098
+ ],
7099
+ }),
7100
+ //
7101
+ AXPWorkflowModule.forChild({
7102
+ actions: {
7103
+ AXPGlobalSearchStartAction
7104
+ },
7105
+ workflows: {
7106
+ 'global-search': AXPGlobalSearchWorkflow,
7107
+ },
7108
+ })
7109
+ ],
7110
+ exports: [],
7111
+ declarations: [],
7112
+ providers: [
7113
+ {
7114
+ provide: AXP_GLOBAL_SEARCH_CONFIG_TOKEN,
7115
+ useValue: {
7116
+ window: () => import('./acorex-modules-common-search-popup.component-BbRyjGia.mjs').then((c) => c.AXPGlobalSearchPopupComponent),
7117
+ },
7118
+ },
7119
+ ]
7120
+ }]
7121
+ }], ctorParameters: () => [{ type: i1$4.AXPAppStartUpService }, { type: i0.Injector }] });
7122
+
7123
+ class AXPGlobalSearchViewModel {
7124
+ constructor() {
7125
+ this.settingKeys = {
7126
+ recent: "global-search:recents:items",
7127
+ pinned: "global-search:pinned:items"
7128
+ };
7129
+ this.searchService = inject(AXPSearchService);
7130
+ this.settingsService = inject(AXPSettingsService);
7131
+ this._text = signal(null, ...(ngDevMode ? [{ debugName: "_text" }] : /* istanbul ignore next */ []));
7132
+ this.text = this._text.asReadonly();
7133
+ this._results = signal([], ...(ngDevMode ? [{ debugName: "_results" }] : /* istanbul ignore next */ []));
7134
+ this.results = this._results.asReadonly();
7135
+ this._isBusy = signal(false, ...(ngDevMode ? [{ debugName: "_isBusy" }] : /* istanbul ignore next */ []));
7136
+ this.isBusy = this._isBusy.asReadonly();
7137
+ this.isEmpty = computed(() => this.text() && this.results().length == 0, ...(ngDevMode ? [{ debugName: "isEmpty" }] : /* istanbul ignore next */ []));
7138
+ this.isValid = computed(() => (this.text()?.length ?? 0) > 2, ...(ngDevMode ? [{ debugName: "isValid" }] : /* istanbul ignore next */ []));
7139
+ this.isStart = computed(() => !this.isEmpty() && this.results().length == 0, ...(ngDevMode ? [{ debugName: "isStart" }] : /* istanbul ignore next */ []));
7140
+ this.isWelcome = computed(() => this.isStart() && this.pinnedItems().length == 0 && this.recentItems().length == 0, ...(ngDevMode ? [{ debugName: "isWelcome" }] : /* istanbul ignore next */ []));
7141
+ this._recentItems = signal([], ...(ngDevMode ? [{ debugName: "_recentItems" }] : /* istanbul ignore next */ []));
7142
+ this._pinnedItems = signal([], ...(ngDevMode ? [{ debugName: "_pinnedItems" }] : /* istanbul ignore next */ []));
7143
+ this.pinnedItems = this._pinnedItems.asReadonly();
7144
+ this.recentItems = computed(() => this.getTopRecentItems(), ...(ngDevMode ? [{ debugName: "recentItems" }] : /* istanbul ignore next */ []));
7145
+ this.onItemSelected = new Subject();
7146
+ this.loadSettings();
7147
+ }
7148
+ async search(text) {
7149
+ this._isBusy.set(true);
7150
+ this._text.set(text);
7151
+ if (!this.isValid()) {
7152
+ this._results.set([]);
7153
+ }
7154
+ else {
7155
+ await new Promise((resolve) => setTimeout(resolve, 250));
7156
+ const results = await this.searchService.search(text);
7157
+ this._results.set(results);
7158
+ }
7159
+ this._isBusy.set(false);
7160
+ }
7161
+ async execute(item) {
7162
+ this.onItemSelected.next(item);
7163
+ await this.updateSelectionHistory(item);
7164
+ }
7165
+ async pin(item) {
7166
+ const currentPinned = this._pinnedItems();
7167
+ if (!currentPinned.some(i => i.id === item.id)) {
7168
+ this._pinnedItems.set([item, ...currentPinned].slice(0, 5));
7169
+ await this.saveSettings();
7170
+ }
7171
+ }
7172
+ async unpin(item) {
7173
+ const currentPinned = this._pinnedItems();
7174
+ this._pinnedItems.set(currentPinned.filter(i => i.id !== item.id));
7175
+ await this.saveSettings();
7176
+ }
7177
+ async togglePin(item) {
7178
+ if (this.isPinned(item)) {
7179
+ await this.unpin(item);
7180
+ }
7181
+ else {
7182
+ await this.pin(item);
7183
+ }
7184
+ }
7185
+ isPinned(item) {
7186
+ const currentPinned = this._pinnedItems();
7187
+ return currentPinned.some(i => i.id === item.id);
7188
+ }
7189
+ async updateSelectionHistory(item) {
7190
+ // Update recent selections
7191
+ const currentHistory = this._recentItems();
7192
+ const updatedHistory = [item, ...currentHistory.filter(i => i.id !== item.id)].slice(0, 5);
7193
+ this._recentItems.set(updatedHistory);
7194
+ // Save updated settings
7195
+ await this.saveSettings();
7196
+ }
7197
+ getTopRecentItems() {
7198
+ const pinnedIds = new Set(this._pinnedItems().map(item => item.id));
7199
+ return this._recentItems().filter(item => !pinnedIds.has(item.id)).slice(0, 5);
7200
+ }
7201
+ async clearRecentItems() {
7202
+ this._recentItems.set([]);
7203
+ await this.settingsService.scope(AXPPlatformScope.User).set(this.settingKeys.recent, []);
7204
+ }
7205
+ async loadSettings() {
7206
+ // Load recent selections
7207
+ const recent = await this.settingsService.get(this.settingKeys.recent);
7208
+ if (recent) {
7209
+ this._recentItems.set(recent.slice(0, 5));
7210
+ }
7211
+ // Load pinned items
7212
+ const pinned = await this.settingsService.get(this.settingKeys.pinned);
7213
+ if (pinned) {
7214
+ this._pinnedItems.set(pinned.slice(0, 5));
7215
+ }
7216
+ }
7217
+ async saveSettings() {
7218
+ // Save recent selections
7219
+ await this.settingsService.scope(AXPPlatformScope.User).set(this.settingKeys.recent, this._recentItems().slice(0, 5));
7220
+ // Save pinned items
7221
+ await this.settingsService.scope(AXPPlatformScope.User).set(this.settingKeys.pinned, this._pinnedItems().slice(0, 5));
7222
+ }
7223
+ }
7224
+
7225
7225
  //#region ---- Imports ----
7226
7226
  //#endregion
7227
7227
  //#region ---- Injection Token ----