adds safety checks for building initial form state with no blockType

This commit is contained in:
James
2020-10-02 15:46:27 -04:00
parent d42171d465
commit f5561b4b4f
3 changed files with 9 additions and 41 deletions

View File

@@ -64,7 +64,7 @@ const buildStateFromSchema = async (fieldSchema, fullData) => {
initialValue: row.blockName,
valid: true,
},
...iterateFields(block.fields, row, rowPath),
...(block?.fields ? iterateFields(block.fields, row, rowPath) : {}),
};
}, {}),
};

View File

@@ -1,35 +0,0 @@
RenderFieldsNotes
slides.0.meta.title
slides.1.heroInfo.title
fields: [
{
name: slides,
type: array,
fields: [
{
type: group,
name: meta,
fields: [
{
name: title,
type: text,
component: require.resolve('/aslifjawelifjaew)
}
]
},
{
type: group,
name: heroInfo,
fields: [
{
name: title,
type: text,
component: require.resolve('/aslifjawelifjaew)
}
]
}
]
}
]

View File

@@ -24,9 +24,12 @@ const RenderFields = (props) => {
className,
} = props;
const [hasIntersected, setHasIntersected] = useState(false);
const [hasRendered, setHasRendered] = useState(false);
const [intersectionRef, entry] = useIntersect(intersectionObserverOptions);
const isIntersecting = Boolean(entry?.isIntersecting);
const isAboveViewport = entry?.boundingClientRect?.top < 0;
const shouldRender = isIntersecting || isAboveViewport;
const { operation: operationFromContext } = useRenderedFields();
@@ -43,10 +46,10 @@ const RenderFields = (props) => {
}, [operation]);
useEffect(() => {
if (isIntersecting && !hasIntersected) {
setHasIntersected(true);
if (shouldRender && !hasRendered) {
setHasRendered(true);
}
}, [isIntersecting, hasIntersected]);
}, [shouldRender, hasRendered]);
const classes = [
baseClass,
@@ -59,7 +62,7 @@ const RenderFields = (props) => {
ref={intersectionRef}
className={classes}
>
{hasIntersected && (
{hasRendered && (
<RenderedFieldContext.Provider value={contextValue}>
{fieldSchema.map((field, i) => {
if (!field?.hidden && field?.admin?.disabled !== true) {