@acorex-platform/framework-client 0.0.15 → 0.0.18

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 (34) hide show
  1. package/fesm2022/acorex-platform-framework-client-auth.mjs.map +1 -1
  2. package/fesm2022/acorex-platform-framework-client-common.mjs +25 -211
  3. package/fesm2022/acorex-platform-framework-client-common.mjs.map +1 -1
  4. package/fesm2022/acorex-platform-framework-client-core.mjs +8 -104
  5. package/fesm2022/acorex-platform-framework-client-core.mjs.map +1 -1
  6. package/fesm2022/acorex-platform-framework-client-layout-builder.mjs +57 -12
  7. package/fesm2022/acorex-platform-framework-client-layout-builder.mjs.map +1 -1
  8. package/fesm2022/acorex-platform-framework-client-layout-components.mjs +494 -561
  9. package/fesm2022/acorex-platform-framework-client-layout-components.mjs.map +1 -1
  10. package/fesm2022/acorex-platform-framework-client-layout-designer.mjs +8 -8
  11. package/fesm2022/acorex-platform-framework-client-layout-designer.mjs.map +1 -1
  12. package/fesm2022/acorex-platform-framework-client-layout-entity.mjs +1333 -1023
  13. package/fesm2022/acorex-platform-framework-client-layout-entity.mjs.map +1 -1
  14. package/fesm2022/acorex-platform-framework-client-layout-views.mjs +51 -9
  15. package/fesm2022/acorex-platform-framework-client-layout-views.mjs.map +1 -1
  16. package/fesm2022/acorex-platform-framework-client-layout-widget-core.mjs +29 -9
  17. package/fesm2022/acorex-platform-framework-client-layout-widget-core.mjs.map +1 -1
  18. package/fesm2022/acorex-platform-framework-client-layout-widgets.mjs +48 -15
  19. package/fesm2022/acorex-platform-framework-client-layout-widgets.mjs.map +1 -1
  20. package/fesm2022/acorex-platform-framework-client-themes-default.mjs +41 -26
  21. package/fesm2022/acorex-platform-framework-client-themes-default.mjs.map +1 -1
  22. package/fesm2022/acorex-platform-framework-client-themes-shared.mjs +4 -4
  23. package/fesm2022/acorex-platform-framework-client-themes-shared.mjs.map +1 -1
  24. package/fesm2022/acorex-platform-framework-client-workflow.mjs.map +1 -1
  25. package/package.json +7 -7
  26. package/types/acorex-platform-framework-client-auth.d.ts +2 -2
  27. package/types/acorex-platform-framework-client-common.d.ts +12 -125
  28. package/types/acorex-platform-framework-client-core.d.ts +5 -22
  29. package/types/acorex-platform-framework-client-layout-builder.d.ts +10 -0
  30. package/types/acorex-platform-framework-client-layout-components.d.ts +17 -68
  31. package/types/acorex-platform-framework-client-layout-entity.d.ts +80 -7
  32. package/types/acorex-platform-framework-client-layout-views.d.ts +11 -6
  33. package/types/acorex-platform-framework-client-layout-widgets.d.ts +1 -1
  34. package/types/acorex-platform-framework-client-workflow.d.ts +1 -2
@@ -1595,7 +1595,7 @@ class AXPWidgetColumnRendererComponent extends AXDataTableColumnComponent {
1595
1595
  </div>
1596
1596
  </ng-template>
1597
1597
  <ng-template #footer></ng-template>
1598
- `, isInline: true, styles: [".axp-widget-column-header--sortable{cursor:pointer}.axp-widget-column-header__caption{min-width:0}.axp-widget-column-header__caption--with-sort{flex:1 1 0}.axp-widget-column-header__sort{opacity:0;transition:opacity .15s ease}.axp-widget-column-header--sortable:hover .axp-widget-column-header__sort,.axp-widget-column-header--sortable:focus-within .axp-widget-column-header__sort,.axp-widget-column-header--sort-active .axp-widget-column-header__sort{opacity:1}.axp-widget-column-header__sort-priority{line-height:1}:host-context(.data-table-head-cell.ax-interactive:hover) .axp-widget-column-header__sort,:host-context(.data-table-head-cell.ax-interactive:focus-within) .axp-widget-column-header__sort,:host-context(.data-table-head-cell) .axp-widget-column-header--sort-active .axp-widget-column-header__sort{opacity:1}\n/*! tailwindcss v4.3.2 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "directive", type: i1.NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletEnvironmentInjector", "ngComponentOutletContent", "ngComponentOutletNgModule"], exportAs: ["ngComponentOutlet"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i2.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1598
+ `, isInline: true, styles: ["@layer properties;.axp-widget-column-header--sortable{cursor:pointer}.axp-widget-column-header--sortable:hover .axp-widget-column-header__sort,.axp-widget-column-header--sortable:focus-within .axp-widget-column-header__sort,.axp-widget-column-header--sortable.axp-widget-column-header--sort-active .axp-widget-column-header__sort{opacity:1}.axp-widget-column-header__caption{min-width:0}.axp-widget-column-header__caption--with-sort{flex:1;flex:1 1 0}.axp-widget-column-header__sort{opacity:0;transition:opacity .15s ease}.axp-widget-column-header__sort-priority{--tw-leading: 1;line-height:1}:host-context(.ax-data-table-head-cell.ax-interactive:hover) .axp-widget-column-header__sort,:host-context(.ax-data-table-head-cell.ax-interactive:focus-within) .axp-widget-column-header__sort,:host-context(.ax-data-table-head-cell) .axp-widget-column-header--sort-active .axp-widget-column-header__sort{opacity:1}@property --tw-leading{syntax: \"*\"; inherits: false;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-leading: initial}}}\n/*! tailwindcss v4.3.2 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "directive", type: i1.NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletEnvironmentInjector", "ngComponentOutletContent", "ngComponentOutletNgModule"], exportAs: ["ngComponentOutlet"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i2.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1599
1599
  }
1600
1600
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPWidgetColumnRendererComponent, decorators: [{
1601
1601
  type: Component,
@@ -1697,7 +1697,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
1697
1697
  provide: AXDataTableColumnComponent,
1698
1698
  useExisting: AXPWidgetColumnRendererComponent,
1699
1699
  },
1700
- ], changeDetection: ChangeDetectionStrategy.OnPush, inputs: ['caption'], standalone: false, styles: [".axp-widget-column-header--sortable{cursor:pointer}.axp-widget-column-header__caption{min-width:0}.axp-widget-column-header__caption--with-sort{flex:1 1 0}.axp-widget-column-header__sort{opacity:0;transition:opacity .15s ease}.axp-widget-column-header--sortable:hover .axp-widget-column-header__sort,.axp-widget-column-header--sortable:focus-within .axp-widget-column-header__sort,.axp-widget-column-header--sort-active .axp-widget-column-header__sort{opacity:1}.axp-widget-column-header__sort-priority{line-height:1}:host-context(.data-table-head-cell.ax-interactive:hover) .axp-widget-column-header__sort,:host-context(.data-table-head-cell.ax-interactive:focus-within) .axp-widget-column-header__sort,:host-context(.data-table-head-cell) .axp-widget-column-header--sort-active .axp-widget-column-header__sort{opacity:1}\n/*! tailwindcss v4.3.2 | MIT License | https://tailwindcss.com */\n"] }]
1700
+ ], changeDetection: ChangeDetectionStrategy.OnPush, inputs: ['caption'], standalone: false, styles: ["@layer properties;.axp-widget-column-header--sortable{cursor:pointer}.axp-widget-column-header--sortable:hover .axp-widget-column-header__sort,.axp-widget-column-header--sortable:focus-within .axp-widget-column-header__sort,.axp-widget-column-header--sortable.axp-widget-column-header--sort-active .axp-widget-column-header__sort{opacity:1}.axp-widget-column-header__caption{min-width:0}.axp-widget-column-header__caption--with-sort{flex:1;flex:1 1 0}.axp-widget-column-header__sort{opacity:0;transition:opacity .15s ease}.axp-widget-column-header__sort-priority{--tw-leading: 1;line-height:1}:host-context(.ax-data-table-head-cell.ax-interactive:hover) .axp-widget-column-header__sort,:host-context(.ax-data-table-head-cell.ax-interactive:focus-within) .axp-widget-column-header__sort,:host-context(.ax-data-table-head-cell) .axp-widget-column-header--sort-active .axp-widget-column-header__sort{opacity:1}@property --tw-leading{syntax: \"*\"; inherits: false;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-leading: initial}}}\n/*! tailwindcss v4.3.2 | MIT License | https://tailwindcss.com */\n"] }]
1701
1701
  }], propDecorators: { customExpandIcon: [{
1702
1702
  type: Input
1703
1703
  }], customCollapseIcon: [{
@@ -1832,19 +1832,39 @@ class AXPWidgetContainerComponent {
1832
1832
  syncExternalContext(value) {
1833
1833
  const next = cloneDeep(value ?? {});
1834
1834
  const current = this.contextService.data();
1835
- if (isEqual(current, next)) {
1835
+ const nextRecord = next;
1836
+ if (isEqual(current, nextRecord)) {
1836
1837
  return;
1837
1838
  }
1839
+ const currentId = current['id'] ?? current['_id'];
1840
+ const nextId = nextRecord['id'] ?? nextRecord['_id'];
1841
+ const sameRecord = hasPersistedRootIdentity(currentId) &&
1842
+ hasPersistedRootIdentity(nextId) &&
1843
+ currentId === nextId;
1844
+ // Create-wizard "create and continue": parent id just appeared. Apply the full payload
1845
+ // (including nested related/merge-detail data) without remounting the step wizard.
1846
+ // Do NOT identity-only patch — that drops nested objects like `person`.
1847
+ const identityJustAppeared = extractPersistedRootIdentityPatch(current, nextRecord);
1848
+ if (identityJustAppeared) {
1849
+ this.contextService.set(nextRecord);
1850
+ void this.settleSavedBaseline();
1851
+ return;
1852
+ }
1853
+ // Dirty form: never clobber in-progress user edits from external context echoes.
1838
1854
  if (this.contextService.isSavedCommitted() && this.isFormDirty()) {
1839
- const identityPatch = extractPersistedRootIdentityPatch(current, next);
1840
- if (identityPatch) {
1841
- this.contextService.patch(identityPatch, { updateSaved: true });
1842
- }
1843
1855
  return;
1844
1856
  }
1845
1857
  if (this.contextService.isSavedCommitted()) {
1858
+ // Same record enrichment (details byKey / dialog echo) — update store, keep widgets mounted
1859
+ // so nested paths like `person.firstName` bind without resetting the page.
1860
+ if (sameRecord) {
1861
+ this.contextService.set(nextRecord);
1862
+ void this.settleSavedBaseline();
1863
+ return;
1864
+ }
1865
+ // Navigating to a different record
1846
1866
  this.builderService.clearWidgets();
1847
- this.contextService.set(next);
1867
+ this.contextService.set(nextRecord);
1848
1868
  void this.settleSavedBaseline();
1849
1869
  return;
1850
1870
  }
@@ -1852,7 +1872,7 @@ class AXPWidgetContainerComponent {
1852
1872
  return;
1853
1873
  }
1854
1874
  this.builderService.clearWidgets();
1855
- this.contextService.set(next);
1875
+ this.contextService.set(nextRecord);
1856
1876
  void this.settleSavedBaseline();
1857
1877
  }
1858
1878
  /** Commits the current data as saved after widget hydration settles. */