@acorex-platform/framework-client 0.0.57 → 0.0.59

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 (54) hide show
  1. package/fesm2022/acorex-platform-framework-client-common.mjs +31 -33
  2. package/fesm2022/acorex-platform-framework-client-common.mjs.map +1 -1
  3. package/fesm2022/acorex-platform-framework-client-core.mjs +157 -2
  4. package/fesm2022/acorex-platform-framework-client-core.mjs.map +1 -1
  5. package/fesm2022/acorex-platform-framework-client-layout-builder.mjs +55 -19
  6. package/fesm2022/acorex-platform-framework-client-layout-builder.mjs.map +1 -1
  7. package/fesm2022/{acorex-platform-framework-client-layout-components-binding-expression-editor-popup.component-BqPaHKPM.mjs → acorex-platform-framework-client-layout-components-binding-expression-editor-popup.component-CyZpdazq.mjs} +6 -6
  8. package/fesm2022/{acorex-platform-framework-client-layout-components-binding-expression-editor-popup.component-BqPaHKPM.mjs.map → acorex-platform-framework-client-layout-components-binding-expression-editor-popup.component-CyZpdazq.mjs.map} +1 -1
  9. package/fesm2022/acorex-platform-framework-client-layout-components.mjs +639 -212
  10. package/fesm2022/acorex-platform-framework-client-layout-components.mjs.map +1 -1
  11. package/fesm2022/acorex-platform-framework-client-layout-designer.mjs +34 -18
  12. package/fesm2022/acorex-platform-framework-client-layout-designer.mjs.map +1 -1
  13. package/fesm2022/{acorex-platform-framework-client-layout-entity-acorex-platform-framework-client-layout-entity-Cmzwhmjw.mjs → acorex-platform-framework-client-layout-entity-acorex-platform-framework-client-layout-entity-BBuYugjl.mjs} +312 -160
  14. package/fesm2022/acorex-platform-framework-client-layout-entity-acorex-platform-framework-client-layout-entity-BBuYugjl.mjs.map +1 -0
  15. package/fesm2022/{acorex-platform-framework-client-layout-entity-attachments-page.component-K9HAtqL6.mjs → acorex-platform-framework-client-layout-entity-attachments-page.component-DZDf_nVq.mjs} +2 -2
  16. package/fesm2022/{acorex-platform-framework-client-layout-entity-attachments-page.component-K9HAtqL6.mjs.map → acorex-platform-framework-client-layout-entity-attachments-page.component-DZDf_nVq.mjs.map} +1 -1
  17. package/fesm2022/{acorex-platform-framework-client-layout-entity-bulk-entity.command-BZECKfez.mjs → acorex-platform-framework-client-layout-entity-bulk-entity.command-CFFv3jDs.mjs} +2 -2
  18. package/fesm2022/{acorex-platform-framework-client-layout-entity-bulk-entity.command-BZECKfez.mjs.map → acorex-platform-framework-client-layout-entity-bulk-entity.command-CFFv3jDs.mjs.map} +1 -1
  19. package/fesm2022/{acorex-platform-framework-client-layout-entity-gallery-page.component-BuDpC58x.mjs → acorex-platform-framework-client-layout-entity-gallery-page.component-BDNPJg_6.mjs} +2 -2
  20. package/fesm2022/{acorex-platform-framework-client-layout-entity-gallery-page.component-BuDpC58x.mjs.map → acorex-platform-framework-client-layout-entity-gallery-page.component-BDNPJg_6.mjs.map} +1 -1
  21. package/fesm2022/acorex-platform-framework-client-layout-entity.mjs +1 -1
  22. package/fesm2022/acorex-platform-framework-client-layout-widget-core.mjs +59 -3
  23. package/fesm2022/acorex-platform-framework-client-layout-widget-core.mjs.map +1 -1
  24. package/fesm2022/{acorex-platform-framework-client-layout-widgets-acorex-platform-framework-client-layout-widgets-D5pndfBW.mjs → acorex-platform-framework-client-layout-widgets-acorex-platform-framework-client-layout-widgets-Rv0K9r_e.mjs} +226 -137
  25. package/fesm2022/acorex-platform-framework-client-layout-widgets-acorex-platform-framework-client-layout-widgets-Rv0K9r_e.mjs.map +1 -0
  26. package/fesm2022/{acorex-platform-framework-client-layout-widgets-code-editor-widget-column.component-BL621E1r.mjs → acorex-platform-framework-client-layout-widgets-code-editor-widget-column.component-DqJIiEyu.mjs} +9 -3
  27. package/fesm2022/acorex-platform-framework-client-layout-widgets-code-editor-widget-column.component-DqJIiEyu.mjs.map +1 -0
  28. package/fesm2022/{acorex-platform-framework-client-layout-widgets-repeater-widget-column.component-BFgrSnfT.mjs → acorex-platform-framework-client-layout-widgets-repeater-widget-column.component-Dzqn3rGa.mjs} +2 -2
  29. package/fesm2022/{acorex-platform-framework-client-layout-widgets-repeater-widget-column.component-BFgrSnfT.mjs.map → acorex-platform-framework-client-layout-widgets-repeater-widget-column.component-Dzqn3rGa.mjs.map} +1 -1
  30. package/fesm2022/{acorex-platform-framework-client-layout-widgets-text-block-widget-designer.component-Ctjz1PjP.mjs → acorex-platform-framework-client-layout-widgets-text-block-widget-designer.component-C97rrrmu.mjs} +2 -2
  31. package/fesm2022/{acorex-platform-framework-client-layout-widgets-text-block-widget-designer.component-Ctjz1PjP.mjs.map → acorex-platform-framework-client-layout-widgets-text-block-widget-designer.component-C97rrrmu.mjs.map} +1 -1
  32. package/fesm2022/{acorex-platform-framework-client-layout-widgets-triggers-widget-editor.component-B_OM0T7i.mjs → acorex-platform-framework-client-layout-widgets-triggers-widget-editor.component-C-r7txgg.mjs} +21 -17
  33. package/fesm2022/acorex-platform-framework-client-layout-widgets-triggers-widget-editor.component-C-r7txgg.mjs.map +1 -0
  34. package/fesm2022/acorex-platform-framework-client-layout-widgets.mjs +1 -1
  35. package/fesm2022/acorex-platform-framework-client-themes-default.mjs +1 -1
  36. package/fesm2022/acorex-platform-framework-client-themes-default.mjs.map +1 -1
  37. package/fesm2022/acorex-platform-framework-client-themes-shared.mjs +48 -9
  38. package/fesm2022/acorex-platform-framework-client-themes-shared.mjs.map +1 -1
  39. package/fesm2022/acorex-platform-framework-client-workflow.mjs +47 -1
  40. package/fesm2022/acorex-platform-framework-client-workflow.mjs.map +1 -1
  41. package/package.json +2 -2
  42. package/types/acorex-platform-framework-client-common.d.ts +2 -3
  43. package/types/acorex-platform-framework-client-core.d.ts +67 -2
  44. package/types/acorex-platform-framework-client-layout-builder.d.ts +4 -3
  45. package/types/acorex-platform-framework-client-layout-components.d.ts +119 -7
  46. package/types/acorex-platform-framework-client-layout-designer.d.ts +2 -0
  47. package/types/acorex-platform-framework-client-layout-entity.d.ts +33 -9
  48. package/types/acorex-platform-framework-client-layout-widget-core.d.ts +14 -1
  49. package/types/acorex-platform-framework-client-layout-widgets.d.ts +6 -0
  50. package/types/acorex-platform-framework-client-workflow.d.ts +29 -2
  51. package/fesm2022/acorex-platform-framework-client-layout-entity-acorex-platform-framework-client-layout-entity-Cmzwhmjw.mjs.map +0 -1
  52. package/fesm2022/acorex-platform-framework-client-layout-widgets-acorex-platform-framework-client-layout-widgets-D5pndfBW.mjs.map +0 -1
  53. package/fesm2022/acorex-platform-framework-client-layout-widgets-code-editor-widget-column.component-BL621E1r.mjs.map +0 -1
  54. package/fesm2022/acorex-platform-framework-client-layout-widgets-triggers-widget-editor.component-B_OM0T7i.mjs.map +0 -1
@@ -3,8 +3,8 @@ import { CommonModule, DOCUMENT } from '@angular/common';
3
3
  import * as i0 from '@angular/core';
4
4
  import { Injectable, inject, input, model, signal, computed, effect, output, viewChild, ChangeDetectionStrategy, Component, NgModule, EventEmitter, ElementRef, DestroyRef, untracked, Output } from '@angular/core';
5
5
  import * as i4 from '@acorex-platform/framework-client/core';
6
- import { AXPHookService, resolveDialogActionShortcuts, DEFAULT_CANCEL_DIALOG_ACTION_SHORTCUTS, DEFAULT_SUBMIT_DIALOG_ACTION_SHORTCUTS, AXP_SETTINGS_DEFINITION_DIALOG_OPENER, findOverlayContainerAncestor, getNestedVisibleOverlayPanes, getTopVisibleOverlayContainer, AXPExpressionEvaluatorService, AXPKeyboardShortcutRegistry, normalizeDialogActionShortcutChord, isDialogShortcutAllowedInEditableField, resolveConfiguredFooterActionShortcuts, AXPComponentSlotModule, AXPContextStore } from '@acorex-platform/framework-client/core';
7
- export { DEFAULT_CANCEL_DIALOG_ACTION_SHORTCUTS, DEFAULT_SUBMIT_DIALOG_ACTION_SHORTCUTS } from '@acorex-platform/framework-client/core';
6
+ import { AXPHookService, AXPDialogOpener, resolveDialogActionShortcuts, DEFAULT_CANCEL_DIALOG_ACTION_SHORTCUTS, DEFAULT_SUBMIT_DIALOG_ACTION_SHORTCUTS, AXP_SETTINGS_DEFINITION_DIALOG_OPENER, findOverlayContainerAncestor, getNestedVisibleOverlayPanes, getTopVisibleOverlayContainer, AXPExpressionEvaluatorService, AXPKeyboardShortcutRegistry, normalizeDialogActionShortcutChord, isDialogShortcutAllowedInEditableField, resolveConfiguredFooterActionShortcuts, AXPComponentSlotModule, AXPContextStore } from '@acorex-platform/framework-client/core';
7
+ export { AXPDialogOpener, AXP_ROOT_LOADING, DEFAULT_CANCEL_DIALOG_ACTION_SHORTCUTS, DEFAULT_SUBMIT_DIALOG_ACTION_SHORTCUTS } from '@acorex-platform/framework-client/core';
8
8
  import { provideCommandSetups, AXPCommandService } from '@acorex-platform/framework-client/runtime';
9
9
  import { toAxpGridItemWidgetOptions, AXP_PREVIEW_WIDGET_FIELD_COMMAND_KEY, createRandomUuid, AXPKeyboardShortcutPriority } from '@acorex-platform/framework-shared/core';
10
10
  import { AXPopupService } from '@acorex/components/popup';
@@ -479,12 +479,13 @@ class AXPLayoutBuilderService {
479
479
  constructor() {
480
480
  this.popupService = inject(AXPopupService);
481
481
  this.hookService = inject(AXPHookService, { optional: true }) ?? undefined;
482
+ this.dialogOpener = inject(AXPDialogOpener);
482
483
  }
483
484
  /**
484
485
  * Create a new layout builder
485
486
  */
486
487
  create() {
487
- return new LayoutBuilder(this.popupService, this.hookService);
488
+ return new LayoutBuilder(this.popupService, this.hookService, this.dialogOpener);
488
489
  }
489
490
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPLayoutBuilderService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
490
491
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPLayoutBuilderService, providedIn: 'root' }); }
@@ -502,9 +503,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
502
503
  * Open/Closed: Extensible through container delegates
503
504
  */
504
505
  class LayoutBuilder {
505
- constructor(popupService, hookService) {
506
+ constructor(popupService, hookService, dialogOpener) {
506
507
  this.popupService = popupService;
507
508
  this.hookService = hookService;
509
+ this.dialogOpener = dialogOpener;
508
510
  this.root = {
509
511
  children: [],
510
512
  mode: 'edit',
@@ -586,7 +588,7 @@ class LayoutBuilder {
586
588
  if (!this.popupService) {
587
589
  throw new Error('LayoutBuilder requires AXPopupService to create dialogs. Please inject it in the service constructor.');
588
590
  }
589
- const container = new DialogContainerBuilder(this.popupService, this.hookService);
591
+ const container = new DialogContainerBuilder(this.popupService, this.hookService, this.dialogOpener);
590
592
  if (delegate) {
591
593
  delegate(container);
592
594
  }
@@ -1550,7 +1552,7 @@ class ListWidgetBuilder extends WidgetContainerMixin {
1550
1552
  * Uses composition instead of inheritance for cleaner separation
1551
1553
  */
1552
1554
  class DialogContainerBuilder {
1553
- constructor(popupService, hookService) {
1555
+ constructor(popupService, hookService, dialogOpener) {
1554
1556
  this.dialogState = {
1555
1557
  type: 'flex-layout', // This will be overridden when content layout exists
1556
1558
  children: [],
@@ -1574,6 +1576,7 @@ class DialogContainerBuilder {
1574
1576
  this.popupService = inject(AXPopupService);
1575
1577
  }
1576
1578
  this.hookService = hookService ?? inject(AXPHookService, { optional: true }) ?? undefined;
1579
+ this.dialogOpener = dialogOpener ?? inject(AXPDialogOpener);
1577
1580
  }
1578
1581
  setOptions(options) {
1579
1582
  this.dialogState.dialogOptions = { ...this.dialogState.dialogOptions, ...options };
@@ -1670,10 +1673,40 @@ class DialogContainerBuilder {
1670
1673
  return result;
1671
1674
  }
1672
1675
  // Dialog-specific methods
1673
- async show() {
1676
+ async show(options) {
1677
+ const outcome = await this.dialogOpener.run({
1678
+ load: () => Promise.resolve().then(function () { return dialogRenderer_component; }).then((module) => module.AXPDialogRendererComponent),
1679
+ data: this.dialogOpenKeyData(),
1680
+ present: (notifyShown, component) => this.presentDialog(component, notifyShown, options),
1681
+ });
1682
+ if (outcome.duplicate) {
1683
+ return createDismissedDialogRef();
1684
+ }
1685
+ return outcome.result;
1686
+ }
1687
+ dialogOpenKeyData() {
1688
+ const dialogOptions = this.dialogState.dialogOptions;
1689
+ return {
1690
+ title: dialogOptions?.title ?? '',
1691
+ size: String(dialogOptions?.size ?? 'md'),
1692
+ widget: this.contentWidgetName(this.contentLayout),
1693
+ };
1694
+ }
1695
+ contentWidgetName(node) {
1696
+ if (!node) {
1697
+ return '';
1698
+ }
1699
+ if (node.name) {
1700
+ return node.name;
1701
+ }
1702
+ const child = node.children?.[0];
1703
+ if (child) {
1704
+ return this.contentWidgetName(child);
1705
+ }
1706
+ return node.type ?? '';
1707
+ }
1708
+ async presentDialog(component, notifyShown, options) {
1674
1709
  const dialogNode = this.build();
1675
- // Import the dialog renderer component dynamically
1676
- const { AXPDialogRendererComponent } = await Promise.resolve().then(function () { return dialogRenderer_component; });
1677
1710
  this.dialogState.dialogOptions ??= {};
1678
1711
  if (this.dialogState.dialogOptions.context == null || typeof this.dialogState.dialogOptions.context !== 'object') {
1679
1712
  this.dialogState.dialogOptions.context = {};
@@ -1692,11 +1725,8 @@ class DialogContainerBuilder {
1692
1725
  await hookService.runAsync(AXP_LAYOUT_BUILDER_DIALOG_BEFORE_OPEN_HOOK_KEY, beforePayload);
1693
1726
  }
1694
1727
  const confirmCloseWhenDirty = normalizeDialogCloseConfirmation(this.dialogState.dialogOptions?.confirmCloseWhenDirty);
1695
- // Create dialog configuration
1696
1728
  const dialogConfig = {
1697
1729
  title: this.dialogState.dialogOptions?.title || '',
1698
- //TODO: why we need message?
1699
- //message: this.dialogState.dialogOptions?.message,
1700
1730
  context: initialContext,
1701
1731
  definition: dialogNode,
1702
1732
  metadata: this.dialogState.dialogOptions.metadata,
@@ -1704,14 +1734,12 @@ class DialogContainerBuilder {
1704
1734
  onAction: this.dialogState.dialogOptions?.onAction,
1705
1735
  confirmCloseWhenDirty,
1706
1736
  };
1707
- //
1708
1737
  if (hookService) {
1709
1738
  await hookService.runAsync(AXP_LAYOUT_BUILDER_DIALOG_CONFIG_HOOK_KEY, dialogConfig);
1710
1739
  }
1711
- // The Promise resolves when user clicks an action button
1712
- return new Promise(async (resolve) => {
1740
+ return new Promise((resolve) => {
1713
1741
  let flag = false;
1714
- await this.popupService.open(AXPDialogRendererComponent, {
1742
+ const opened = this.popupService.open(component, {
1715
1743
  title: dialogConfig.title,
1716
1744
  size: this.dialogState.dialogOptions?.size || 'md',
1717
1745
  closeButton: this.dialogState.dialogOptions?.closeButton || false,
@@ -1725,9 +1753,17 @@ class DialogContainerBuilder {
1725
1753
  },
1726
1754
  },
1727
1755
  });
1728
- if (!flag) {
1729
- resolve(createDismissedDialogRef());
1730
- }
1756
+ notifyShown();
1757
+ options?.onShown?.();
1758
+ void Promise.resolve(opened).then(() => {
1759
+ if (!flag) {
1760
+ resolve(createDismissedDialogRef());
1761
+ }
1762
+ }, () => {
1763
+ if (!flag) {
1764
+ resolve(createDismissedDialogRef());
1765
+ }
1766
+ });
1731
1767
  });
1732
1768
  }
1733
1769
  }