@xuda.io/runtime-bundle 1.0.275 → 1.0.277

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.
@@ -33767,7 +33767,8 @@ func.UI.screen.execute_xu_functions = async function (
33767
33767
 
33768
33768
  let is_dynamic_field = false
33769
33769
  let field_prop;
33770
- let bind_field_id
33770
+ let bind_field_id;
33771
+ let bind_field_exp
33771
33772
 
33772
33773
  const get_bind_field = async function (field_id) {
33773
33774
  if (["_FOR_VAL", "_FOR_KEY"].includes(field_id)) {
@@ -33813,10 +33814,11 @@ func.UI.screen.execute_xu_functions = async function (
33813
33814
  } catch (err) {
33814
33815
  try {
33815
33816
  if (!_.isEmpty($elm?.data()?.xuAttributes?.["xu-exp:xu-bind"])) {
33817
+ bind_field_exp = $elm.data().xuAttributes["xu-exp:xu-bind"]
33816
33818
  const res = (
33817
33819
  await func.expression.get(
33818
33820
  SESSION_ID,
33819
- $elm.data().xuAttributes["xu-exp:xu-bind"],
33821
+ bind_field_exp,
33820
33822
  paramsP.dsSessionP,
33821
33823
  "UI Attr EXP"
33822
33824
  )
@@ -33850,9 +33852,11 @@ func.UI.screen.execute_xu_functions = async function (
33850
33852
  bind.getter($elm[0])
33851
33853
  );
33852
33854
 
33853
- if (!_ds.currentRecordId) return;
33854
-
33855
+ if (field_prop.props.fieldType === "object" && !val_is_reference_field) {
33856
+ value = bind.getter($elm[0])
33857
+ }
33855
33858
 
33859
+ if (!_ds.currentRecordId) return;
33856
33860
 
33857
33861
  let datasource_changes = {
33858
33862
  [_dsP]: {
@@ -33868,8 +33872,16 @@ func.UI.screen.execute_xu_functions = async function (
33868
33872
  if (reference_source_obj) {
33869
33873
  if (reference_source_obj.ret.type === "array") {
33870
33874
  if (iterate_info.iterator_val === bind_field_id) {
33875
+ const arr_idx = Number($elm?.data()?.xuData?.iterate_info._key)
33871
33876
  let new_arr = reference_source_obj.ret.value
33872
- new_arr[Number($elm?.data()?.xuData?.iterate_info._key)] = value
33877
+ if (field_prop.props.fieldType === "object" && !val_is_reference_field) {
33878
+ let obj_item = new_arr[arr_idx]
33879
+ let e_exp = bind_field_exp.replace("@_FOR_VAL", obj_item);
33880
+ let new_val = eval(e_exp)
33881
+ new_arr[arr_idx] = new_val
33882
+ } else {
33883
+ new_arr[arr_idx] = value
33884
+ }
33873
33885
  datasource_changes[_dsP][_ds.currentRecordId][reference_source_obj.fieldIdP] = new_arr
33874
33886
 
33875
33887
  datasource_changes = {
@@ -33910,7 +33922,7 @@ func.UI.screen.execute_xu_functions = async function (
33910
33922
  value = _ds.data_feed.rows?.[row_idx]?.[val.value];
33911
33923
  }
33912
33924
  } else {
33913
- value = val
33925
+ value = val.value
33914
33926
  }
33915
33927
  if (typeof value === "undefined") return;
33916
33928
  bind.setter($elm[0], value);