Skip to content

Commit c3a3ebf

Browse files
author
Jarosław Dakowicz
committed
Unpack required field and render recursive.
1 parent 1abe20c commit c3a3ebf

File tree

3 files changed

+19
-7
lines changed

3 files changed

+19
-7
lines changed

packages/graphql-form/src/render/fields.tsx

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { NewFieldProps } from '@/models';
2-
import { getTypeName, Options, ScalarTypes, TypeDefinition, TypeSystemDefinition } from 'graphql-js-tree';
2+
import { getTypeName, Options, ParserField, ScalarTypes, TypeDefinition, TypeSystemDefinition } from 'graphql-js-tree';
33
import React from 'react';
44

55
export const Fields: React.FC<NewFieldProps> = (props) => {
@@ -21,8 +21,17 @@ export const Fields: React.FC<NewFieldProps> = (props) => {
2121
if (node.type.fieldType.type === Options.array) {
2222
return <ArrayField {...props} />;
2323
}
24-
if(node.type.fieldType.type === Options.required){
25-
return <Fields {...props} required />
24+
if (node.type.fieldType.type === Options.required) {
25+
const nodeWithoutRequired: ParserField = {
26+
...node,
27+
type: {
28+
...node.type,
29+
fieldType: {
30+
...node.type.fieldType.nest,
31+
},
32+
},
33+
};
34+
return <Fields {...props} required={true} node={nodeWithoutRequired} />;
2635
}
2736
if (isInput) {
2837
return <ObjectField {...props} node={seekNode} />;

packages/graphql-form/src/render/index.tsx

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,20 @@
11
import { NewFieldProps, VarFormProps } from '@/models';
22
import { Fields } from '@/render/fields';
3-
import { Parser, ScalarTypes, generateNodeId, decompileType } from 'graphql-js-tree';
3+
import { Parser, ScalarTypes, generateNodeId, decompileType, Options } from 'graphql-js-tree';
44
import React from 'react';
55

66
export const Render: React.FC<NewFieldProps> = (props) => {
77
const {
8+
node,
89
shared: {
910
components: { FormLabel, FormField },
1011
},
1112
} = props;
13+
1214
return (
13-
<FormField {...props}>
14-
<FormLabel {...props} />
15-
<Fields {...props} />
15+
<FormField {...props} required={node.type.fieldType.type === Options.required}>
16+
<FormLabel {...props} required={node.type.fieldType.type === Options.required} />
17+
<Fields {...props} required={node.type.fieldType.type === Options.required} />
1618
</FormField>
1719
);
1820
};

packages/sandbox/src/pages/index.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ const HomePage = () => {
3434
vars: [
3535
{ name: 'createObject', type: 'CreateSource' },
3636
{ name: 'myVar', type: 'String!' },
37+
{ name: 'Clients', type: '[EditClientData!]!' },
3738
],
3839
});
3940
console.log(myForm);

0 commit comments

Comments
 (0)