Skip to content

Commit

Permalink
fix: arrayfield items prop fallback to empty array when record is null
Browse files Browse the repository at this point in the history
  • Loading branch information
Justin Shih committed Oct 11, 2022
1 parent cafc15d commit 98159c6
Show file tree
Hide file tree
Showing 3 changed files with 20 additions and 12 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -2353,7 +2353,7 @@ export default function NestedJson(props) {
const cleanValues = { ...initialValues, ...initialData };
setFirstName(cleanValues.firstName);
setLastName(cleanValues[\\"last-Name\\"]);
setLastName1(cleanValues.lastName);
setLastName1(cleanValues.lastName ?? []);
setCurrentLastName1Value(undefined);
setBio(cleanValues.bio);
setErrors({});
Expand Down Expand Up @@ -4664,7 +4664,7 @@ export default function InputGalleryUpdateForm(props) {
setAttend(cleanValues.attend);
setMaybeSlide(cleanValues.maybeSlide);
setMaybeCheck(cleanValues.maybeCheck);
setArrayTypeField(cleanValues.arrayTypeField);
setArrayTypeField(cleanValues.arrayTypeField ?? []);
setCurrentArrayTypeFieldValue(undefined);
setTimestamp(cleanValues.timestamp);
setIppy(cleanValues.ippy);
Expand Down
26 changes: 17 additions & 9 deletions packages/codegen-ui-react/lib/forms/form-state.ts
Original file line number Diff line number Diff line change
Expand Up @@ -209,26 +209,34 @@ export const getUseStateHooks = (fieldConfigs: Record<string, FieldConfigMetadat
* };
*/
export const resetStateFunction = (fieldConfigs: Record<string, FieldConfigMetadata>, recordName?: string) => {
const cleanValues = recordName ? 'cleanValues' : 'initialValues';
const recordOrInitialValues = recordName ? 'cleanValues' : 'initialValues';

const stateNames = new Set<string>();
const expressions = Object.entries(fieldConfigs).reduce<Statement[]>(
(acc, [name, { isArray, sanitizedFieldName, componentType, dataType }]) => {
const stateName = name.split('.')[0];
const renderedName = sanitizedFieldName || stateName;
if (!stateNames.has(stateName)) {
const accessExpression = isValidVariableName(stateName)
? factory.createPropertyAccessExpression(
factory.createIdentifier(recordOrInitialValues),
factory.createIdentifier(stateName),
)
: factory.createElementAccessExpression(
factory.createIdentifier(recordOrInitialValues),
factory.createStringLiteral(stateName),
);

acc.push(
setStateExpression(
renderedName,
isValidVariableName(stateName)
? factory.createPropertyAccessExpression(
factory.createIdentifier(cleanValues),
factory.createIdentifier(stateName),
isArray && recordOrInitialValues === 'cleanValues'
? factory.createBinaryExpression(
accessExpression,
factory.createToken(SyntaxKind.QuestionQuestionToken),
factory.createArrayLiteralExpression([], false),
)
: factory.createElementAccessExpression(
factory.createIdentifier(cleanValues),
factory.createStringLiteral(stateName),
),
: accessExpression,
),
);
if (isArray) {
Expand Down
2 changes: 1 addition & 1 deletion packages/codegen-ui-react/lib/imports/import-collection.ts
Original file line number Diff line number Diff line change
Expand Up @@ -92,7 +92,7 @@ export class ImportCollection {
undefined,
factory.createImportClause(
false,
// use module name as defualt import name
// use module name as default import name
[...imports].indexOf('default') >= 0 ? factory.createIdentifier(path.basename(moduleName)) : undefined,
factory.createNamedImports(
namedImports.map((item) => {
Expand Down

0 comments on commit 98159c6

Please sign in to comment.