@acorex/platform 21.0.0-next.37 → 21.0.0-next.40

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 (64) hide show
  1. package/fesm2022/acorex-platform-common.mjs +25 -3
  2. package/fesm2022/acorex-platform-common.mjs.map +1 -1
  3. package/fesm2022/acorex-platform-core.mjs +18 -172
  4. package/fesm2022/acorex-platform-core.mjs.map +1 -1
  5. package/fesm2022/acorex-platform-domain.mjs +3 -0
  6. package/fesm2022/acorex-platform-domain.mjs.map +1 -1
  7. package/fesm2022/acorex-platform-layout-builder.mjs +29 -13
  8. package/fesm2022/acorex-platform-layout-builder.mjs.map +1 -1
  9. package/fesm2022/acorex-platform-layout-components.mjs +62 -40
  10. package/fesm2022/acorex-platform-layout-components.mjs.map +1 -1
  11. package/fesm2022/acorex-platform-layout-designer.mjs +209 -62
  12. package/fesm2022/acorex-platform-layout-designer.mjs.map +1 -1
  13. package/fesm2022/acorex-platform-layout-entity.mjs +1072 -358
  14. package/fesm2022/acorex-platform-layout-entity.mjs.map +1 -1
  15. package/fesm2022/acorex-platform-layout-views.mjs +171 -86
  16. package/fesm2022/acorex-platform-layout-views.mjs.map +1 -1
  17. package/fesm2022/acorex-platform-layout-widget-core.mjs +170 -63
  18. package/fesm2022/acorex-platform-layout-widget-core.mjs.map +1 -1
  19. package/fesm2022/{acorex-platform-layout-widgets-file-list-popup.component-9uCkMxcc.mjs → acorex-platform-layout-widgets-file-list-popup.component-CDYAGBku.mjs} +5 -60
  20. package/fesm2022/acorex-platform-layout-widgets-file-list-popup.component-CDYAGBku.mjs.map +1 -0
  21. package/fesm2022/acorex-platform-layout-widgets.mjs +720 -415
  22. package/fesm2022/acorex-platform-layout-widgets.mjs.map +1 -1
  23. package/fesm2022/acorex-platform-runtime.mjs +120 -9
  24. package/fesm2022/acorex-platform-runtime.mjs.map +1 -1
  25. package/fesm2022/{acorex-platform-themes-default-entity-master-create-view.component-Cvvr4HnL.mjs → acorex-platform-themes-default-entity-master-create-view.component-Cx1lLUaR.mjs} +3 -3
  26. package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-Cx1lLUaR.mjs.map +1 -0
  27. package/fesm2022/{acorex-platform-themes-default-entity-master-modify-view.component-TYoLN1Jq.mjs → acorex-platform-themes-default-entity-master-modify-view.component-AOrcgjDF.mjs} +3 -3
  28. package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-AOrcgjDF.mjs.map +1 -0
  29. package/fesm2022/{acorex-platform-themes-default-entity-master-single-view.component-C2z5Lq9y.mjs → acorex-platform-themes-default-entity-master-single-view.component-BfCeUU5F.mjs} +3 -3
  30. package/fesm2022/acorex-platform-themes-default-entity-master-single-view.component-BfCeUU5F.mjs.map +1 -0
  31. package/fesm2022/acorex-platform-themes-default.mjs +26 -14
  32. package/fesm2022/acorex-platform-themes-default.mjs.map +1 -1
  33. package/fesm2022/{acorex-platform-themes-shared-settings.provider-DSs1o1M6.mjs → acorex-platform-themes-shared-settings.provider-D13QB3Hr.mjs} +2 -2
  34. package/fesm2022/acorex-platform-themes-shared-settings.provider-D13QB3Hr.mjs.map +1 -0
  35. package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-column.component-D566Kdvy.mjs +94 -0
  36. package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-column.component-D566Kdvy.mjs.map +1 -0
  37. package/fesm2022/{acorex-platform-themes-shared-theme-color-chooser-view.component-BSmvnUVq.mjs → acorex-platform-themes-shared-theme-color-chooser-view.component-D7-rCGl7.mjs} +38 -16
  38. package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-view.component-D7-rCGl7.mjs.map +1 -0
  39. package/fesm2022/acorex-platform-themes-shared.mjs +183 -84
  40. package/fesm2022/acorex-platform-themes-shared.mjs.map +1 -1
  41. package/fesm2022/acorex-platform-workflow.mjs +75 -15
  42. package/fesm2022/acorex-platform-workflow.mjs.map +1 -1
  43. package/package.json +1 -1
  44. package/types/acorex-platform-common.d.ts +11 -6
  45. package/types/acorex-platform-core.d.ts +67 -101
  46. package/types/acorex-platform-domain.d.ts +28 -2
  47. package/types/acorex-platform-layout-builder.d.ts +41 -28
  48. package/types/acorex-platform-layout-components.d.ts +4 -3
  49. package/types/acorex-platform-layout-designer.d.ts +56 -16
  50. package/types/acorex-platform-layout-entity.d.ts +180 -40
  51. package/types/acorex-platform-layout-views.d.ts +31 -29
  52. package/types/acorex-platform-layout-widget-core.d.ts +81 -52
  53. package/types/acorex-platform-layout-widgets.d.ts +42 -16
  54. package/types/acorex-platform-runtime.d.ts +156 -61
  55. package/types/acorex-platform-themes-default.d.ts +1 -0
  56. package/types/acorex-platform-workflow.d.ts +64 -52
  57. package/fesm2022/acorex-platform-layout-widgets-file-list-popup.component-9uCkMxcc.mjs.map +0 -1
  58. package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-Cvvr4HnL.mjs.map +0 -1
  59. package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-TYoLN1Jq.mjs.map +0 -1
  60. package/fesm2022/acorex-platform-themes-default-entity-master-single-view.component-C2z5Lq9y.mjs.map +0 -1
  61. package/fesm2022/acorex-platform-themes-shared-settings.provider-DSs1o1M6.mjs.map +0 -1
  62. package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-column.component-CHfrTtol.mjs +0 -65
  63. package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-column.component-CHfrTtol.mjs.map +0 -1
  64. package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-view.component-BSmvnUVq.mjs.map +0 -1
@@ -1,7 +1,7 @@
1
1
  import * as i5 from '@angular/common';
2
2
  import { CommonModule } from '@angular/common';
3
3
  import * as i0 from '@angular/core';
4
- import { Injectable, inject, input, model, signal, effect, output, viewChild, ChangeDetectionStrategy, Component, NgModule, EventEmitter, Output } from '@angular/core';
4
+ import { Injectable, inject, input, model, signal, computed, effect, output, viewChild, ChangeDetectionStrategy, Component, NgModule, EventEmitter, Output } from '@angular/core';
5
5
  import { provideCommandSetups } from '@acorex/platform/runtime';
6
6
  import { AXPopupService } from '@acorex/components/popup';
7
7
  import * as i1 from '@acorex/platform/layout/widget-core';
@@ -20,7 +20,7 @@ import { AXBasePageComponent } from '@acorex/components/page';
20
20
  import * as i6 from '@acorex/core/translation';
21
21
  import { AXTranslationModule, AXTranslationService } from '@acorex/core/translation';
22
22
  import * as i4 from '@acorex/platform/core';
23
- import { AXPExpressionEvaluatorService, AXPComponentSlotModule, AXPContextStore, AXPMultiLanguageStringResolverService } from '@acorex/platform/core';
23
+ import { AXPExpressionEvaluatorService, AXPComponentSlotModule, AXPContextStore } from '@acorex/platform/core';
24
24
  import { AXP_ENTITY_DEFINITION_CRUD_SERVICE } from '@acorex/platform/domain';
25
25
 
26
26
  class AXPLayoutConversionService {
@@ -161,6 +161,10 @@ class AXPLayoutConversionService {
161
161
  if (!editorWidget.mode) {
162
162
  editorWidget.mode = fieldMode;
163
163
  }
164
+ const hintOpts = field.description != null &&
165
+ (typeof field.description !== 'string' || field.description.trim().length > 0)
166
+ ? { hint: field.description, hintDisplayMode: 'note' }
167
+ : {};
164
168
  return {
165
169
  type: 'form-field',
166
170
  name: field.path,
@@ -168,8 +172,8 @@ class AXPLayoutConversionService {
168
172
  options: {
169
173
  label: field.title,
170
174
  badge: field.badge,
171
- description: field.description,
172
175
  showLabel: true,
176
+ ...hintOpts,
173
177
  },
174
178
  children: [editorWidget], // The editor widget becomes a child of form-field
175
179
  };
@@ -212,7 +216,7 @@ class AXPLayoutConversionService {
212
216
  path: formFieldNode.name || editorWidget.name || `field-${Date.now()}`,
213
217
  title: formFieldNode.options?.['label'],
214
218
  badge: formFieldNode.options?.['badge'],
215
- description: formFieldNode.options?.['description'],
219
+ description: formFieldNode.options?.['hint'],
216
220
  widget: editorWidget,
217
221
  mode: formFieldNode.mode,
218
222
  };
@@ -1998,6 +2002,11 @@ class AXPLayoutRendererComponent {
1998
2002
  //#endregion
1999
2003
  //#region ---- Widget Tree Conversion ----
2000
2004
  this.widgetTree = signal(null, ...(ngDevMode ? [{ debugName: "widgetTree" }] : /* istanbul ignore next */ []));
2005
+ /**
2006
+ * Prefer explicit {@link AXPWidgetNode.mode} on the root node (e.g. dialog flex `mode('view')`)
2007
+ * so nested widgets resolve view vs edit correctly; fall back to the layout `mode` input.
2008
+ */
2009
+ this.effectiveRenderMode = computed(() => this.widgetTree()?.mode ?? this.mode(), ...(ngDevMode ? [{ debugName: "effectiveRenderMode" }] : /* istanbul ignore next */ []));
2001
2010
  /**
2002
2011
  * Convert layout data to widget tree when inputs change
2003
2012
  */
@@ -2207,7 +2216,11 @@ class AXPLayoutRendererComponent {
2207
2216
  <ax-form>
2208
2217
  <axp-widgets-container [context]="internalContext()" (onContextChanged)="handleContextChanged($event)">
2209
2218
  @if (widgetTree()) {
2210
- <ng-container axp-widget-renderer [node]="widgetTree()!" [mode]="mode()"></ng-container>
2219
+ <ng-container
2220
+ axp-widget-renderer
2221
+ [node]="widgetTree()!"
2222
+ [mode]="effectiveRenderMode()"
2223
+ ></ng-container>
2211
2224
  }
2212
2225
  </axp-widgets-container>
2213
2226
  </ax-form>
@@ -2219,7 +2232,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
2219
2232
  <ax-form>
2220
2233
  <axp-widgets-container [context]="internalContext()" (onContextChanged)="handleContextChanged($event)">
2221
2234
  @if (widgetTree()) {
2222
- <ng-container axp-widget-renderer [node]="widgetTree()!" [mode]="mode()"></ng-container>
2235
+ <ng-container
2236
+ axp-widget-renderer
2237
+ [node]="widgetTree()!"
2238
+ [mode]="effectiveRenderMode()"
2239
+ ></ng-container>
2223
2240
  }
2224
2241
  </axp-widgets-container>
2225
2242
  </ax-form>
@@ -2717,7 +2734,6 @@ class AXPPreviewWidgetFieldCommand {
2717
2734
  this.formBuilderService = inject(AXPLayoutBuilderService);
2718
2735
  this.widgetRegistry = inject(AXPWidgetRegistryService);
2719
2736
  this.translationService = inject(AXTranslationService);
2720
- this.mlResolver = inject(AXPMultiLanguageStringResolverService);
2721
2737
  this.crudService = inject(AXP_ENTITY_DEFINITION_CRUD_SERVICE, { optional: true });
2722
2738
  }
2723
2739
  async execute(input) {
@@ -2727,15 +2743,15 @@ class AXPPreviewWidgetFieldCommand {
2727
2743
  if (!currentWidget?.type) {
2728
2744
  return {
2729
2745
  success: false,
2730
- message: { text: (await this.translationService.translateAsync('@general:messages.invalid-data')) || 'Invalid data' },
2746
+ message: {
2747
+ text: (await this.translationService.translateAsync('@general:messages.invalid-data')) || 'Invalid data',
2748
+ },
2731
2749
  };
2732
2750
  }
2733
2751
  const fieldName = String(merged['fieldName'] ?? merged['name'] ?? 'Field');
2734
2752
  const rawTitle = (merged['fieldTitle'] ?? merged['title']);
2735
2753
  const fieldTitleLabel = this.resolveFieldTitleLabel(rawTitle, fieldName);
2736
- const dialogTitle = (await this.resolveWidgetDisplayTitle(currentWidget.type)) ||
2737
- currentWidget.type ||
2738
- fieldTitleLabel;
2754
+ const dialogTitle = (await this.resolveWidgetDisplayTitle(currentWidget.type)) || currentWidget.type || fieldTitleLabel;
2739
2755
  const previewWidgetOptions = {
2740
2756
  ...optionsBagForPreview(currentWidget),
2741
2757
  name: fieldName,
@@ -2806,7 +2822,7 @@ class AXPPreviewWidgetFieldCommand {
2806
2822
  source = raw;
2807
2823
  }
2808
2824
  }
2809
- return this.mlResolver.resolve(source);
2825
+ return this.translationService.resolve(source);
2810
2826
  }
2811
2827
  isCancelDialogOutcome(outcome) {
2812
2828
  if (outcome == null) {
@@ -2829,7 +2845,7 @@ class AXPPreviewWidgetFieldCommand {
2829
2845
  if (!config) {
2830
2846
  return undefined;
2831
2847
  }
2832
- const resolved = this.mlResolver.resolve(config.title);
2848
+ const resolved = this.translationService.resolve(config.title);
2833
2849
  return resolved || undefined;
2834
2850
  }
2835
2851
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPPreviewWidgetFieldCommand, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }