@acorex/platform 19.3.8 → 19.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (171) hide show
  1. package/auth/lib/permission/permission-definition.builder.d.ts +2 -2
  2. package/auth/lib/permission/permission.types.d.ts +1 -1
  3. package/common/index.d.ts +0 -1
  4. package/common/lib/layout/index.d.ts +0 -2
  5. package/common/lib/layout/menu/badge-helper.d.ts +2 -2
  6. package/core/index.d.ts +8 -1
  7. package/core/lib/context/context-store.service.d.ts +37 -0
  8. package/core/lib/directives/content-checker.directive.d.ts +10 -0
  9. package/core/lib/directives/index.d.ts +1 -0
  10. package/core/lib/expression-evaluator/expression-evaluator-scope-provider.service.d.ts +23 -0
  11. package/core/lib/expression-evaluator/expression-evaluator.service.d.ts +2 -0
  12. package/core/lib/expression-evaluator/index.d.ts +1 -0
  13. package/core/lib/types/interactive.types.d.ts +1 -0
  14. package/domain/README.md +3 -0
  15. package/domain/index.d.ts +2 -0
  16. package/domain/lib/domain.module.d.ts +8 -0
  17. package/domain/lib/provide-entity-crud-commands.d.ts +4 -0
  18. package/fesm2022/acorex-platform-auth.mjs.map +1 -1
  19. package/fesm2022/acorex-platform-common.mjs +2 -202
  20. package/fesm2022/acorex-platform-common.mjs.map +1 -1
  21. package/fesm2022/acorex-platform-core.mjs +312 -127
  22. package/fesm2022/acorex-platform-core.mjs.map +1 -1
  23. package/fesm2022/acorex-platform-domain.mjs +71 -0
  24. package/fesm2022/acorex-platform-domain.mjs.map +1 -0
  25. package/fesm2022/acorex-platform-layout-builder.mjs +5 -1
  26. package/fesm2022/acorex-platform-layout-builder.mjs.map +1 -1
  27. package/fesm2022/acorex-platform-layout-components.mjs +667 -3
  28. package/fesm2022/acorex-platform-layout-components.mjs.map +1 -1
  29. package/fesm2022/acorex-platform-layout-entity.mjs +53 -4
  30. package/fesm2022/acorex-platform-layout-entity.mjs.map +1 -1
  31. package/fesm2022/acorex-platform-layout-views.mjs +442 -3
  32. package/fesm2022/acorex-platform-layout-views.mjs.map +1 -1
  33. package/fesm2022/acorex-platform-runtime.mjs +448 -0
  34. package/fesm2022/acorex-platform-runtime.mjs.map +1 -0
  35. package/fesm2022/{acorex-platform-themes-default-details-view.component-w1GLOu_c.mjs → acorex-platform-themes-default-details-view.component-DXwO-Euo.mjs} +7 -8
  36. package/fesm2022/acorex-platform-themes-default-details-view.component-DXwO-Euo.mjs.map +1 -0
  37. package/fesm2022/{acorex-platform-themes-default-entity-master-list-view.component-C8rL7vLD.mjs → acorex-platform-themes-default-entity-master-list-view.component-C0aVy6kW.mjs} +15 -13
  38. package/fesm2022/acorex-platform-themes-default-entity-master-list-view.component-C0aVy6kW.mjs.map +1 -0
  39. package/fesm2022/{acorex-platform-themes-default-entity-master-single-view.component-qu3j-fxn.mjs → acorex-platform-themes-default-entity-master-single-view.component-WYpSnpSx.mjs} +34 -13
  40. package/fesm2022/acorex-platform-themes-default-entity-master-single-view.component-WYpSnpSx.mjs.map +1 -0
  41. package/fesm2022/acorex-platform-themes-default.mjs +48 -285
  42. package/fesm2022/acorex-platform-themes-default.mjs.map +1 -1
  43. package/fesm2022/acorex-platform-themes-shared.mjs +8 -415
  44. package/fesm2022/acorex-platform-themes-shared.mjs.map +1 -1
  45. package/fesm2022/{acorex-platform-widgets-button-widget-designer.component-i8FcuktZ.mjs → acorex-platform-widgets-button-widget-designer.component-BWZ0L--k.mjs} +4 -4
  46. package/fesm2022/acorex-platform-widgets-button-widget-designer.component-BWZ0L--k.mjs.map +1 -0
  47. package/fesm2022/{acorex-platform-widgets-checkbox-widget-column.component-BQcHI7vG.mjs → acorex-platform-widgets-checkbox-widget-column.component-Bq8dCQJb.mjs} +3 -3
  48. package/fesm2022/acorex-platform-widgets-checkbox-widget-column.component-Bq8dCQJb.mjs.map +1 -0
  49. package/fesm2022/acorex-platform-widgets.mjs +529 -118
  50. package/fesm2022/acorex-platform-widgets.mjs.map +1 -1
  51. package/fesm2022/acorex-platform-workflow.mjs +22 -3
  52. package/fesm2022/acorex-platform-workflow.mjs.map +1 -1
  53. package/layout/builder/lib/builder/widget-base.component.d.ts +1 -0
  54. package/layout/builder/lib/builder/widget-map.d.ts +1 -0
  55. package/layout/components/index.d.ts +3 -0
  56. package/{common/lib/layout/task-badge → layout/components/lib/badge}/index.d.ts +1 -0
  57. package/{themes/shared/lib/components/layout-elements → layout/components/lib/blocks}/index.d.ts +1 -0
  58. package/layout/components/lib/blocks/layout-blocks.component.d.ts +8 -0
  59. package/layout/components/lib/blocks/layout-container.component.d.ts +13 -0
  60. package/{common/lib/layout → layout/components/lib}/component-slot/component-slot-loader.service.d.ts +5 -4
  61. package/{common/lib/layout → layout/components/lib}/component-slot/component-slot.directive.d.ts +5 -5
  62. package/layout/components/lib/component-slot/component-slot.types.d.ts +22 -0
  63. package/layout/entity/lib/entity-master-list.viewmodel.d.ts +4 -2
  64. package/layout/entity/lib/widgets/lookup-widget/lookup-widget-column.component.d.ts +1 -1
  65. package/layout/entity/lib/workflows/modify-entity.workflow.d.ts +6 -0
  66. package/layout/views/index.d.ts +2 -1
  67. package/layout/views/lib/layouts/index.d.ts +2 -0
  68. package/layout/views/lib/layouts/page/index.d.ts +3 -0
  69. package/{themes/default/lib/layouts/base/base-page.component.d.ts → layout/views/lib/layouts/page/page-layout-base.component.d.ts} +6 -4
  70. package/{themes/default/lib/layouts/base/base-page.types.d.ts → layout/views/lib/layouts/page/page-layout.base.d.ts} +1 -1
  71. package/{themes/default/lib/layouts/base/page-layout → layout/views/lib/layouts/page}/page-layout.component.d.ts +4 -2
  72. package/layout/views/lib/layouts/popup/index.d.ts +3 -0
  73. package/layout/views/lib/layouts/popup/popup-layout-base.component.d.ts +98 -0
  74. package/layout/views/lib/layouts/popup/popup-layout.base.d.ts +14 -0
  75. package/layout/views/lib/layouts/popup/popup-layout.component.d.ts +76 -0
  76. package/layout/views/lib/{details-view → views/details-view}/details-view.adapter.d.ts +1 -1
  77. package/layout/views/lib/views/index.d.ts +1 -0
  78. package/package.json +15 -7
  79. package/runtime/README.md +3 -0
  80. package/runtime/index.d.ts +17 -0
  81. package/runtime/lib/commands/command.extension.token.d.ts +7 -0
  82. package/runtime/lib/commands/command.interface.d.ts +3 -0
  83. package/runtime/lib/commands/command.middleware.d.ts +2 -0
  84. package/runtime/lib/commands/command.registry.d.ts +16 -0
  85. package/runtime/lib/commands/provide-command-middleware.d.ts +9 -0
  86. package/runtime/lib/commands/provide-command-setups.d.ts +9 -0
  87. package/runtime/lib/policy/policy-middleware-provider.d.ts +9 -0
  88. package/runtime/lib/policy/policy.directive.d.ts +9 -0
  89. package/runtime/lib/policy/policy.extension.token.d.ts +7 -0
  90. package/runtime/lib/policy/policy.interface.d.ts +17 -0
  91. package/runtime/lib/policy/policy.middleware.d.ts +3 -0
  92. package/runtime/lib/policy/policy.registry.d.ts +19 -0
  93. package/runtime/lib/policy/policy.service.d.ts +8 -0
  94. package/runtime/lib/policy/policy.types.d.ts +7 -0
  95. package/runtime/lib/queries/provide-query-middleware.d.ts +9 -0
  96. package/runtime/lib/queries/provide-query-setups.d.ts +9 -0
  97. package/runtime/lib/queries/query.extension.token.d.ts +7 -0
  98. package/runtime/lib/queries/query.interface.d.ts +3 -0
  99. package/runtime/lib/queries/query.middleware.d.ts +2 -0
  100. package/runtime/lib/queries/query.registry.d.ts +15 -0
  101. package/runtime/lib/runtime.module.d.ts +12 -0
  102. package/themes/default/index.d.ts +0 -1
  103. package/themes/default/lib/layouts/details-view/details-view.component.d.ts +2 -2
  104. package/themes/default/lib/layouts/entity-layouts/entity-master-list-view/entity-master-list-view.component.d.ts +2 -2
  105. package/themes/default/lib/layouts/entity-layouts/entity-master-single-view/entity-master-single-view.component.d.ts +29 -2
  106. package/themes/default/lib/layouts/root-layout/components/horizontal-menu/horizontal-menu.component.d.ts +2 -1
  107. package/themes/default/lib/layouts/root-layout/components/side-menu/side-menu.component.d.ts +2 -1
  108. package/themes/default/lib/layouts/root-layout/root-layout.component.d.ts +1 -0
  109. package/themes/shared/index.d.ts +1 -3
  110. package/themes/shared/lib/shared.module.d.ts +1 -1
  111. package/themes/shared/lib/{components/slots → slots}/theme-slot.component.d.ts +9 -9
  112. package/widgets/lib/widgets/advance/avatar/avatar-widget-column.component.d.ts +1 -1
  113. package/widgets/lib/widgets/advance/cron-job/cron-job-widget-column.component.d.ts +1 -1
  114. package/widgets/lib/widgets/advance/file-uploader/file-uploader-widget-column.component.d.ts +6 -0
  115. package/widgets/lib/widgets/advance/file-uploader/file-uploader-widget-edit.component.d.ts +33 -0
  116. package/widgets/lib/widgets/advance/file-uploader/file-uploader-widget-filter.component.d.ts +6 -0
  117. package/widgets/lib/widgets/advance/file-uploader/file-uploader-widget-print.component.d.ts +6 -0
  118. package/widgets/lib/widgets/advance/file-uploader/file-uploader-widget-view.component.d.ts +31 -0
  119. package/widgets/lib/widgets/advance/file-uploader/file-uploader-widget.config.d.ts +7 -0
  120. package/widgets/lib/widgets/advance/file-uploader/file-uploader-widget.service.d.ts +12 -0
  121. package/widgets/lib/widgets/advance/file-uploader/index.d.ts +7 -0
  122. package/widgets/lib/widgets/editors/checkbox/checkbox-widget-column.component.d.ts +1 -1
  123. package/widgets/lib/widgets/editors/color/color-box-widget-column.component.d.ts +1 -1
  124. package/widgets/lib/widgets/editors/contact/contact-widget-column.component.d.ts +1 -1
  125. package/widgets/lib/widgets/editors/date-time/date-time-box-widget-column.component.d.ts +1 -1
  126. package/widgets/lib/widgets/editors/email/email-box-widget-column.component.d.ts +1 -1
  127. package/widgets/lib/widgets/editors/large-text/large-text-widget-column.component.d.ts +1 -1
  128. package/widgets/lib/widgets/editors/link/link-widget-column.component.d.ts +1 -1
  129. package/widgets/lib/widgets/editors/meta-data/meta-data-widget-column.component.d.ts +1 -1
  130. package/widgets/lib/widgets/editors/number/number-box-widget-column.component.d.ts +1 -1
  131. package/widgets/lib/widgets/editors/number-unit/number-unit-box-widget-column.component.d.ts +1 -1
  132. package/widgets/lib/widgets/editors/password/password-box-widget-column.component.d.ts +1 -1
  133. package/widgets/lib/widgets/editors/phone/phone-box-widget-column.component.d.ts +1 -1
  134. package/widgets/lib/widgets/editors/rich-text/rich-text-widget-column.component.d.ts +1 -1
  135. package/widgets/lib/widgets/editors/select/select-box-widget-column.component.d.ts +1 -1
  136. package/widgets/lib/widgets/editors/selection-list/selection-list-widget-column.component.d.ts +1 -1
  137. package/widgets/lib/widgets/editors/tabular-data/tabular-data-column.component.d.ts +1 -1
  138. package/widgets/lib/widgets/editors/text/text-box-widget-column.component.d.ts +1 -1
  139. package/widgets/lib/widgets/editors/time-duration/time-duration-widget-column.component.d.ts +1 -1
  140. package/widgets/lib/widgets/editors/toggle/toggle-widget-column.component.d.ts +1 -1
  141. package/widgets/lib/widgets/index.d.ts +1 -0
  142. package/workflow/lib/slots/workflow-action-bar/workflow-action-bar.component.d.ts +36 -0
  143. package/workflow/lib/workflow-evaluator-scope.provider.d.ts +4 -0
  144. package/common/lib/layout/beardcrumb.type.d.ts +0 -6
  145. package/common/lib/layout/component-slot/component-slot.types.d.ts +0 -15
  146. package/core/lib/index.d.ts +0 -7
  147. package/fesm2022/acorex-platform-themes-default-details-view.component-w1GLOu_c.mjs.map +0 -1
  148. package/fesm2022/acorex-platform-themes-default-entity-master-list-view.component-C8rL7vLD.mjs.map +0 -1
  149. package/fesm2022/acorex-platform-themes-default-entity-master-single-view.component-qu3j-fxn.mjs.map +0 -1
  150. package/fesm2022/acorex-platform-widgets-button-widget-designer.component-i8FcuktZ.mjs.map +0 -1
  151. package/fesm2022/acorex-platform-widgets-checkbox-widget-column.component-BQcHI7vG.mjs.map +0 -1
  152. package/themes/default/lib/layouts/base/index.d.ts +0 -3
  153. package/themes/default/lib/layouts/base/page-layout/index.d.ts +0 -1
  154. package/themes/shared/lib/components/layout-elements/layout-blocks.component.d.ts +0 -8
  155. /package/{themes/shared/lib/components → layout/components/lib}/badge/badge.directive.d.ts +0 -0
  156. /package/{common/lib/layout/task-badge → layout/components/lib/badge}/task-badge.service.d.ts +0 -0
  157. /package/{common/lib/layout/task-badge → layout/components/lib/badge}/task-badge.type.d.ts +0 -0
  158. /package/{themes/shared/lib/components/layout-elements → layout/components/lib/blocks}/layout-actions.component.d.ts +0 -0
  159. /package/{themes/shared/lib/components/layout-elements → layout/components/lib/blocks}/layout-footer.component.d.ts +0 -0
  160. /package/{themes/shared/lib/components/layout-elements → layout/components/lib/blocks}/layout-header.component.d.ts +0 -0
  161. /package/{themes/shared/lib/components/layout-elements → layout/components/lib/blocks}/layout-list.component.d.ts +0 -0
  162. /package/{themes/shared/lib/components/layout-elements → layout/components/lib/blocks}/layout-section.component.d.ts +0 -0
  163. /package/{themes/shared/lib/components/layout-elements → layout/components/lib/blocks}/layout-side.component.d.ts +0 -0
  164. /package/{themes/shared/lib/components/layout-elements → layout/components/lib/blocks}/layout-tool-bar.component.d.ts +0 -0
  165. /package/{common/lib/layout → layout/components/lib}/component-slot/component-slot-registery.service.d.ts +0 -0
  166. /package/{common/lib/layout → layout/components/lib}/component-slot/component-slot.module.d.ts +0 -0
  167. /package/{common/lib/layout → layout/components/lib}/component-slot/index.d.ts +0 -0
  168. /package/layout/views/lib/{details-view → views/details-view}/details-view-route.resolver.d.ts +0 -0
  169. /package/layout/views/lib/{details-view → views/details-view}/details-view.viewmodel.d.ts +0 -0
  170. /package/layout/views/lib/{details-view → views/details-view}/index.d.ts +0 -0
  171. /package/layout/views/lib/{details-view → views/details-view}/sample.d.ts +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"acorex-platform-layout-views.mjs","sources":["../../../../libs/platform/layout/views/src/lib/details-view/sample.ts","../../../../libs/platform/layout/views/src/lib/details-view/details-view-route.resolver.ts","../../../../libs/platform/layout/views/src/lib/details-view/details-view.viewmodel.ts","../../../../libs/platform/layout/views/src/acorex-platform-layout-views.ts"],"sourcesContent":["import { AXPWidgetNode } from '@acorex/platform/layout/builder';\n\nconst blockContent1 = [\n {\n type: 'fieldset-layout',\n options: {\n title: 'Full Name',\n icon: 'fa-light fa-pen',\n variant: 'card',\n collapsible: true,\n },\n children: [\n {\n type: 'block-layout',\n options: {\n flex: {\n direction: 'column',\n align: 'center',\n justify: 'space-between',\n gap: '1rem',\n },\n },\n children: [\n {\n type: 'form-field',\n options: {\n label: 'First Name',\n },\n children: [\n {\n type: 'text-editor',\n path: 'firstName',\n },\n ],\n },\n {\n type: 'form-field',\n options: {\n label: 'Last Name',\n },\n children: [\n {\n type: 'text-editor',\n path: 'lastName',\n options: {\n disabled: `{{ !context.eval('firstName') }}`,\n },\n },\n ],\n },\n {\n type: 'form-field',\n options: {\n label: 'Full Name',\n },\n children: [\n {\n type: 'text-editor',\n //defaultValue: `{{ context.eval('firstName') + context.eval('lastName') }}`,\n path: 'fullName',\n options: {\n placeholder: `{{ context.eval('firstName') + ' ' + context.eval('lastName') }}`,\n },\n },\n ],\n },\n {\n type: 'form-field',\n options: {\n label: 'Enable',\n },\n children: [\n {\n type: 'toggle-editor',\n path: 'enable',\n options: {\n disabled: `{{ context.eval('firstName')=='aaa' }}`,\n },\n },\n ],\n },\n ],\n },\n ],\n },\n];\n\nconst blockContent2 = [\n {\n type: 'block-layout',\n options: {\n flex: {\n direction: 'column',\n align: 'center',\n justify: 'space-between',\n gap: '1rem',\n },\n },\n children: [\n {\n type: 'form-field',\n options: {\n label: 'Email',\n },\n children: [\n {\n type: 'text-editor',\n path: 'email',\n },\n ],\n },\n {\n type: 'form-field',\n options: {\n label: 'Phone',\n },\n children: [\n {\n type: 'text-editor',\n path: 'phone',\n },\n ],\n },\n ],\n },\n];\n\nexport const AXPLayoutDetailsViewSample: AXPWidgetNode[] = [\n {\n type: 'block-layout',\n options: {\n flex: {\n direction: 'column',\n align: 'center',\n justify: 'space-between',\n gap: '1rem',\n },\n },\n children: [\n {\n type: 'tabset-layout',\n options: {\n title: 'Tab 1',\n description: 'Tab 1 Description',\n icon: 'icon',\n location: 'start',\n },\n children: [\n {\n type: 'tabset-item',\n options: {\n title: 'Tab 1',\n },\n children: blockContent1,\n },\n {\n type: 'tabset-item',\n options: {\n title: 'Tab 2',\n },\n children: blockContent2,\n },\n ],\n },\n ],\n },\n];\n","import { ActivatedRouteSnapshot, ResolveFn, RouterStateSnapshot } from '@angular/router';\nimport { AXPLayoutDetailsViewAdapter } from './details-view.adapter';\nimport { AXPLayoutDetailsViewSample } from './sample';\n\nexport const AXPLayoutDetailsViewRouteResolver: ResolveFn<Promise<AXPLayoutDetailsViewAdapter>> = (\n route: ActivatedRouteSnapshot,\n state: RouterStateSnapshot\n): Promise<AXPLayoutDetailsViewAdapter> => {\n const moduleName = route.parent?.paramMap.get('module') as string;\n const entityName = route.parent?.paramMap.get('entity') as string;\n const id = route.paramMap.get('id') as string;\n //\n const adapter: AXPLayoutDetailsViewAdapter = {\n title: `${moduleName} ${entityName} / {{ context.eval(\"firstName\") }}`,\n description: 'Description ({{ context.eval(\"firstName\") }})',\n icon: 'icon',\n content: AXPLayoutDetailsViewSample,\n load: () =>\n Promise.resolve({\n success: true,\n result: { items: [{ firstName: 'John', lastName: 'Doe', email: 'john.doe@example.com', phone: '1234567890' }] },\n }),\n save: () => Promise.resolve({ success: true }),\n execute: () => Promise.resolve({ success: true }),\n };\n //\n return new Promise((resolve) => {\n setTimeout(() => {\n resolve(adapter);\n }, 200);\n });\n};\n","import { AXPExpressionEvaluatorScope, AXPExpressionEvaluatorService, cleanDeep, getSmart } from '@acorex/platform/core';\nimport { AXPPageStatus } from '@acorex/platform/layout/builder';\nimport { computed, inject } from '@angular/core';\nimport { patchState, signalStore, withComputed, withMethods, withState } from '@ngrx/signals';\nimport { cloneDeep, isEqual } from 'lodash-es';\nimport { AXPLayoutDetailsViewAdapter } from './details-view.adapter';\n\nexport const AXPLayoutDetailsViewViewModel = signalStore(\n withState(() => {\n const state = {\n adapter: null as AXPLayoutDetailsViewAdapter | null,\n previousContext: {} as Record<string, any>,\n context: {} as Record<string, any>,\n scope: null as AXPExpressionEvaluatorScope | null,\n status: AXPPageStatus.Processing,\n };\n return state;\n }),\n withComputed((store) => ({\n icon: computed(() => store.adapter()?.icon ?? null),\n content: computed(() => store.adapter()?.content ?? []),\n //\n isBusy: computed(() => store.status() == AXPPageStatus.Processing),\n isSaving: computed(() => store.status() == AXPPageStatus.Submitting),\n isDirty: computed(() => !isEqual(store.context(), store.previousContext())),\n isLoaded: computed(() => store.adapter() != null),\n })),\n withMethods((store, evaluatorService = inject(AXPExpressionEvaluatorService)) => ({\n // Load Adapter\n async load(adapter: AXPLayoutDetailsViewAdapter) {\n patchState(store, { adapter });\n //\n const scope: AXPExpressionEvaluatorScope = {\n context: {\n eval: (path: string) => {\n return getSmart(store.context(), path);\n },\n },\n };\n patchState(store, { scope });\n //\n patchState(store, {\n status: AXPPageStatus.Processing,\n });\n const loadResult = await adapter.load({});\n const context = loadResult.result?.items?.[0] ?? {};\n patchState(store, {\n previousContext: cloneDeep(context),\n context: cloneDeep(context),\n status: AXPPageStatus.Rendered,\n });\n },\n // Set Context\n updateContext(context: any) {\n patchState(store, {\n context: cleanDeep(context),\n });\n },\n async title() {\n const raw = store.adapter()?.title;\n const processed = await evaluatorService.evaluate(raw, store.scope() as AXPExpressionEvaluatorScope);\n return processed;\n },\n async description() {\n const raw = store.adapter()?.description;\n const processed = await evaluatorService.evaluate(raw, store.scope() as AXPExpressionEvaluatorScope);\n return processed;\n },\n // Process Actions\n async primaryActions() {\n const raw = store.adapter()?.actions?.filter((a) => a.priority == 'primary') ?? [];\n const processed = await evaluatorService.evaluate(raw, store.scope() as AXPExpressionEvaluatorScope);\n return processed;\n },\n // Secondary Actions\n async secondaryActions() {\n const raw = store.adapter()?.actions?.filter((a) => a.priority == 'secondary') ?? [];\n const processed = await evaluatorService.evaluate(raw, store.scope() as AXPExpressionEvaluatorScope);\n return processed;\n },\n //\n async discard() {\n patchState(store, {\n context: cloneDeep(store.previousContext()),\n });\n },\n async save() {\n const result = await store.adapter()?.save?.(store.context());\n if (result?.success) {\n patchState(store, {\n previousContext: cloneDeep(store.context()),\n });\n }\n },\n }))\n);\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"acorex-platform-layout-views.mjs","sources":["../../../../libs/platform/layout/views/src/lib/layouts/page/page-layout.base.ts","../../../../libs/platform/layout/views/src/lib/layouts/page/page-layout.component.ts","../../../../libs/platform/layout/views/src/lib/layouts/page/page-layout.component.html","../../../../libs/platform/layout/views/src/lib/layouts/page/page-layout-base.component.ts","../../../../libs/platform/layout/views/src/lib/layouts/popup/popup-layout.base.ts","../../../../libs/platform/layout/views/src/lib/layouts/popup/popup-layout.component.ts","../../../../libs/platform/layout/views/src/lib/layouts/popup/popup-layout.component.html","../../../../libs/platform/layout/views/src/lib/layouts/popup/popup-layout-base.component.ts","../../../../libs/platform/layout/views/src/lib/views/details-view/sample.ts","../../../../libs/platform/layout/views/src/lib/views/details-view/details-view-route.resolver.ts","../../../../libs/platform/layout/views/src/lib/views/details-view/details-view.viewmodel.ts","../../../../libs/platform/layout/views/src/acorex-platform-layout-views.ts"],"sourcesContent":["import { AXPActionMenuItem, AXPBackButton, AXPBreadcrumbItem, AXPExecuteCommand } from '@acorex/platform/core';\nimport { Signal } from '@angular/core';\n\nexport abstract class AXPPageLayoutBase {\n abstract primaryMenuItems: Signal<AXPActionMenuItem[]>;\n\n abstract secondaryMenuItems: Signal<AXPActionMenuItem[]>;\n\n abstract titleActions: Signal<AXPActionMenuItem[]>;\n\n abstract hasTitleActions: Signal<boolean>;\n\n abstract hasPrimaryActions: Signal<boolean>;\n\n abstract hasSecondaryActions: Signal<boolean>;\n\n abstract hasActions: Signal<boolean>;\n\n abstract breadcrumbs: Signal<AXPBreadcrumbItem[]>;\n\n abstract title: Signal<string>;\n\n abstract hasTitle: Signal<boolean>;\n\n abstract hasDescription: Signal<boolean>;\n\n abstract description: Signal<string>;\n\n abstract hasBreadcrumbs: Signal<boolean>;\n\n abstract hasBackButton: Signal<boolean>;\n\n abstract backButton: Signal<AXPBackButton>;\n\n abstract onBackButtonClick: () => void | Promise<void>;\n\n abstract startSideToggle: () => void | Promise<void>;\n\n abstract execute: (command: AXPExecuteCommand) => void | Promise<void>;\n}\n","import { CommonModule } from '@angular/common';\nimport {\n afterNextRender,\n ChangeDetectionStrategy,\n Component,\n effect,\n inject,\n viewChild,\n ViewEncapsulation,\n} from '@angular/core';\n//\nimport { AXBreadcrumbsModule } from '@acorex/components/breadcrumbs';\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXClickEvent, AXCommonModule } from '@acorex/cdk/common';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXDropdownModule } from '@acorex/components/dropdown';\nimport { AXDropdownButtonModule } from '@acorex/components/dropdown-button';\nimport { AXPComponentSlotModule } from '@acorex/platform/layout/components';\nimport { AXPStickyDirective } from '@acorex/platform/common';\n//\nimport { AXDrawerContainerDirective, AXDrawerDirectiveModule, AXDrawerItemDirective } from '@acorex/cdk/drawer';\nimport { AXDrawerModule } from '@acorex/components/drawer';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXPActionMenuItem, AXPExecuteCommand } from '@acorex/platform/core';\nimport { AXPLayoutThemeService } from '@acorex/platform/themes/shared';\nimport {\n AXPThemeLayoutActionsComponent,\n AXPThemeLayoutBlockComponent,\n AXPThemeLayoutContainerComponent,\n AXPThemeLayoutHeaderComponent,\n} from '@acorex/platform/layout/components';\nimport { AXPWorkflowService } from '@acorex/platform/workflow';\nimport { AXPPageLayoutBase } from './page-layout.base';\nimport { AXPCommandRegistry } from '@acorex/platform/runtime';\n@Component({\n standalone: true,\n imports: [\n CommonModule,\n //\n AXCommonModule,\n AXDecoratorModule,\n AXBreadcrumbsModule,\n AXDropdownButtonModule,\n AXDropdownModule,\n AXButtonModule,\n AXTranslationModule,\n AXDrawerModule,\n AXDrawerDirectiveModule,\n //\n AXPComponentSlotModule,\n AXPThemeLayoutBlockComponent,\n AXPThemeLayoutActionsComponent,\n AXPThemeLayoutHeaderComponent,\n AXPStickyDirective,\n AXPThemeLayoutContainerComponent\n ],\n templateUrl: './page-layout.component.html',\n styleUrls: ['./page-layout.component.scss'],\n selector: 'axp-page-layout',\n encapsulation: ViewEncapsulation.None,\n\n changeDetection: ChangeDetectionStrategy.OnPush,\n hostDirectives: [AXDrawerContainerDirective],\n providers: [],\n})\nexport class AXPPageLayoutComponent {\n protected page = inject<AXPPageLayoutBase>(AXPPageLayoutBase, { optional: true });\n\n protected layoutService = inject(AXPLayoutThemeService);\n\n protected startSideDrawer = viewChild<AXDrawerItemDirective>('startSideDrawer');\n\n protected workflow = inject(AXPWorkflowService);\n protected commandRegistry = inject(AXPCommandRegistry);\n\n #initialize = afterNextRender(async () => {\n this.checkScrollableContent();\n });\n\n #effect = effect(() => {\n this.page?.title();\n this.page?.description();\n this.checkScrollableContent();\n });\n\n private checkScrollableContent() {\n const content = document.querySelector('axp-page-content');\n if (content && content.scrollHeight >= content.clientHeight) {\n content.classList.add('--scrollable');\n }\n }\n\n protected handleActionClick(item: AXPActionMenuItem) {\n if (item.command && (item.items?.length ?? 0) == 0) {\n this.execute(item.command);\n }\n }\n\n toggleStartSide() {\n this.startSideDrawer()?.toggle();\n }\n\n protected handleSecondaryActionClick(item: AXPActionMenuItem) {\n if (item.command) {\n this.execute(item.command);\n }\n }\n\n protected handleBackdropClick(e: AXClickEvent) {\n e.nativeEvent.preventDefault();\n e.nativeEvent.stopPropagation();\n e.component.hide();\n return false;\n }\n\n protected async execute(command: AXPExecuteCommand) {\n const reserved = ['navigate'];\n if (reserved.includes(command.name)) {\n await this.workflow.execute(command.name, { options: command.options });\n return;\n }\n if (this.commandRegistry.exists(command.name)) {\n await this.commandRegistry.execute(command.name, command.options ?? {});\n } else {\n await this.page?.execute(command);\n }\n }\n\n protected handleOnBackdropClick(event: MouseEvent) {\n event.stopPropagation();\n this.startSideDrawer()?.hide();\n }\n}\n","<div\n [mode]=\"layoutService.isSmall() ? 'overlay' : 'push'\"\n transition=\"0.25\"\n axDrawerItem\n [backDrop]=\"true\"\n (onBackdropClick)=\"handleBackdropClick($event)\"\n #startSideDrawer=\"axDrawerItem\"\n [backdropClass]=\"'ax-bg-darkest/75'\"\n [initialState]=\"layoutService.isSmall() ? 'hide' : 'show'\"\n drawerLocation=\"left\"\n class=\"ax-z-50 ax-h-full\"\n>\n <ng-content select=\"axp-layout-start-side\"></ng-content>\n</div>\n<axp-layout-container id=\"axp-page-layout\" #container>\n <axp-layout-header\n *translate=\"let t\"\n #sticky=\"axpSticky\"\n [axpSticky]=\"'axp-is-sticky'\"\n [stickyOffset]=\"50\"\n [stickyParent]=\"container.hostElement\"\n >\n @if (page?.hasBackButton() && layoutService.isSmall()) {\n <ax-button\n [look]=\"'blank'\"\n class=\"ax-sm ax-w-fit ax-ms-1\"\n color=\"secondary\"\n (click)=\"page?.onBackButtonClick()\"\n [text]=\"page?.backButton()?.title\"\n >\n <ax-prefix>\n <ax-icon icon=\"fa-solid fa-chevron-left rtl:ax-rotate-180\"></ax-icon>\n </ax-prefix>\n </ax-button>\n }\n <!-------- Begin Title Bar -------->\n <axp-layout-title-bar>\n <!-------- Begin Title -------->\n <div class=\"ax-flex ax-flex-col ax-transition\">\n <!-- Breadcrumbs -->\n @if (page?.hasBreadcrumbs() && !layoutService.isSmall()) {\n <ax-breadcrumbs class=\"ax-mb-1\">\n @for (item of page?.breadcrumbs(); track $index) {\n <ax-breadcrumbs-item [active]=\"$last\" (click)=\"execute(item.command!)\">\n @if (item.icon) {\n <i [class]=\"item.icon\"></i>\n }\n {{ t(item.title) | async }}\n </ax-breadcrumbs-item>\n }\n <ng-template #divider>\n <i class=\"fa-regular fa-slash-forward\"></i>\n </ng-template>\n </ax-breadcrumbs>\n }\n <div class=\"__title-container\">\n <!-- Title -->\n @if (page?.hasTitle()) {\n <axp-layout-title> {{ t(page?.title()) | async }}</axp-layout-title>\n }\n <!-- Title Actions -->\n @if (page?.hasTitleActions()) {\n <ax-button [look]=\"'blank'\" class=\"ax-sm -ax-mx-2\">\n <ax-prefix>\n <i class=\"fa-solid fa-caret-down fa-fw\"></i>\n </ax-prefix>\n <ax-dropdown-panel #panel>\n <ax-button-item-list>\n @for (sub of page?.titleActions(); track $index) {\n <ng-container>\n <ax-button-item\n [text]=\"(t(sub.title) | async)!\"\n [color]=\"sub.color\"\n [disabled]=\"sub.disabled\"\n (onClick)=\"handleActionClick(sub)\"\n >\n <ax-prefix>\n <ax-icon icon=\"fa-light {{ sub.icon }}\"></ax-icon>\n </ax-prefix>\n </ax-button-item>\n @if (sub.break) {\n <ax-divider></ax-divider>\n }\n </ng-container>\n }\n </ax-button-item-list>\n </ax-dropdown-panel>\n </ax-button>\n }\n </div>\n <!-- Description -->\n @if (page?.hasDescription()) {\n <axp-layout-description> {{ t(page?.description()) | async }}</axp-layout-description>\n }\n </div>\n <!-------- Finish Title -------->\n <!--------------------------------------------------------------->\n <!-------- Page Actions -------->\n\n <axp-layout-actions class=\"ax-shrink-0\">\n <axp-component-slot name=\"page-header-actions\"></axp-component-slot>\n <!--Primary Actions -->\n @if (page?.hasPrimaryActions()) {\n <!-- items -->\n @for (item of page?.primaryMenuItems(); track $index) {\n <ng-container *ngIf=\"item.visible != false\">\n <ax-button\n [class.ax-sm]=\"layoutService.isSmall()\"\n [iconOnly]=\"layoutService.isSmall()\"\n [disabled]=\"item.disabled\"\n [text]=\"(t(item.title) | async)!\"\n [look]=\"'solid'\"\n [color]=\"item.color\"\n (onClick)=\"handleActionClick(item)\"\n >\n <ax-prefix>\n <i class=\"{{ item.icon }}\"></i>\n </ax-prefix>\n @if (item?.items) {\n <ax-dropdown-panel #panel>\n <ax-button-item-list>\n @for (sub of item?.items; track $index) {\n <ng-container *ngIf=\"sub.visible != false\">\n <ax-button-item\n [text]=\"(t(sub.title) | async)!\"\n [color]=\"sub.color\"\n [disabled]=\"sub.disabled\"\n (onClick)=\"handleActionClick(sub)\"\n >\n <ax-prefix>\n <ax-icon icon=\"fa-light {{ sub.icon }}\"></ax-icon>\n </ax-prefix>\n </ax-button-item>\n @if (sub.break) {\n <ax-divider></ax-divider>\n }\n </ng-container>\n }\n </ax-button-item-list>\n </ax-dropdown-panel>\n }\n </ax-button>\n </ng-container>\n }\n }\n <!-- Secondary Actions -->\n @if (page?.hasSecondaryActions()) {\n <ax-button\n [class.ax-sm]=\"layoutService.isSmall()\"\n [iconOnly]=\"layoutService.isSmall()\"\n [text]=\"t('actions') | async\"\n [look]=\"layoutService.isSmall() ? 'blank' : 'solid'\"\n [color]=\"'default'\"\n >\n <ax-prefix>\n <i class=\"fa-solid fa-ellipsis-vertical\"></i>\n </ax-prefix>\n <ax-dropdown-panel #panel>\n <ax-button-item-list>\n @for (item of page?.secondaryMenuItems(); track $index) {\n <ng-container *ngIf=\"item.visible != false\">\n <ax-button-item\n [text]=\"(t(item.title) | async)!\"\n [color]=\"item.color\"\n [disabled]=\"item.disabled\"\n (onClick)=\"handleSecondaryActionClick(item)\"\n >\n <ax-prefix>\n <ax-icon icon=\"fa-light {{ item.icon }}\"></ax-icon>\n </ax-prefix>\n </ax-button-item>\n @if (item.break) {\n <ax-divider></ax-divider>\n }\n </ng-container>\n }\n </ax-button-item-list>\n </ax-dropdown-panel>\n </ax-button>\n }\n </axp-layout-actions>\n <!-- Finish Page Actions -->\n </axp-layout-title-bar>\n <!----- Finish Title Bar ----->\n <!--------------------------------------------------------------->\n <!-- Begin Navbar -->\n @if (!sticky.isSticky) {}\n <ng-content select=\"axp-page-toolbar\"></ng-content>\n <!-- Finish Navbar -->\n </axp-layout-header>\n <ng-content select=\"axp-page-content\"></ng-content>\n\n <axp-page-footer-container\n [ngStyle]=\"{ display: tt.isEmpty() && prefixSlot.isEmpty() && suffixSlot.isEmpty() ? 'none' : 'block' }\"\n >\n <axp-layout-container #tt>\n <ng-content select=\"axp-page-footer\"></ng-content>\n </axp-layout-container>\n <axp-page-footer>\n <axp-layout-prefix>\n <axp-component-slot name=\"page-footer-prefix\" #prefixSlot=\"slot\"></axp-component-slot>\n </axp-layout-prefix>\n <axp-layout-suffix>\n <axp-component-slot name=\"page-footer-suffix\" #suffixSlot=\"slot\"></axp-component-slot>\n </axp-layout-suffix>\n </axp-page-footer>\n </axp-page-footer-container>\n</axp-layout-container>\n","import { AXToastService } from '@acorex/components/toast';\nimport { AXFormatService } from '@acorex/core/format';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { AXPSessionService } from '@acorex/platform/auth';\nimport { AXPHomePageService } from '@acorex/platform/common';\nimport { AXPActionMenuItem, AXPBackButton, AXPBreadcrumbItem, AXPExecuteCommand } from '@acorex/platform/core';\nimport { AXPLayoutThemeService } from '@acorex/platform/themes/shared';\nimport { Component, computed, effect, inject, signal, viewChild } from '@angular/core';\nimport { isEmpty, isNil } from 'lodash-es';\nimport { AXPPageLayoutComponent } from './page-layout.component';\nimport { AXPPolicyEngineService } from '@acorex/platform/runtime';\n@Component({\n standalone: true,\n template: '',\n})\nexport abstract class AXPPageLayoutBaseComponent {\n //#region ---------------- Services ----------------\n\n protected readonly layoutService = inject(AXPLayoutThemeService);\n protected readonly sessionService = inject(AXPSessionService);\n protected readonly translateService = inject(AXTranslationService);\n protected readonly formatService = inject(AXFormatService);\n protected readonly toastService = inject(AXToastService);\n protected readonly homePageService = inject(AXPHomePageService);\n protected readonly policyService = inject(AXPPolicyEngineService);\n\n //#endregion\n\n //#region ---------------- Signal to force recomputation ----------------\n\n private _updateTrigger = signal(0);\n\n protected updateTrigger = this._updateTrigger.asReadonly();\n\n protected recompute() {\n this._updateTrigger.set(this._updateTrigger() + 1);\n }\n\n //#endregion\n\n //#region ---------------- Lifecycle hooks ----------------\n\n async ngOnInit() {\n this.translateService.langChanges$.subscribe(() => {\n this.recompute();\n });\n }\n\n //#endregion\n\n //#region ---------------- Title ----------------\n\n protected title = signal<string>('');\n\n #titleEffect = effect(async () => {\n this.updateTrigger();\n this.title.set(await this.getPageTitle());\n });\n\n protected getPageTitle(): string | Promise<string> {\n return '';\n }\n\n private hasTitle = computed(() => this.title() !== '');\n\n //#endregion\n\n //#region ---------------- Description ----------------\n\n private description = signal<string | null>(null);\n\n private hasDescription = computed(() => !isNil(this.description()) && !isEmpty(this.description()));\n\n #descriptionEffect = effect(async () => {\n this.updateTrigger();\n this.description.set(await this.getPageDescription());\n });\n\n protected getPageDescription(): string | null | Promise<string | null> {\n return null;\n }\n\n //#endregion\n\n //#region ---------------- Breadcrumbs ----------------\n\n private defaultBreadCrumbs: AXPBreadcrumbItem[] = [\n {\n title: 't(\"home\")',\n icon: 'fa-solid fa-home ax-text-xs ax-me-1',\n command: {\n name: 'navigate',\n options: {\n path: this.homePageService.getCurrent().path,\n },\n },\n },\n ];\n\n private breadcrumbs = signal<AXPBreadcrumbItem[]>(this.defaultBreadCrumbs);\n\n #breadcrumbsEffect = effect(async () => {\n this.updateTrigger();\n const breadCrumbs = await this.getPageBreadcrumbs();\n this.breadcrumbs.set([...this.defaultBreadCrumbs, ...breadCrumbs]);\n });\n\n private hasBreadcrumbs = computed(() => this.breadcrumbs().length > 1);\n\n protected getPageBreadcrumbs(): AXPBreadcrumbItem[] | Promise<AXPBreadcrumbItem[]> {\n return [];\n }\n\n //#endregion\n\n //#region ---------------- Layout ----------------\n\n\n protected layout = viewChild(AXPPageLayoutComponent);\n\n //TODO: Remove this after migration to the new layout\n protected toggleEndSide() {\n //this.layout()?.toggleStartSide()\n }\n\n //TODO: Remove this after migration to the new layout\n protected toggleStartSide() {\n this.layout()?.toggleStartSide()\n }\n\n //#endregion\n\n //#region ---------------- Actions ----------------\n\n public primaryMenuItems = signal<AXPActionMenuItem[]>([]);\n\n public hasPrimaryActions = computed(() => this.primaryMenuItems().filter(item => item.visible != false).length > 0);\n\n #primaryMenuItemsEffect = effect(async () => {\n this.updateTrigger();\n const items = await this.getPrimaryMenuItems();\n // await Promise.all(items\n // .filter(item => item.policy)\n // .map(async (item) => {\n // await this.optionsService.apply({\n // id: item.name ?? '',\n // sender: item,\n // policies: item.policy ? [item.policy] : undefined\n // });\n // }));\n // await this.optionsService.apply({\n // id: 'page-primary-actions',\n // sender: items,\n // });\n this.primaryMenuItems.set(items);\n });\n\n protected getPrimaryMenuItems(): AXPActionMenuItem[] | Promise<AXPActionMenuItem[]> {\n return [];\n }\n\n public secondaryMenuItems = signal<AXPActionMenuItem[]>([]);\n\n public hasSecondaryActions = computed(() => this.secondaryMenuItems().filter(item => item.visible != false).length > 0);\n\n #secondaryMenuItemsEffect = effect(async () => {\n this.updateTrigger();\n const items = await this.getSecondaryMenuItems();\n this.secondaryMenuItems.set(items);\n });\n\n public hasActions = computed(() => this.hasPrimaryActions() || this.hasSecondaryActions());\n\n protected getSecondaryMenuItems(): AXPActionMenuItem[] | Promise<AXPActionMenuItem[]> {\n return [];\n }\n\n public titleActions = signal<AXPActionMenuItem[]>([]);\n\n public hasTitleActions = computed(() => this.titleActions().length > 0);\n\n #titleActionsEffect = effect(async () => {\n this.updateTrigger();\n this.titleActions.set(await this.getTitleActions());\n });\n\n protected getTitleActions(): AXPActionMenuItem[] | Promise<AXPActionMenuItem[]> {\n return [];\n }\n\n public backButton = signal<AXPBackButton | null>(null);\n\n public hasBackButton = computed(() => this.backButton() !== null);\n\n protected getBackButton(): (AXPBackButton | null) | Promise<AXPBackButton | null> {\n return null;\n }\n\n #backButtonEffect = effect(async () => {\n this.updateTrigger();\n this.backButton.set(await this.getBackButton());\n });\n\n //#endregion\n\n //#region ---------------- Handle Commands ----------------\n\n public execute(command: AXPExecuteCommand): void | Promise<void> { }\n\n public startSideToggle(): void | Promise<void> {\n this.layout();\n }\n\n public onBackButtonClick(): void | Promise<void> { }\n\n //#endregion\n}\n","import { AXPActionMenuItem, AXPExecuteCommand } from '@acorex/platform/core';\nimport { Signal } from '@angular/core';\n\nexport abstract class AXPPopupLayoutBase {\n abstract primaryMenuItems: Signal<AXPActionMenuItem[]>;\n abstract secondaryMenuItems: Signal<AXPActionMenuItem[]>;\n abstract titleActions: Signal<AXPActionMenuItem[]>;\n abstract hasTitleActions: Signal<boolean>;\n abstract hasPrimaryActions: Signal<boolean>;\n abstract hasSecondaryActions: Signal<boolean>;\n abstract hasActions: Signal<boolean>;\n abstract title: Signal<string>;\n abstract hasTitle: Signal<boolean>;\n abstract execute: (command: AXPExecuteCommand) => void | Promise<void>;\n} ","import { CommonModule } from '@angular/common';\nimport {\n afterNextRender,\n ChangeDetectionStrategy,\n Component,\n effect,\n inject,\n ViewEncapsulation,\n} from '@angular/core';\n//\nimport { AXBreadcrumbsModule } from '@acorex/components/breadcrumbs';\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXClickEvent, AXCommonModule } from \"@acorex/cdk/common\";\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXDropdownModule } from '@acorex/components/dropdown';\nimport { AXDropdownButtonModule } from '@acorex/components/dropdown-button';\n//\nimport { AXDrawerDirectiveModule } from '@acorex/cdk/drawer';\nimport { AXDrawerModule } from '@acorex/components/drawer';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXPActionMenuItem, AXPExecuteCommand } from '@acorex/platform/core';\nimport { AXPLayoutThemeService } from '@acorex/platform/themes/shared';\nimport {\n AXPThemeLayoutBlockComponent,\n AXPThemeLayoutContainerComponent,\n} from '@acorex/platform/layout/components';\nimport { AXPWorkflowService } from '@acorex/platform/workflow';\nimport { AXPPopupLayoutBase } from './popup-layout.base';\n\n@Component({\n standalone: true,\n imports: [\n CommonModule,\n //\n AXCommonModule,\n AXDecoratorModule,\n AXBreadcrumbsModule,\n AXDropdownButtonModule,\n AXDropdownModule,\n AXButtonModule,\n AXTranslationModule,\n AXDrawerModule,\n AXDrawerDirectiveModule,\n //\n AXPThemeLayoutBlockComponent,\n AXPThemeLayoutContainerComponent,\n ],\n templateUrl: './popup-layout.component.html',\n styleUrls: ['./popup-layout.component.scss'],\n selector: 'axp-popup-layout',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AXPPopupLayoutComponent {\n protected popup = inject<AXPPopupLayoutBase>(AXPPopupLayoutBase);\n protected layoutService = inject(AXPLayoutThemeService);\n protected workflow = inject(AXPWorkflowService);\n\n #initialize = afterNextRender(async () => {\n this.checkScrollableContent();\n });\n\n #effect = effect(() => {\n this.popup?.title();\n this.checkScrollableContent();\n });\n\n private checkScrollableContent() {\n const content = document.querySelector('axp-popup-content');\n if (content && content.scrollHeight >= content.clientHeight) {\n content.classList.add('--scrollable');\n }\n }\n\n protected handleActionClick(item: AXPActionMenuItem) {\n if (item.command && (item.items?.length ?? 0) == 0) {\n this.popup?.execute(item.command);\n }\n }\n\n\n protected handleSecondaryActionClick(item: AXPActionMenuItem) {\n if (item.command) {\n this.popup?.execute(item.command);\n }\n }\n\n protected handleBackdropClick(e: AXClickEvent) {\n e.nativeEvent.preventDefault();\n e.nativeEvent.stopPropagation();\n e.component.hide();\n return false;\n }\n} ","<axp-layout-container id=\"axp-popup-layout\" #container>\n <ng-content select=\"axp-page-content\"></ng-content>\n <axp-page-footer *translate=\"let t\">\n <ax-prefix> </ax-prefix>\n @if(popup.hasPrimaryActions()) {\n <ax-suffix>\n @for(item of popup.primaryMenuItems(); track $index) {\n <ax-button\n [text]=\"(t(item.title) | async)!\"\n [look]=\"'solid'\"\n [color]=\"item.color\"\n (onClick)=\"handleActionClick(item)\"\n >\n <ax-prefix>\n <i class=\"{{ item.icon }}\"></i>\n </ax-prefix>\n </ax-button>\n }\n </ax-suffix>\n }\n </axp-page-footer>\n</axp-layout-container>\n","import { AXToastService } from '@acorex/components/toast';\nimport { AXFormatService } from '@acorex/core/format';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { AXPSessionService } from '@acorex/platform/auth';\nimport { AXPHomePageService } from '@acorex/platform/common';\nimport { AXPActionMenuItem, AXPExecuteCommand } from '@acorex/platform/core';\nimport { AXPLayoutThemeService } from '@acorex/platform/themes/shared';\nimport { Component, computed, effect, inject, signal, viewChild } from '@angular/core';\nimport { AXPPopupLayoutComponent } from './popup-layout.component';\nimport { AXBasePageComponent } from '@acorex/components/page';\n\n@Component({\n standalone: true,\n template: '',\n})\nexport abstract class AXPPopupLayoutBaseComponent extends AXBasePageComponent {\n //#region ---------------- Services ----------------\n\n protected readonly layoutService = inject(AXPLayoutThemeService);\n protected readonly sessionService = inject(AXPSessionService);\n protected readonly translateService = inject(AXTranslationService);\n protected readonly formatService = inject(AXFormatService);\n protected readonly toastService = inject(AXToastService);\n protected readonly homePageService = inject(AXPHomePageService);\n\n //#endregion\n\n //#region ---------------- Signal to force recomputation ----------------\n\n private _updateTrigger = signal(0);\n\n protected updateTrigger = this._updateTrigger.asReadonly();\n\n protected recompute() {\n this._updateTrigger.set(this._updateTrigger() + 1);\n }\n\n //#endregion\n\n //#region ---------------- Lifecycle hooks ----------------\n\n override async ngOnInit() {\n super.ngOnInit();\n this.translateService.langChanges$.subscribe(() => {\n this.recompute();\n });\n }\n\n //#endregion\n\n //#region ---------------- Title ----------------\n\n public title = signal<string>('');\n\n #titleEffect = effect(async () => {\n this.updateTrigger();\n this.title.set(await this.getPopupTitle());\n });\n\n protected getPopupTitle(): string | Promise<string> {\n return '';\n }\n\n public hasTitle = computed(() => this.title() !== '');\n\n //#endregion\n\n\n\n //#region ---------------- Layout ----------------\n\n // Placeholder for popup layout reference if needed\n protected layout = viewChild(AXPPopupLayoutComponent);\n\n //#endregion\n\n //#region ---------------- Actions ----------------\n\n public primaryMenuItems = signal<AXPActionMenuItem[]>([]);\n public hasPrimaryActions = computed(() => this.primaryMenuItems().length > 0);\n #primaryMenuItemsEffect = effect(async () => {\n this.updateTrigger();\n this.primaryMenuItems.set(await this.getPrimaryMenuItems());\n });\n protected getPrimaryMenuItems(): AXPActionMenuItem[] | Promise<AXPActionMenuItem[]> {\n return [];\n }\n\n public secondaryMenuItems = signal<AXPActionMenuItem[]>([]);\n public hasSecondaryActions = computed(() => this.secondaryMenuItems().length > 0);\n #secondaryMenuItemsEffect = effect(async () => {\n this.updateTrigger();\n this.secondaryMenuItems.set(await this.getSecondaryMenuItems());\n });\n protected getSecondaryMenuItems(): AXPActionMenuItem[] | Promise<AXPActionMenuItem[]> {\n return [];\n }\n\n public hasActions = computed(() => this.hasPrimaryActions() || this.hasSecondaryActions());\n\n public titleActions = signal<AXPActionMenuItem[]>([]);\n public hasTitleActions = computed(() => this.titleActions().length > 0);\n #titleActionsEffect = effect(async () => {\n this.updateTrigger();\n this.titleActions.set(await this.getTitleActions());\n });\n protected getTitleActions(): AXPActionMenuItem[] | Promise<AXPActionMenuItem[]> {\n return [];\n }\n\n\n //#endregion\n\n //#region ---------------- Handle Commands ----------------\n\n public execute(command: AXPExecuteCommand): void | Promise<void> { }\n\n //#endregion\n} ","import { AXPWidgetNode } from '@acorex/platform/layout/builder';\n\nconst blockContent1 = [\n {\n type: 'fieldset-layout',\n options: {\n title: 'Full Name',\n icon: 'fa-light fa-pen',\n variant: 'card',\n collapsible: true,\n },\n children: [\n {\n type: 'block-layout',\n options: {\n flex: {\n direction: 'column',\n align: 'center',\n justify: 'space-between',\n gap: '1rem',\n },\n },\n children: [\n {\n type: 'form-field',\n options: {\n label: 'First Name',\n },\n children: [\n {\n type: 'text-editor',\n path: 'firstName',\n },\n ],\n },\n {\n type: 'form-field',\n options: {\n label: 'Last Name',\n },\n children: [\n {\n type: 'text-editor',\n path: 'lastName',\n options: {\n disabled: `{{ !context.eval('firstName') }}`,\n },\n },\n ],\n },\n {\n type: 'form-field',\n options: {\n label: 'Full Name',\n },\n children: [\n {\n type: 'text-editor',\n //defaultValue: `{{ context.eval('firstName') + context.eval('lastName') }}`,\n path: 'fullName',\n options: {\n placeholder: `{{ context.eval('firstName') + ' ' + context.eval('lastName') }}`,\n },\n },\n ],\n },\n {\n type: 'form-field',\n options: {\n label: 'Enable',\n },\n children: [\n {\n type: 'toggle-editor',\n path: 'enable',\n options: {\n disabled: `{{ context.eval('firstName')=='aaa' }}`,\n },\n },\n ],\n },\n ],\n },\n ],\n },\n];\n\nconst blockContent2 = [\n {\n type: 'block-layout',\n options: {\n flex: {\n direction: 'column',\n align: 'center',\n justify: 'space-between',\n gap: '1rem',\n },\n },\n children: [\n {\n type: 'form-field',\n options: {\n label: 'Email',\n },\n children: [\n {\n type: 'text-editor',\n path: 'email',\n },\n ],\n },\n {\n type: 'form-field',\n options: {\n label: 'Phone',\n },\n children: [\n {\n type: 'text-editor',\n path: 'phone',\n },\n ],\n },\n ],\n },\n];\n\nexport const AXPLayoutDetailsViewSample: AXPWidgetNode[] = [\n {\n type: 'block-layout',\n options: {\n flex: {\n direction: 'column',\n align: 'center',\n justify: 'space-between',\n gap: '1rem',\n },\n },\n children: [\n {\n type: 'tabset-layout',\n options: {\n title: 'Tab 1',\n description: 'Tab 1 Description',\n icon: 'icon',\n location: 'start',\n },\n children: [\n {\n type: 'tabset-item',\n options: {\n title: 'Tab 1',\n },\n children: blockContent1,\n },\n {\n type: 'tabset-item',\n options: {\n title: 'Tab 2',\n },\n children: blockContent2,\n },\n ],\n },\n ],\n },\n];\n","import { ActivatedRouteSnapshot, ResolveFn, RouterStateSnapshot } from '@angular/router';\nimport { AXPLayoutDetailsViewAdapter } from './details-view.adapter';\nimport { AXPLayoutDetailsViewSample } from './sample';\n\nexport const AXPLayoutDetailsViewRouteResolver: ResolveFn<Promise<AXPLayoutDetailsViewAdapter>> = (\n route: ActivatedRouteSnapshot,\n state: RouterStateSnapshot\n): Promise<AXPLayoutDetailsViewAdapter> => {\n const moduleName = route.parent?.paramMap.get('module') as string;\n const entityName = route.parent?.paramMap.get('entity') as string;\n const id = route.paramMap.get('id') as string;\n //\n const adapter: AXPLayoutDetailsViewAdapter = {\n title: `${moduleName} ${entityName} / {{ context.eval(\"firstName\") }}`,\n description: 'Description ({{ context.eval(\"firstName\") }})',\n icon: 'icon',\n content: AXPLayoutDetailsViewSample,\n load: () =>\n Promise.resolve({\n success: true,\n result: { items: [{ firstName: 'John', lastName: 'Doe', email: 'john.doe@example.com', phone: '1234567890' }] },\n }),\n save: () => Promise.resolve({ success: true }),\n execute: () => Promise.resolve({ success: true }),\n };\n //\n return new Promise((resolve) => {\n setTimeout(() => {\n resolve(adapter);\n }, 200);\n });\n};\n","import { AXPExpressionEvaluatorScope, AXPExpressionEvaluatorService, cleanDeep, getSmart } from '@acorex/platform/core';\nimport { AXPPageStatus } from '@acorex/platform/layout/builder';\nimport { computed, inject } from '@angular/core';\nimport { patchState, signalStore, withComputed, withMethods, withState } from '@ngrx/signals';\nimport { cloneDeep, isEqual } from 'lodash-es';\nimport { AXPLayoutDetailsViewAdapter } from './details-view.adapter';\n\nexport const AXPLayoutDetailsViewViewModel = signalStore(\n withState(() => {\n const state = {\n adapter: null as AXPLayoutDetailsViewAdapter | null,\n previousContext: {} as Record<string, any>,\n context: {} as Record<string, any>,\n scope: null as AXPExpressionEvaluatorScope | null,\n status: AXPPageStatus.Processing,\n };\n return state;\n }),\n withComputed((store) => ({\n icon: computed(() => store.adapter()?.icon ?? null),\n content: computed(() => store.adapter()?.content ?? []),\n //\n isBusy: computed(() => store.status() == AXPPageStatus.Processing),\n isSaving: computed(() => store.status() == AXPPageStatus.Submitting),\n isDirty: computed(() => !isEqual(store.context(), store.previousContext())),\n isLoaded: computed(() => store.adapter() != null),\n })),\n withMethods((store, evaluatorService = inject(AXPExpressionEvaluatorService)) => ({\n // Load Adapter\n async load(adapter: AXPLayoutDetailsViewAdapter) {\n patchState(store, { adapter });\n //\n const scope: AXPExpressionEvaluatorScope = {\n context: {\n eval: (path: string) => {\n return getSmart(store.context(), path);\n },\n },\n };\n patchState(store, { scope });\n //\n patchState(store, {\n status: AXPPageStatus.Processing,\n });\n const loadResult = await adapter.load({});\n const context = loadResult.result?.items?.[0] ?? {};\n patchState(store, {\n previousContext: cloneDeep(context),\n context: cloneDeep(context),\n status: AXPPageStatus.Rendered,\n });\n },\n // Set Context\n updateContext(context: any) {\n patchState(store, {\n context: cleanDeep(context),\n });\n },\n async title() {\n const raw = store.adapter()?.title;\n const processed = await evaluatorService.evaluate(raw, store.scope() as AXPExpressionEvaluatorScope);\n return processed;\n },\n async description() {\n const raw = store.adapter()?.description;\n const processed = await evaluatorService.evaluate(raw, store.scope() as AXPExpressionEvaluatorScope);\n return processed;\n },\n // Process Actions\n async primaryActions() {\n const raw = store.adapter()?.actions?.filter((a) => a.priority == 'primary') ?? [];\n const processed = await evaluatorService.evaluate(raw, store.scope() as AXPExpressionEvaluatorScope);\n return processed;\n },\n // Secondary Actions\n async secondaryActions() {\n const raw = store.adapter()?.actions?.filter((a) => a.priority == 'secondary') ?? [];\n const processed = await evaluatorService.evaluate(raw, store.scope() as AXPExpressionEvaluatorScope);\n return processed;\n },\n //\n async discard() {\n patchState(store, {\n context: cloneDeep(store.previousContext()),\n });\n },\n async save() {\n const result = await store.adapter()?.save?.(store.context());\n if (result?.success) {\n patchState(store, {\n previousContext: cloneDeep(store.context()),\n });\n }\n },\n }))\n);\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2","i3","i4"],"mappings":"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"}
@@ -0,0 +1,448 @@
1
+ import * as i0 from '@angular/core';
2
+ import { InjectionToken, inject, EnvironmentInjector, runInInjectionContext, Injectable, makeEnvironmentProviders, input, ElementRef, effect, Directive, isDevMode, NgModule } from '@angular/core';
3
+ import { castArray } from 'lodash-es';
4
+
5
+ function composeCommandMiddlewares(middlewares) {
6
+ return (handler) => {
7
+ let composed = handler;
8
+ for (let i = middlewares.length - 1; i >= 0; i--) {
9
+ const mw = middlewares[i];
10
+ const next = composed;
11
+ composed = (input) => mw(input, next);
12
+ }
13
+ return composed;
14
+ };
15
+ }
16
+
17
+ // plugins/command.extension.token.ts
18
+ const AXP_COMMAND_EXTENSION = new InjectionToken('AXP_COMMAND_EXTENSION');
19
+
20
+ class AXPCommandRegistry {
21
+ constructor() {
22
+ this.registry = new Map();
23
+ this.middlewares = [];
24
+ this.injector = inject(EnvironmentInjector);
25
+ this.extensions = inject(AXP_COMMAND_EXTENSION, { optional: true });
26
+ }
27
+ register(key, loader) {
28
+ this.registry.set(key, loader);
29
+ }
30
+ use(mw) {
31
+ this.middlewares.push(mw);
32
+ }
33
+ exists(key) {
34
+ return this.registry.has(key);
35
+ }
36
+ getPluginMiddlewares(key) {
37
+ return this.extensions
38
+ ?.filter(ext => ext.target instanceof RegExp ? ext.target.test(key) : ext.target === key)
39
+ .map(ext => ext.middleware) ?? [];
40
+ }
41
+ async execute(key, input) {
42
+ const loader = this.registry.get(key);
43
+ if (!loader) {
44
+ throw new Error(`${key} not implemented`);
45
+ }
46
+ const command = await loader();
47
+ const handler = (i) => command.execute(i);
48
+ const pluginMws = this.getPluginMiddlewares(key);
49
+ const wrappedMws = [...this.middlewares, ...pluginMws].map(mw => {
50
+ return (input, next) => runInInjectionContext(this.injector, () => mw(input, next));
51
+ });
52
+ const composed = composeCommandMiddlewares(wrappedMws)(handler);
53
+ return composed(input);
54
+ }
55
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXPCommandRegistry, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
56
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXPCommandRegistry, providedIn: 'root' }); }
57
+ }
58
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXPCommandRegistry, decorators: [{
59
+ type: Injectable,
60
+ args: [{ providedIn: 'root' }]
61
+ }] });
62
+
63
+ const AXP_COMMAND_SETUP = new InjectionToken('AXP_COMMAND_SETUP');
64
+ function provideCommandSetups(entries) {
65
+ return makeEnvironmentProviders([
66
+ {
67
+ provide: AXP_COMMAND_SETUP,
68
+ useFactory: () => {
69
+ const registry = inject(AXPCommandRegistry);
70
+ const injector = inject(EnvironmentInjector);
71
+ for (const entry of entries) {
72
+ registry.register(entry.key, async () => {
73
+ const CommandType = await entry.command();
74
+ return injector.get(CommandType);
75
+ });
76
+ }
77
+ return true;
78
+ }
79
+ }
80
+ ]);
81
+ }
82
+
83
+ const AXP_COMMAND_MIDDLEWARE_SETUP = new InjectionToken('AXP_COMMAND_MIDDLEWARE_SETUP');
84
+ function provideCommandMiddleware(entries) {
85
+ const global = [];
86
+ const extensions = [];
87
+ for (const entry of entries) {
88
+ if (typeof entry === 'function') {
89
+ global.push(entry);
90
+ }
91
+ else {
92
+ extensions.push(entry);
93
+ }
94
+ }
95
+ return makeEnvironmentProviders([
96
+ // Plugin middleware entries
97
+ ...extensions.map(ext => ({
98
+ provide: AXP_COMMAND_EXTENSION,
99
+ useValue: ext,
100
+ multi: true
101
+ })),
102
+ // Global middleware setup (triggered via this token)
103
+ {
104
+ provide: AXP_COMMAND_MIDDLEWARE_SETUP,
105
+ useFactory: () => {
106
+ const registry = inject(AXPCommandRegistry);
107
+ for (const mw of global) {
108
+ registry.use(mw);
109
+ }
110
+ return true;
111
+ }
112
+ }
113
+ ]);
114
+ }
115
+
116
+ function composeQueryMiddlewares(middlewares) {
117
+ return (handler) => {
118
+ let composed = handler;
119
+ for (let i = middlewares.length - 1; i >= 0; i--) {
120
+ const mw = middlewares[i];
121
+ const next = composed;
122
+ composed = (input) => mw(input, next);
123
+ }
124
+ return composed;
125
+ };
126
+ }
127
+
128
+ // plugins/query.extension.token.ts
129
+ const AXP_QUERY_EXTENSION = new InjectionToken('AXP_QUERY_EXTENSION');
130
+
131
+ // queries/query.registry.ts
132
+ class AXPQueryRegistry {
133
+ constructor() {
134
+ this.registry = new Map();
135
+ this.middlewares = [];
136
+ this.extensions = inject(AXP_QUERY_EXTENSION, { optional: true });
137
+ this.injector = inject(EnvironmentInjector);
138
+ }
139
+ register(key, loader) {
140
+ this.registry.set(key, loader);
141
+ }
142
+ use(mw) {
143
+ this.middlewares.push(mw);
144
+ }
145
+ getPluginMiddlewares(key) {
146
+ return this.extensions
147
+ ?.filter(ext => ext.target instanceof RegExp ? ext.target.test(key) : ext.target === key)
148
+ .map(ext => ext.middleware) ?? [];
149
+ }
150
+ async execute(key, input) {
151
+ const loader = this.registry.get(key);
152
+ if (!loader)
153
+ return null;
154
+ const query = await loader();
155
+ const handler = (i) => query.execute(i);
156
+ const pluginMws = this.getPluginMiddlewares(key);
157
+ const wrappedMws = [...this.middlewares, ...pluginMws].map(mw => {
158
+ return (input, next) => runInInjectionContext(this.injector, () => mw(input, next));
159
+ });
160
+ const composed = composeQueryMiddlewares(wrappedMws)(handler);
161
+ return composed(input);
162
+ }
163
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXPQueryRegistry, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
164
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXPQueryRegistry, providedIn: 'root' }); }
165
+ }
166
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXPQueryRegistry, decorators: [{
167
+ type: Injectable,
168
+ args: [{ providedIn: 'root' }]
169
+ }] });
170
+
171
+ function composePolicyEngineMiddlewares(middlewares) {
172
+ return (handler) => {
173
+ let composed = handler;
174
+ for (let i = middlewares.length - 1; i >= 0; i--) {
175
+ const mw = middlewares[i];
176
+ const next = composed;
177
+ composed = (context) => mw(context, next);
178
+ }
179
+ return composed;
180
+ };
181
+ }
182
+
183
+ class AXPPolicyEngineContext {
184
+ constructor(options) {
185
+ this._visible = true;
186
+ this._enabled = true;
187
+ this._id = options.id;
188
+ this._sender = options.sender;
189
+ }
190
+ get sender() {
191
+ return this._sender;
192
+ }
193
+ get id() {
194
+ return this._id;
195
+ }
196
+ get visible() {
197
+ return this._visible;
198
+ }
199
+ get enabled() {
200
+ return this._enabled;
201
+ }
202
+ setVisible(visible) {
203
+ this._visible = visible;
204
+ return this;
205
+ }
206
+ setEnabled(enabled) {
207
+ this._enabled = enabled;
208
+ return this;
209
+ }
210
+ }
211
+
212
+ // plugins/command.extension.token.ts
213
+ const AXP_POLICY_EXTENSION = new InjectionToken('AXP_POLICY_EXTENSION');
214
+
215
+ class AXPPolicyEngineRegistry {
216
+ constructor() {
217
+ this.registry = new Map();
218
+ this.middlewares = [];
219
+ this.extensions = inject(AXP_POLICY_EXTENSION, { optional: true });
220
+ this.injector = inject(EnvironmentInjector);
221
+ }
222
+ use(mw) {
223
+ this.middlewares.push(mw);
224
+ }
225
+ exists(key) {
226
+ return this.registry.has(key);
227
+ }
228
+ getPolicies() {
229
+ return Array.from(this.registry.keys());
230
+ }
231
+ register(key, loader) {
232
+ this.registry.set(key, loader);
233
+ }
234
+ getPluginMiddlewares(key) {
235
+ return this.extensions
236
+ ?.filter(ext => ext.key === key)
237
+ .map(ext => ext.middleware) ?? [];
238
+ }
239
+ async execute(policy, instance) {
240
+ const loader = this.registry.get(policy);
241
+ if (!loader) {
242
+ throw new Error(`${policy} not implemented`);
243
+ }
244
+ const context = new AXPPolicyEngineContext(instance);
245
+ const applier = await loader();
246
+ const handler = (i) => applier.apply(i);
247
+ const pluginMws = this.getPluginMiddlewares(policy);
248
+ const wrappedMws = [...this.middlewares, ...pluginMws].map(mw => {
249
+ return (input, next) => runInInjectionContext(this.injector, () => mw(input, next));
250
+ });
251
+ const composed = composePolicyEngineMiddlewares(wrappedMws)(handler);
252
+ await composed(context);
253
+ return context;
254
+ }
255
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXPPolicyEngineRegistry, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
256
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXPPolicyEngineRegistry, providedIn: 'root' }); }
257
+ }
258
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXPPolicyEngineRegistry, decorators: [{
259
+ type: Injectable,
260
+ args: [{ providedIn: 'root' }]
261
+ }] });
262
+
263
+ const AXP_POLICY_ENGINE_MIDDLEWARE_SETUP = new InjectionToken('AXP_POLICY_ENGINE_MIDDLEWARE_SETUP');
264
+ function providePolicySetups(entries) {
265
+ return makeEnvironmentProviders([
266
+ {
267
+ provide: AXP_POLICY_ENGINE_MIDDLEWARE_SETUP,
268
+ useFactory: () => {
269
+ const registry = inject(AXPPolicyEngineRegistry);
270
+ const injector = inject(EnvironmentInjector);
271
+ for (const entry of entries) {
272
+ registry.register(entry.key, async () => {
273
+ const PolicyType = await entry.policy();
274
+ return injector.get(PolicyType);
275
+ });
276
+ }
277
+ return true;
278
+ }
279
+ }
280
+ ]);
281
+ }
282
+
283
+ class AXPPolicyEngineService {
284
+ constructor() {
285
+ this.registry = inject(AXPPolicyEngineRegistry);
286
+ }
287
+ async apply(options) {
288
+ const allPolicies = this.registry.getPolicies().filter(p => (options.policies?.length ?? 0) == 0 || options.policies?.includes(p));
289
+ await Promise.all(allPolicies.map(async (policy) => {
290
+ const context = await this.registry.execute(policy, options);
291
+ return context;
292
+ }));
293
+ //
294
+ // if (instance instanceof HTMLElement) {
295
+ // if (context.visible === false) {
296
+ // instance.style.display = 'none';
297
+ // } else {
298
+ // instance.style.display = '';
299
+ // }
300
+ // }
301
+ // //
302
+ // if (instance instanceof MXBaseComponent) {
303
+ // if (context.visible === false) {
304
+ // instance.getHostElement().style.display = 'none';
305
+ // } else {
306
+ // instance.getHostElement().style.display = '';
307
+ // }
308
+ // }
309
+ // // Handle disabled state for interactive components
310
+ // if (instance instanceof MXInteractiveComponent) {
311
+ // if (context.enabled === false) {
312
+ // instance.disabled = true;
313
+ // } else {
314
+ // instance.disabled = false;
315
+ // }
316
+ // }
317
+ // // TODO: Handle object properties
318
+ // if (instance instanceof Object) {
319
+ // if (context.visible === false) {
320
+ // set(instance, 'visible', false);
321
+ // }
322
+ // if (context.enabled === false) {
323
+ // set(instance, 'disabled', true);
324
+ // }
325
+ // }
326
+ }
327
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXPPolicyEngineService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
328
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXPPolicyEngineService, providedIn: 'root' }); }
329
+ }
330
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXPPolicyEngineService, decorators: [{
331
+ type: Injectable,
332
+ args: [{
333
+ providedIn: 'root'
334
+ }]
335
+ }] });
336
+
337
+ class AXPPolicyEngineDirective {
338
+ constructor() {
339
+ this.policy = input.required({ alias: 'axp-apply-policy' });
340
+ this.service = inject(AXPPolicyEngineService);
341
+ this.elementRef = inject((ElementRef));
342
+ this.#eff = effect(async () => {
343
+ const policy = this.policy();
344
+ if (!policy) {
345
+ return;
346
+ }
347
+ await this.service.apply({
348
+ id: this.elementRef.nativeElement.id,
349
+ policies: castArray(policy),
350
+ sender: this.elementRef.nativeElement
351
+ });
352
+ });
353
+ }
354
+ #eff;
355
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXPPolicyEngineDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
356
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.2.10", type: AXPPolicyEngineDirective, isStandalone: true, selector: "[axp-apply-policy]", inputs: { policy: { classPropertyName: "policy", publicName: "axp-apply-policy", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0 }); }
357
+ }
358
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXPPolicyEngineDirective, decorators: [{
359
+ type: Directive,
360
+ args: [{
361
+ selector: '[axp-apply-policy]',
362
+ standalone: true
363
+ }]
364
+ }] });
365
+
366
+ const AXP_QUERY_SETUP = new InjectionToken('AXP_QUERY_SETUP');
367
+ function provideQuerySetups(entries) {
368
+ return makeEnvironmentProviders([
369
+ {
370
+ provide: AXP_QUERY_SETUP,
371
+ useFactory: () => {
372
+ const registry = inject(AXPQueryRegistry);
373
+ for (const [key, loader] of entries) {
374
+ registry.register(key, async () => {
375
+ const result = await loader();
376
+ return result;
377
+ });
378
+ }
379
+ return true;
380
+ }
381
+ }
382
+ ]);
383
+ }
384
+
385
+ const AXP_QUERY_MIDDLEWARE_SETUP = new InjectionToken('AXP_QUERY_MIDDLEWARE_SETUP');
386
+ function provideQueryMiddleware(entries) {
387
+ const global = [];
388
+ const extensions = [];
389
+ for (const entry of entries) {
390
+ if (typeof entry === 'function') {
391
+ global.push(entry);
392
+ }
393
+ else {
394
+ extensions.push(entry);
395
+ }
396
+ }
397
+ return makeEnvironmentProviders([
398
+ // Plugin middleware entries
399
+ ...extensions.map(ext => ({
400
+ provide: AXP_QUERY_EXTENSION,
401
+ useValue: ext,
402
+ multi: true
403
+ })),
404
+ // Global middleware setup (triggered via this token)
405
+ {
406
+ provide: AXP_QUERY_MIDDLEWARE_SETUP,
407
+ useFactory: () => {
408
+ const registry = inject(AXPQueryRegistry);
409
+ for (const mw of global) {
410
+ registry.use(mw);
411
+ }
412
+ return true;
413
+ }
414
+ }
415
+ ]);
416
+ }
417
+
418
+ class AXPRuntimeModule {
419
+ constructor() {
420
+ this._commandSetup = inject(AXP_COMMAND_SETUP, { optional: true });
421
+ this._commandMiddlewareSetup = inject(AXP_COMMAND_MIDDLEWARE_SETUP, { optional: true });
422
+ this._querySetup = inject(AXP_QUERY_SETUP, { optional: true });
423
+ this._queryMiddlewareSetup = inject(AXP_QUERY_MIDDLEWARE_SETUP, { optional: true });
424
+ this._policyEngineSetup = inject(AXP_POLICY_ENGINE_MIDDLEWARE_SETUP, { optional: true });
425
+ if (isDevMode()) {
426
+ console.log('[AXPRuntimeModule] Command Setup:', this._commandSetup);
427
+ console.log('[AXPRuntimeModule] Command Middleware Setup:', this._commandMiddlewareSetup);
428
+ console.log('[AXPRuntimeModule] Query Setup:', this._querySetup);
429
+ console.log('[AXPRuntimeModule] Query Middleware Setup:', this._queryMiddlewareSetup);
430
+ console.log('[AXPRuntimeModule] Policy Engine Setup:', this._policyEngineSetup);
431
+ }
432
+ }
433
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXPRuntimeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
434
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.10", ngImport: i0, type: AXPRuntimeModule }); }
435
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXPRuntimeModule }); }
436
+ }
437
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXPRuntimeModule, decorators: [{
438
+ type: NgModule
439
+ }], ctorParameters: () => [] });
440
+
441
+ // Commands
442
+
443
+ /**
444
+ * Generated bundle index. Do not edit.
445
+ */
446
+
447
+ export { AXPCommandRegistry, AXPPolicyEngineContext, AXPPolicyEngineDirective, AXPPolicyEngineRegistry, AXPPolicyEngineService, AXPQueryRegistry, AXPRuntimeModule, AXP_COMMAND_EXTENSION, AXP_COMMAND_MIDDLEWARE_SETUP, AXP_COMMAND_SETUP, AXP_POLICY_ENGINE_MIDDLEWARE_SETUP, AXP_QUERY_EXTENSION, composeCommandMiddlewares, composePolicyEngineMiddlewares, composeQueryMiddlewares, provideCommandMiddleware, provideCommandSetups, providePolicySetups };
448
+ //# sourceMappingURL=acorex-platform-runtime.mjs.map