Skip to content

Commit 773a81a

Browse files
committed
fix: ensure parent is not null on first render in resolveFields
1 parent cfd21d8 commit 773a81a

File tree

1 file changed

+26
-10
lines changed
  • packages/core/components/Puck/components/Fields

1 file changed

+26
-10
lines changed

packages/core/components/Puck/components/Fields/index.tsx

Lines changed: 26 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -126,22 +126,38 @@ const useResolvedFields = (): [FieldsType, boolean] => {
126126
lastData,
127127
});
128128
},
129-
[data, config, componentData, selectedItem, resolvedFields, state]
129+
[data, config, componentData, selectedItem, resolvedFields, state, parent]
130130
);
131131

132+
const [hasParent, setHasParent] = useState(false);
133+
134+
useEffect(() => {
135+
setHasParent(!!parent);
136+
}, [parent]);
137+
132138
useEffect(() => {
133-
if (hasResolver) {
134-
setFieldsLoading(true);
139+
// Must either be in root zone, or have parent
140+
if (!state.ui.itemSelector?.zone || hasParent) {
141+
if (hasResolver) {
142+
setFieldsLoading(true);
135143

136-
resolveFields(defaultFields).then((fields) => {
137-
setResolvedFields(fields || {});
144+
resolveFields(defaultFields).then((fields) => {
145+
setResolvedFields(fields || {});
138146

139-
setFieldsLoading(false);
140-
});
141-
} else {
142-
setResolvedFields(defaultFields);
147+
setFieldsLoading(false);
148+
});
149+
} else {
150+
setResolvedFields(defaultFields);
151+
}
143152
}
144-
}, [data, defaultFields, selectedItem, hasResolver]);
153+
}, [
154+
data,
155+
defaultFields,
156+
state.ui.itemSelector,
157+
selectedItem,
158+
hasResolver,
159+
hasParent,
160+
]);
145161

146162
return [resolvedFields, fieldsLoading];
147163
};

0 commit comments

Comments
 (0)