ui-core-abv 0.10.5 → 0.10.6

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.
@@ -7685,13 +7685,12 @@ function helperShowFormFromBuilder(blocks, cols, editable = false, schemaOptions
7685
7685
  };
7686
7686
  }
7687
7687
  function mapEditableBlocksToBlocks(blocks, editable) {
7688
+ // Solo campos raíz: un campo raíz nunca depende de un subcampo (raíz -> ítem no existe),
7689
+ // y los códigos sf_N se repiten entre repeaters, así que no pueden ir en un mapa global.
7688
7690
  const fieldCodeToName = new Map();
7689
7691
  blocks.forEach(block => {
7690
7692
  block.fields.forEach(field => {
7691
7693
  fieldCodeToName.set(field.code, field.fieldData.name);
7692
- field.repeaterSubFields?.forEach(sf => {
7693
- fieldCodeToName.set(sf.code, sf.fieldData.name);
7694
- });
7695
7694
  });
7696
7695
  });
7697
7696
  return blocks.map(block => ({
@@ -7710,9 +7709,9 @@ function mapEditableBlocksToBlocks(blocks, editable) {
7710
7709
  }
7711
7710
  : field.fieldData.optionsSource;
7712
7711
  const isComputedField = field.fieldData.type === 'computed';
7713
- // Los códigos sf_N se repiten entre repeaters: las reglas de un subcampo
7714
- // se resuelven primero contra los hermanos de su propio repeater.
7712
+ // Referencias de un subcampo: gana el hermano del mismo repeater, luego el raíz.
7715
7713
  const siblingCodeToName = new Map((field.repeaterSubFields ?? []).map(sf => [sf.code, sf.fieldData.name]));
7714
+ const resolveSubFieldRef = (code) => siblingCodeToName.get(code) ?? fieldCodeToName.get(code) ?? code;
7716
7715
  return {
7717
7716
  ...field.fieldData,
7718
7717
  type: isComputedField ? 'text' : field.fieldData.type,
@@ -7731,13 +7730,12 @@ function mapEditableBlocksToBlocks(blocks, editable) {
7731
7730
  const sfIsComputed = sf.fieldData.type === 'computed';
7732
7731
  const sfVisibilityRules = sf.fieldData.visibilityRules?.map(rule => ({
7733
7732
  ...rule,
7734
- fieldName: siblingCodeToName.get(rule.fieldName) ?? fieldCodeToName.get(rule.fieldName) ?? rule.fieldName
7733
+ fieldName: resolveSubFieldRef(rule.fieldName)
7735
7734
  }));
7736
7735
  const sfOptionsSource = sf.fieldData.optionsSource?.dependsOn
7737
7736
  ? {
7738
7737
  ...sf.fieldData.optionsSource,
7739
- dependsOn: fieldCodeToName.get(sf.fieldData.optionsSource.dependsOn)
7740
- ?? sf.fieldData.optionsSource.dependsOn
7738
+ dependsOn: resolveSubFieldRef(sf.fieldData.optionsSource.dependsOn)
7741
7739
  }
7742
7740
  : sf.fieldData.optionsSource;
7743
7741
  return {
@@ -7750,7 +7748,7 @@ function mapEditableBlocksToBlocks(blocks, editable) {
7750
7748
  ? {
7751
7749
  computedSource: {
7752
7750
  key: sf.fieldData.computedSource.key,
7753
- dependsOn: (sf.fieldData.computedSource.dependsOn ?? []).map(code => fieldCodeToName.get(code) ?? code)
7751
+ dependsOn: (sf.fieldData.computedSource.dependsOn ?? []).map(resolveSubFieldRef)
7754
7752
  }
7755
7753
  }
7756
7754
  : {})