@open-mercato/ui 0.6.5-develop.4695.1.42ee0ddf0e → 0.6.5-develop.4703.1.59a086a9ee

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.
@@ -1653,12 +1653,22 @@ function CrudForm({
1653
1653
  }, [errors, formId]);
1654
1654
  const setValue = React.useCallback((id, nextValue) => {
1655
1655
  let nextData = null;
1656
+ let nextDirty = null;
1656
1657
  setValues((prev) => {
1657
1658
  if (Object.is(prev[id], nextValue)) return prev;
1658
1659
  nextData = { ...prev, [id]: nextValue };
1659
1660
  valuesRef.current = nextData;
1661
+ if (!(embedded && !trackDirtyWhenEmbedded)) {
1662
+ const baseline = dirtyBaselineSnapshotRef.current ?? createDirtySnapshot(prev);
1663
+ dirtyBaselineSnapshotRef.current = baseline;
1664
+ nextDirty = createDirtySnapshot(nextData) !== baseline;
1665
+ }
1660
1666
  return nextData;
1661
1667
  });
1668
+ if (nextDirty !== null) {
1669
+ isDirtyRef.current = nextDirty;
1670
+ setHasUnsavedChanges(nextDirty);
1671
+ }
1662
1672
  const clearedMessages = [];
1663
1673
  setErrors((prev) => {
1664
1674
  if (!Object.keys(prev).length) return prev;
@@ -1718,7 +1728,7 @@ function CrudForm({
1718
1728
  }).catch((err) => {
1719
1729
  console.error("[CrudForm] Error in onFieldChange:", err);
1720
1730
  });
1721
- }, [extendedInjectionEventsEnabled, flash, t, translateValidationMessage, triggerInjectionEvent]);
1731
+ }, [embedded, extendedInjectionEventsEnabled, flash, t, trackDirtyWhenEmbedded, translateValidationMessage, triggerInjectionEvent]);
1722
1732
  const onBlurRequest = React.useCallback((fieldId) => {
1723
1733
  void validateFieldOnBlur(fieldId);
1724
1734
  }, [validateFieldOnBlur]);