labellife-design-tool 2.2.2 → 2.2.3

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.
@@ -2051,7 +2051,9 @@ var InputFieldsDialog = observer(function (_ref2) {
2051
2051
  var store = _ref2.store,
2052
2052
  _onComplete = _ref2.onComplete,
2053
2053
  _ref2$enabled = _ref2.enabled,
2054
- enabled = _ref2$enabled === void 0 ? true : _ref2$enabled;
2054
+ enabled = _ref2$enabled === void 0 ? true : _ref2$enabled,
2055
+ _ref2$backTrigger = _ref2.backTrigger,
2056
+ backTrigger = _ref2$backTrigger === void 0 ? 0 : _ref2$backTrigger;
2055
2057
  // displayIndex counts how many fields have been answered (for step indicator only).
2056
2058
  // Navigation always uses fields[0] — the first remaining pending field.
2057
2059
  var _useState5 = useState(0),
@@ -2060,6 +2062,8 @@ var InputFieldsDialog = observer(function (_ref2) {
2060
2062
  setDisplayIndex = _useState6[1];
2061
2063
  var initialTotalRef = useRef(0);
2062
2064
  var completedHistoryRef = useRef([]);
2065
+ var isGoingBackRef = useRef(false);
2066
+ var prevBackTriggerRef = useRef(backTrigger);
2063
2067
  var config = getInputFieldsConfig();
2064
2068
  var pendingFields = store._pendingInputFields || [];
2065
2069
 
@@ -2076,13 +2080,20 @@ var InputFieldsDialog = observer(function (_ref2) {
2076
2080
  // Capture total and reset display counter when a fresh batch appears
2077
2081
  useEffect(function () {
2078
2082
  if (fields.length > 0 && initialTotalRef.current === 0) {
2079
- initialTotalRef.current = fields.length;
2080
- setDisplayIndex(0);
2081
- completedHistoryRef.current = [];
2083
+ if (isGoingBackRef.current) {
2084
+ // Back-from-summary restored a field — recover total from history + pending
2085
+ isGoingBackRef.current = false;
2086
+ initialTotalRef.current = completedHistoryRef.current.length + fields.length;
2087
+ } else {
2088
+ // Genuine fresh batch
2089
+ initialTotalRef.current = fields.length;
2090
+ setDisplayIndex(0);
2091
+ completedHistoryRef.current = [];
2092
+ }
2082
2093
  }
2083
2094
  if (fields.length === 0) {
2084
2095
  initialTotalRef.current = 0;
2085
- completedHistoryRef.current = [];
2096
+ // History is intentionally kept so back-from-summary can use it
2086
2097
  }
2087
2098
  }, [fields.length]);
2088
2099
  var totalCount = initialTotalRef.current || fields.length;
@@ -2161,6 +2172,31 @@ var InputFieldsDialog = observer(function (_ref2) {
2161
2172
  };
2162
2173
  var canGoBack = displayIndex > 0;
2163
2174
 
2175
+ // Back-from-summary: triggered by parent incrementing backTrigger prop
2176
+ var handleBackFromSummary = function handleBackFromSummary() {
2177
+ var last = completedHistoryRef.current.pop();
2178
+ if (!last) return;
2179
+ var el = last.el,
2180
+ previousValue = last.previousValue;
2181
+ if (el) {
2182
+ var isImage = el.custom && el.custom.inputType === 'image';
2183
+ el.set(isImage ? {
2184
+ src: previousValue || ''
2185
+ } : {
2186
+ text: previousValue || ''
2187
+ });
2188
+ isGoingBackRef.current = true;
2189
+ store._unresolveInputField(el);
2190
+ }
2191
+ // displayIndex stays unchanged — it already points to the last step (N-1)
2192
+ };
2193
+ useEffect(function () {
2194
+ if (backTrigger !== prevBackTriggerRef.current) {
2195
+ prevBackTriggerRef.current = backTrigger;
2196
+ handleBackFromSummary();
2197
+ }
2198
+ }, [backTrigger]);
2199
+
2164
2200
  // ── Resolve which dialog component to use ───────────────────────────
2165
2201
  // Priority: per-type custom dialog > global CustomDialog > built-in
2166
2202
  var TYPE_DIALOG_MAP = {
@@ -2514,7 +2550,9 @@ var Workspace = observer(function (_ref6) {
2514
2550
  components = _ref6$components === void 0 ? {} : _ref6$components,
2515
2551
  _ref6$showInputFields = _ref6.showInputFieldsPopup,
2516
2552
  showInputFieldsPopup = _ref6$showInputFields === void 0 ? true : _ref6$showInputFields,
2517
- onInputFieldsComplete = _ref6.onInputFieldsComplete;
2553
+ onInputFieldsComplete = _ref6.onInputFieldsComplete,
2554
+ _ref6$backTrigger = _ref6.backTrigger,
2555
+ backTrigger = _ref6$backTrigger === void 0 ? 0 : _ref6$backTrigger;
2518
2556
  var stageRef = useRef(null);
2519
2557
  var containerRef = useRef(null);
2520
2558
  var _useState5 = useState({
@@ -2800,7 +2838,8 @@ var Workspace = observer(function (_ref6) {
2800
2838
  }) : null, /*#__PURE__*/jsx(InputFieldsDialog, {
2801
2839
  store: store,
2802
2840
  enabled: showInputFieldsPopup,
2803
- onComplete: onInputFieldsComplete
2841
+ onComplete: onInputFieldsComplete,
2842
+ backTrigger: backTrigger
2804
2843
  })]
2805
2844
  });
2806
2845
  });