@vectoriox/iox-builder 4.14.0 → 4.16.0

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.
@@ -16,7 +16,7 @@ import { SelectModule } from 'primeng/select';
16
16
  import { TooltipModule } from 'primeng/tooltip';
17
17
  import { DialogModule } from 'primeng/dialog';
18
18
  import * as i17 from '@vectoriox/iox-ui';
19
- import { DEFAULT_WIDTH_BY_TYPE, Breakpoint, BREAKPOINTS, countOverrides, setOverride, breakpointDef, breakpointForWidth, ContextStore, ComponentInstanceRegistryService, isActionEnabled, isContextAction, contextActionEffect, resolveContextValue, DeclarationContext, planResponsiveRules, resolveStyleProps, buildTargetedStateSelector, compileDeclarations, wrapInBreakpointQuery, BreakpointQueryKind, safeSetInput, composeVirtualTraits, stateNamesIn, FormRenderState, resolveInputs, setInputOverride, collectContextSlotKeys, withContextSlots, nodeUsesContext, resolvePath, applyBindingPipes, IS_PREVIEW, planDataSource, dataSourcePlanToRequest, normalizeCollectionResult, resolveRepeaterItems, getByPath, computeRelative, IoxPageModule } from '@vectoriox/iox-ui';
19
+ import { DEFAULT_WIDTH_BY_TYPE, Breakpoint, BREAKPOINTS, countOverrides, setOverride, breakpointDef, breakpointForWidth, ContextStore, ComponentInstanceRegistryService, isActionEnabled, isContextAction, contextActionEffect, resolveContextValue, DeclarationContext, planResponsiveRules, resolveStyleProps, buildTargetedStateSelector, compileDeclarations, wrapInBreakpointQuery, BreakpointQueryKind, safeSetInput, composeVirtualTraits, stateNamesIn, FormRenderState, resolveInputs, setInputOverride, collectContextSlotKeys, withContextSlots, nodeUsesContext, resolveBoundValue, IS_PREVIEW, planDataSource, dataSourcePlanToRequest, normalizeCollectionResult, resolveRepeaterItems, getByPath, computeRelative, IoxPageModule } from '@vectoriox/iox-ui';
20
20
  export { ComponentInstanceRegistryService, VIRTUAL_TRAIT_KEYS, composeVirtualTraits } from '@vectoriox/iox-ui';
21
21
  import Lenis from 'lenis';
22
22
  import { Subject, BehaviorSubject, of, forkJoin } from 'rxjs';
@@ -6279,8 +6279,9 @@ class BuilderComponent {
6279
6279
  const sourceData = data[binding.source];
6280
6280
  if (sourceData == null)
6281
6281
  continue;
6282
- const raw = binding.path ? resolvePath(sourceData, binding.path) : sourceData;
6283
- const value = applyBindingPipes(raw, binding.pipes);
6282
+ // Path + pipes is the SHARED resolveBoundValue — the same two lines used to
6283
+ // be retyped here, in the SSR string renderer and in the SSR component renderer.
6284
+ const value = resolveBoundValue(sourceData, binding);
6284
6285
  if (value !== undefined && value !== null)
6285
6286
  safeSetInput(ref, binding.prop, value);
6286
6287
  }
@@ -7507,7 +7508,10 @@ function cloneNodesForItem(nodes, item) {
7507
7508
  clone.__previewClone = true;
7508
7509
  if (clone.bindings?.length && item) {
7509
7510
  for (const binding of clone.bindings) {
7510
- const value = resolvePath(item, binding.path);
7511
+ // Path lookup AND pipes (UI "Filters"). Resolving the path alone left a `date` or
7512
+ // `uppercase` filter unapplied on every preview row, so the canvas showed the raw
7513
+ // value while the SSR engine showed the formatted one — see binding-filters-plan.md.
7514
+ const value = resolveBoundValue(item, binding);
7511
7515
  if (value !== undefined) {
7512
7516
  for (const trait of clone.traits || []) {
7513
7517
  if (trait.name === binding.prop) {
@@ -7793,7 +7797,9 @@ class BuilderRepeaterComponent {
7793
7797
  const ref = this.overlayService.getNodeRef(child);
7794
7798
  if (ref?.componentRef) {
7795
7799
  for (const binding of child.bindings) {
7796
- const value = resolvePath(item, binding.path);
7800
+ // Path + pipes, like every other binding-resolution point. See
7801
+ // binding-filters-plan.md — row 1 used to skip the filters.
7802
+ const value = resolveBoundValue(item, binding);
7797
7803
  if (value !== undefined) {
7798
7804
  ref.componentRef.instance[binding.prop] = value;
7799
7805
  }
@@ -8319,7 +8325,9 @@ class SliderContainerComponent {
8319
8325
  const ref = this.overlayService.getNodeRef(node);
8320
8326
  if (ref?.componentRef) {
8321
8327
  for (const binding of node.bindings) {
8322
- const value = resolvePath(item, binding.path);
8328
+ // Path + pipes, like every other binding-resolution point. See
8329
+ // binding-filters-plan.md — slide 1 used to skip the filters.
8330
+ const value = resolveBoundValue(item, binding);
8323
8331
  if (value !== undefined) {
8324
8332
  ref.componentRef.instance[binding.prop] = value;
8325
8333
  }