graphql-form 0.1.6 → 0.1.8

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.
Files changed (89) hide show
  1. package/lib/index.d.ts +1 -6
  2. package/lib/index.js +1 -6
  3. package/lib/index.js.map +1 -1
  4. package/lib/models.d.ts +34 -77
  5. package/lib/models.js.map +1 -1
  6. package/lib/render/fields.d.ts +3 -0
  7. package/lib/{renderer → render}/fields.js +10 -15
  8. package/lib/render/fields.js.map +1 -0
  9. package/lib/render/index.d.ts +4 -0
  10. package/lib/render/index.js +56 -0
  11. package/lib/render/index.js.map +1 -0
  12. package/package.json +4 -4
  13. package/src/index.tsx +1 -6
  14. package/src/models.ts +43 -100
  15. package/src/render/fields.tsx +58 -0
  16. package/src/render/index.tsx +65 -0
  17. package/tsconfig.json +3 -2
  18. package/lib/BuiltInFields/InjectedValue.d.ts +0 -5
  19. package/lib/BuiltInFields/InjectedValue.js +0 -49
  20. package/lib/BuiltInFields/InjectedValue.js.map +0 -1
  21. package/lib/FormBuilder.d.ts +0 -3
  22. package/lib/FormBuilder.js +0 -78
  23. package/lib/FormBuilder.js.map +0 -1
  24. package/lib/FormDisplayer.d.ts +0 -3
  25. package/lib/FormDisplayer.js +0 -76
  26. package/lib/FormDisplayer.js.map +0 -1
  27. package/lib/FormToCode/gql/formToGql.spec.d.ts +0 -1
  28. package/lib/FormToCode/gql/formToGql.spec.js +0 -50
  29. package/lib/FormToCode/gql/formToGql.spec.js.map +0 -1
  30. package/lib/FormToCode/gql/index.d.ts +0 -6
  31. package/lib/FormToCode/gql/index.js +0 -12
  32. package/lib/FormToCode/gql/index.js.map +0 -1
  33. package/lib/FormToCode/gql/reducers.d.ts +0 -6
  34. package/lib/FormToCode/gql/reducers.js +0 -56
  35. package/lib/FormToCode/gql/reducers.js.map +0 -1
  36. package/lib/FormToCode/gql/resolvers.d.ts +0 -4
  37. package/lib/FormToCode/gql/resolvers.js +0 -54
  38. package/lib/FormToCode/gql/resolvers.js.map +0 -1
  39. package/lib/FormToCode/index.d.ts +0 -3
  40. package/lib/FormToCode/index.js +0 -20
  41. package/lib/FormToCode/index.js.map +0 -1
  42. package/lib/FormToCode/models.d.ts +0 -8
  43. package/lib/FormToCode/models.js +0 -3
  44. package/lib/FormToCode/models.js.map +0 -1
  45. package/lib/FormToCode/zeus/formToZeus.spec.d.ts +0 -1
  46. package/lib/FormToCode/zeus/formToZeus.spec.js +0 -59
  47. package/lib/FormToCode/zeus/formToZeus.spec.js.map +0 -1
  48. package/lib/FormToCode/zeus/index.d.ts +0 -6
  49. package/lib/FormToCode/zeus/index.js +0 -12
  50. package/lib/FormToCode/zeus/index.js.map +0 -1
  51. package/lib/FormToCode/zeus/resolvers.d.ts +0 -5
  52. package/lib/FormToCode/zeus/resolvers.js +0 -57
  53. package/lib/FormToCode/zeus/resolvers.js.map +0 -1
  54. package/lib/__tests__/consts.d.ts +0 -11
  55. package/lib/__tests__/consts.js +0 -38
  56. package/lib/__tests__/consts.js.map +0 -1
  57. package/lib/__tests__/index.d.ts +0 -2
  58. package/lib/__tests__/index.js +0 -19
  59. package/lib/__tests__/index.js.map +0 -1
  60. package/lib/__tests__/testUtils.d.ts +0 -1
  61. package/lib/__tests__/testUtils.js +0 -8
  62. package/lib/__tests__/testUtils.js.map +0 -1
  63. package/lib/createWidget.d.ts +0 -4
  64. package/lib/createWidget.js +0 -19
  65. package/lib/createWidget.js.map +0 -1
  66. package/lib/outsideUse.d.ts +0 -11
  67. package/lib/outsideUse.js +0 -147
  68. package/lib/outsideUse.js.map +0 -1
  69. package/lib/renderer/fields.d.ts +0 -3
  70. package/lib/renderer/fields.js.map +0 -1
  71. package/lib/renderer/index.d.ts +0 -3
  72. package/lib/renderer/index.js +0 -74
  73. package/lib/renderer/index.js.map +0 -1
  74. package/src/BuiltInFields/InjectedValue.tsx +0 -14
  75. package/src/FormBuilder.tsx +0 -58
  76. package/src/FormDisplayer.tsx +0 -48
  77. package/src/FormToCode/gql/formToGql.spec.ts +0 -75
  78. package/src/FormToCode/gql/index.ts +0 -9
  79. package/src/FormToCode/gql/reducers.ts +0 -50
  80. package/src/FormToCode/gql/resolvers.ts +0 -51
  81. package/src/FormToCode/index.ts +0 -3
  82. package/src/FormToCode/models.ts +0 -9
  83. package/src/FormToCode/zeus/formToZeus.spec.ts +0 -84
  84. package/src/FormToCode/zeus/index.ts +0 -9
  85. package/src/FormToCode/zeus/resolvers.tsx +0 -58
  86. package/src/createWidget.tsx +0 -8
  87. package/src/outsideUse.tsx +0 -156
  88. package/src/renderer/fields.tsx +0 -60
  89. package/src/renderer/index.tsx +0 -53
package/lib/index.d.ts CHANGED
@@ -1,7 +1,2 @@
1
1
  export * from "./models";
2
- export * from "./FormBuilder";
3
- export * from "./FormDisplayer";
4
- export * from "./createWidget";
5
- export * from "./renderer";
6
- export * from "./FormToCode";
7
- export * from "./outsideUse";
2
+ export * from "./render";
package/lib/index.js CHANGED
@@ -15,10 +15,5 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./models"), exports);
18
- __exportStar(require("./FormBuilder"), exports);
19
- __exportStar(require("./FormDisplayer"), exports);
20
- __exportStar(require("./createWidget"), exports);
21
- __exportStar(require("./renderer"), exports);
22
- __exportStar(require("./FormToCode"), exports);
23
- __exportStar(require("./outsideUse"), exports);
18
+ __exportStar(require("./render"), exports);
24
19
  //# sourceMappingURL=index.js.map
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAAyB;AACzB,gDAA8B;AAC9B,kDAAgC;AAChC,iDAA+B;AAC/B,6CAA2B;AAC3B,+CAA6B;AAC7B,+CAA6B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAAyB;AACzB,2CAAyB"}
package/lib/models.d.ts CHANGED
@@ -1,17 +1,6 @@
1
1
  import { ParserField } from 'graphql-js-tree';
2
+ import { VariableDefinitionWithoutLoc } from 'graphql-js-tree/lib/Models/GqlParserTree';
2
3
  import React from 'react';
3
- export declare type FieldComponent = React.FC<PassedFormProps>;
4
- export declare type FormLabelProps = React.FC<PassedFormProps & {
5
- open?: boolean;
6
- setOpen: (b: boolean) => void;
7
- }>;
8
- export declare type WidgetSavedData = {
9
- widget: string;
10
- [x: string]: unknown;
11
- };
12
- export declare type SavedWidgets = {
13
- [selector: string]: WidgetSavedData | undefined;
14
- };
15
4
  export declare const enum Errs {
16
5
  REQUIRED = "REQUIRED",
17
6
  VALUE_IN_ARRAY_REQUIRED = "VALUE_IN_ARRAY_REQUIRED"
@@ -19,76 +8,44 @@ export declare const enum Errs {
19
8
  export declare type Errors = {
20
9
  [selector: string]: string;
21
10
  };
22
- export declare type SavedForms = {
23
- [selector: string]: FormObject;
11
+ export declare type VariableValue = {
12
+ [x: string]: VariableValue;
13
+ } | string | boolean | number | null | undefined | Array<VariableValue>;
14
+ export declare type VarValues = {
15
+ [variableName: string]: VariableValue;
24
16
  };
25
- export declare type ReturnedDictType = any;
26
- export declare type WidgetVariantType = {
27
- name: string;
28
- widget: string;
29
- data: ReturnedDictType;
17
+ export declare type VarFormFile = {
18
+ values: VarValues;
19
+ vars: VariableDefinitionWithoutLoc[];
20
+ };
21
+ export declare type VarFormProps = {
22
+ file: VarFormFile;
23
+ onChange: (file: VarFormFile) => void;
24
+ schema: string;
25
+ shared: Omit<SharedProps, 'nodes'>;
30
26
  };
31
- export declare type PassedFormProps<WidgetData = ReturnedDictType> = {
32
- f: ParserField;
27
+ declare type SharedProps = {
33
28
  nodes: ParserField[];
34
- formObject: FormObject;
35
- onChange: (formObject: FormObject) => void;
36
- changeWidget: (widgetData: WidgetSavedData | undefined, path: string) => void;
37
- required?: boolean;
38
- runQuery: (q: string) => Promise<ReturnedDictType>;
39
- widgetComponents: WidgetType[];
40
- widgetVariants?: WidgetVariantType[];
41
- currentPath: string;
42
- presetValues?: Record<string, any>;
43
- widgets?: SavedWidgets;
44
- widgetData?: WidgetData;
45
- errors?: Errors;
46
- children?: React.ReactNode;
47
29
  components: {
48
- ArrayField: FieldComponent;
49
- ObjectField: FieldComponent;
50
- BooleanField: FieldComponent;
51
- UniversalField: FieldComponent;
52
- NumberField: FieldComponent;
53
- EnumField: FieldComponent;
54
- NullField: FieldComponent;
55
- FormLabel: FormLabelProps;
56
- FormField: FieldComponent;
30
+ ArrayField: NewFieldComponent;
31
+ ObjectField: NewFieldComponent;
32
+ BooleanField: NewFieldComponent;
33
+ UniversalField: NewFieldComponent;
34
+ NumberField: NewFieldComponent;
35
+ EnumField: NewFieldComponent;
36
+ NullField: NewFieldComponent;
37
+ FormLabel: NewFormLabelProps;
38
+ FormField: NewFieldComponent;
57
39
  };
58
40
  };
59
- export declare type FormFile = {
60
- widgets?: SavedWidgets;
61
- forms?: SavedForms;
62
- };
63
- export declare type FormBuilderProps = Omit<PassedFormProps, 'formObject' | 'onChange' | 'f' | 'currentPath' | 'changeWidget' | 'widgets' | 'nodes'> & {
64
- formFile: FormFile;
65
- schema: string;
66
- onChange: (o: FormFile, query: string) => void;
67
- };
68
- export declare type FormDisplayerProps = Omit<PassedFormProps, 'formObject' | 'onChange' | 'f' | 'currentPath' | 'changeWidget' | 'widgets' | 'nodes'> & {
69
- formFile: FormFile;
70
- schema: string;
71
- onChange: (o: FormFile, query: string) => void;
72
- };
73
- export declare type FormLibraryProps = Omit<FormDisplayerProps, 'required' | 'components'>;
74
- export declare type CastToWidgetSettingsPassedForm<WidgetData = ReturnedDictType> = Partial<PassedFormProps<Partial<WidgetData>>> & {
75
- widgetSettingsChange: (data: WidgetData) => void;
76
- };
77
- export declare type WidgetProps<Props> = {
78
- Component: React.FC<PassedFormProps<Props>>;
79
- Settings?: React.FC<CastToWidgetSettingsPassedForm<Props>> | undefined;
80
- Description?: React.FC;
81
- requirements: (props: PassedFormProps) => boolean;
82
- displayName?: string;
83
- name: string;
84
- };
85
- export declare type WidgetType = WidgetProps<ReturnedDictType>;
86
- export declare type FormValue = {
87
- value: FormValue;
88
- } | {
89
- [x: string]: FormValue;
90
- } | string | boolean | number | null | undefined | FormObject | Array<FormValue>;
91
- export declare type FormObject = {
92
- value?: FormValue;
41
+ export declare type NewFieldProps = {
93
42
  node: ParserField;
43
+ value: VariableValue;
44
+ shared: SharedProps;
45
+ mutate: (value: VariableValue) => void;
46
+ children?: React.ReactNode;
47
+ required?: boolean;
94
48
  };
49
+ export declare type NewFieldComponent = React.FC<NewFieldProps>;
50
+ export declare type NewFormLabelProps = React.FC<NewFieldProps>;
51
+ export {};
package/lib/models.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"models.js","sourceRoot":"","sources":["../src/models.ts"],"names":[],"mappings":";;;AAgBA,IAAkB,IAGjB;AAHD,WAAkB,IAAI;IAClB,6BAAqB,CAAA;IACrB,2DAAmD,CAAA;AACvD,CAAC,EAHiB,IAAI,GAAJ,YAAI,KAAJ,YAAI,QAGrB"}
1
+ {"version":3,"file":"models.js","sourceRoot":"","sources":["../src/models.ts"],"names":[],"mappings":";;;AAIA,IAAkB,IAGjB;AAHD,WAAkB,IAAI;IAClB,6BAAqB,CAAA;IACrB,2DAAmD,CAAA;AACvD,CAAC,EAHiB,IAAI,GAAJ,YAAI,KAAJ,YAAI,QAGrB"}
@@ -0,0 +1,3 @@
1
+ import { NewFieldProps } from "../models";
2
+ import React from 'react';
3
+ export declare const Fields: React.FC<NewFieldProps>;
@@ -15,34 +15,29 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  exports.Fields = void 0;
18
- var outsideUse_1 = require("../outsideUse");
19
18
  var graphql_js_tree_1 = require("graphql-js-tree");
20
19
  var react_1 = __importDefault(require("react"));
21
20
  var Fields = function (props) {
22
- var nodes = props.nodes, f = props.f, _a = props.components, ArrayField = _a.ArrayField, ObjectField = _a.ObjectField;
23
- var seekNode = nodes.find(function (n) { return n.name === (0, graphql_js_tree_1.getTypeName)(f.type.fieldType); });
21
+ var node = props.node, _a = props.shared, nodes = _a.nodes, _b = _a.components, ArrayField = _b.ArrayField, ObjectField = _b.ObjectField;
22
+ var seekNode = nodes.find(function (n) { return n.name === (0, graphql_js_tree_1.getTypeName)(node.type.fieldType); });
24
23
  var isInput = (seekNode === null || seekNode === void 0 ? void 0 : seekNode.data.type) === graphql_js_tree_1.TypeDefinition.InputObjectTypeDefinition;
25
- if (f.data.type === graphql_js_tree_1.TypeSystemDefinition.FieldDefinition) {
24
+ if (node.data.type === graphql_js_tree_1.TypeSystemDefinition.FieldDefinition ||
25
+ node.data.type === graphql_js_tree_1.TypeDefinition.InputObjectTypeDefinition) {
26
26
  return react_1.default.createElement(ObjectField, __assign({}, props));
27
27
  }
28
- if (f.type.fieldType.type === graphql_js_tree_1.Options.array) {
28
+ if (node.type.fieldType.type === graphql_js_tree_1.Options.array) {
29
29
  return react_1.default.createElement(ArrayField, __assign({}, props));
30
30
  }
31
31
  if (isInput) {
32
- return react_1.default.createElement(ObjectField, __assign({}, props, { f: seekNode }));
33
- }
34
- var w = (0, outsideUse_1.getWidgetFromProps)(props);
35
- if (w) {
36
- var data = w.data, Component = w.widget.Component;
37
- return react_1.default.createElement(Component, __assign({}, props, { widgetData: data }));
32
+ return react_1.default.createElement(ObjectField, __assign({}, props, { node: seekNode }));
38
33
  }
39
34
  return react_1.default.createElement(ScalarField, __assign({}, props));
40
35
  };
41
36
  exports.Fields = Fields;
42
37
  var ScalarField = function (props) {
43
- var f = props.f, nodes = props.nodes, children = props.children, _a = props.components, BooleanField = _a.BooleanField, NumberField = _a.NumberField, EnumField = _a.EnumField, UniversalField = _a.UniversalField;
44
- var typeName = (0, graphql_js_tree_1.getTypeName)(f.type.fieldType);
45
- var seekNode = nodes.find(function (n) { return n.name === (0, graphql_js_tree_1.getTypeName)(f.type.fieldType); });
38
+ var node = props.node, _a = props.shared, nodes = _a.nodes, _b = _a.components, BooleanField = _b.BooleanField, NumberField = _b.NumberField, EnumField = _b.EnumField, UniversalField = _b.UniversalField;
39
+ var typeName = (0, graphql_js_tree_1.getTypeName)(node.type.fieldType);
40
+ var seekNode = nodes.find(function (n) { return n.name === (0, graphql_js_tree_1.getTypeName)(node.type.fieldType); });
46
41
  if (typeName === graphql_js_tree_1.ScalarTypes.String ||
47
42
  typeName === graphql_js_tree_1.ScalarTypes.ID ||
48
43
  (seekNode === null || seekNode === void 0 ? void 0 : seekNode.data.type) === graphql_js_tree_1.TypeDefinition.ScalarTypeDefinition) {
@@ -57,6 +52,6 @@ var ScalarField = function (props) {
57
52
  if ((seekNode === null || seekNode === void 0 ? void 0 : seekNode.data.type) === graphql_js_tree_1.TypeDefinition.EnumTypeDefinition) {
58
53
  return react_1.default.createElement(EnumField, __assign({}, props));
59
54
  }
60
- return react_1.default.createElement(react_1.default.Fragment, null, children);
55
+ return react_1.default.createElement(react_1.default.Fragment, null);
61
56
  };
62
57
  //# sourceMappingURL=fields.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fields.js","sourceRoot":"","sources":["../../src/render/fields.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AACA,mDAA0G;AAC1G,gDAA0B;AAEnB,IAAM,MAAM,GAA4B,UAAC,KAAK;IAE7C,IAAA,IAAI,GAKJ,KAAK,KALD,EACJ,KAIA,KAAK,OADJ,EAFG,KAAK,WAAA,EACL,kBAAuC,EAAzB,UAAU,gBAAA,EAAE,WAAW,iBACxC,CACK;IACV,IAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,UAAC,CAAC,IAAK,OAAA,CAAC,CAAC,IAAI,KAAK,IAAA,6BAAW,EAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAA3C,CAA2C,CAAC,CAAC;IAChF,IAAM,OAAO,GAAG,CAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,IAAI,CAAC,IAAI,MAAK,gCAAc,CAAC,yBAAyB,CAAC;IACjF,IACI,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,sCAAoB,CAAC,eAAe;QACvD,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,gCAAc,CAAC,yBAAyB,EAC7D;QACE,OAAO,8BAAC,WAAW,eAAK,KAAK,EAAI,CAAC;KACrC;IACD,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,KAAK,yBAAO,CAAC,KAAK,EAAE;QAC5C,OAAO,8BAAC,UAAU,eAAK,KAAK,EAAI,CAAC;KACpC;IACD,IAAI,OAAO,EAAE;QACT,OAAO,8BAAC,WAAW,eAAK,KAAK,IAAE,IAAI,EAAE,QAAQ,IAAI,CAAC;KACrD;IACD,OAAO,8BAAC,WAAW,eAAK,KAAK,EAAI,CAAC;AACtC,CAAC,CAAC;AAvBW,QAAA,MAAM,UAuBjB;AAEF,IAAM,WAAW,GAA4B,UAAC,KAAK;IAE3C,IAAA,IAAI,GAKJ,KAAK,KALD,EACJ,KAIA,KAAK,OADJ,EAFG,KAAK,WAAA,EACL,kBAAoE,EAAtD,YAAY,kBAAA,EAAE,WAAW,iBAAA,EAAE,SAAS,eAAA,EAAE,cAAc,oBACrE,CACK;IACV,IAAM,QAAQ,GAAG,IAAA,6BAAW,EAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAClD,IAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,UAAC,CAAC,IAAK,OAAA,CAAC,CAAC,IAAI,KAAK,IAAA,6BAAW,EAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAA3C,CAA2C,CAAC,CAAC;IAChF,IACI,QAAQ,KAAK,6BAAW,CAAC,MAAM;QAC/B,QAAQ,KAAK,6BAAW,CAAC,EAAE;QAC3B,CAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,IAAI,CAAC,IAAI,MAAK,gCAAc,CAAC,oBAAoB,EAC7D;QACE,OAAO,8BAAC,cAAc,eAAK,KAAK,EAAI,CAAC;KACxC;IAED,IAAI,QAAQ,KAAK,6BAAW,CAAC,KAAK,IAAI,QAAQ,KAAK,6BAAW,CAAC,GAAG,EAAE;QAChE,OAAO,8BAAC,WAAW,eAAK,KAAK,EAAI,CAAC;KACrC;IACD,IAAI,QAAQ,KAAK,6BAAW,CAAC,OAAO,EAAE;QAClC,OAAO,8BAAC,YAAY,eAAK,KAAK,EAAI,CAAC;KACtC;IACD,IAAI,CAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,IAAI,CAAC,IAAI,MAAK,gCAAc,CAAC,kBAAkB,EAAE;QAC3D,OAAO,8BAAC,SAAS,eAAK,KAAK,EAAI,CAAC;KACnC;IACD,OAAO,6DAAK,CAAC;AACjB,CAAC,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { NewFieldProps, VarFormProps } from "../models";
2
+ import React from 'react';
3
+ export declare const Render: React.FC<NewFieldProps>;
4
+ export declare const VariableForm: React.FC<VarFormProps>;
@@ -0,0 +1,56 @@
1
+ "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ var __importDefault = (this && this.__importDefault) || function (mod) {
14
+ return (mod && mod.__esModule) ? mod : { "default": mod };
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.VariableForm = exports.Render = void 0;
18
+ var fields_1 = require("./fields");
19
+ var graphql_js_tree_1 = require("graphql-js-tree");
20
+ var react_1 = __importDefault(require("react"));
21
+ var Render = function (props) {
22
+ var _a = props.shared.components, FormLabel = _a.FormLabel, FormField = _a.FormField;
23
+ return (react_1.default.createElement(FormField, __assign({}, props),
24
+ react_1.default.createElement(FormLabel, __assign({}, props)),
25
+ react_1.default.createElement(fields_1.Fields, __assign({}, props))));
26
+ };
27
+ exports.Render = Render;
28
+ var VariableForm = function (props) {
29
+ var _a = props.file, values = _a.values, vars = _a.vars, onChange = props.onChange, schema = props.schema, shared = props.shared;
30
+ var nodes = graphql_js_tree_1.Parser.parseAddExtensions(schema).nodes;
31
+ return (react_1.default.createElement(react_1.default.Fragment, null, vars.map(function (v) {
32
+ var value = values[v.name];
33
+ var node = nodes.find(function (n) { return n.name === v.type; }) || {
34
+ name: v.name,
35
+ args: [],
36
+ data: {
37
+ type: v.type,
38
+ },
39
+ directives: [],
40
+ id: (0, graphql_js_tree_1.generateNodeId)(v.name, v.type, []),
41
+ interfaces: [],
42
+ type: {
43
+ fieldType: (0, graphql_js_tree_1.decompileType)(v.type),
44
+ },
45
+ };
46
+ return (react_1.default.createElement(exports.Render, { node: node, shared: __assign(__assign({}, shared), { nodes: nodes }), mutate: function (val) {
47
+ var _a;
48
+ return onChange({
49
+ values: __assign(__assign({}, values), (_a = {}, _a[v.name] = val, _a)),
50
+ vars: vars,
51
+ });
52
+ }, value: value, key: v.name }));
53
+ })));
54
+ };
55
+ exports.VariableForm = VariableForm;
56
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/render/index.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AACA,mCAAyC;AACzC,mDAAqF;AACrF,gDAA0B;AAEnB,IAAM,MAAM,GAA4B,UAAC,KAAK;IAGzC,IAAA,KAEJ,KAAK,kBAFmC,EAAtB,SAAS,eAAA,EAAE,SAAS,eAAE,CAElC;IACV,OAAO,CACH,8BAAC,SAAS,eAAK,KAAK;QAChB,8BAAC,SAAS,eAAK,KAAK,EAAI;QACxB,8BAAC,eAAM,eAAK,KAAK,EAAI,CACb,CACf,CAAC;AACN,CAAC,CAAC;AAZW,QAAA,MAAM,UAYjB;AAEK,IAAM,YAAY,GAA2B,UAAC,KAAK;IAElD,IAAA,KAIA,KAAK,KAJiB,EAAd,MAAM,YAAA,EAAE,IAAI,UAAA,EACpB,QAAQ,GAGR,KAAK,SAHG,EACR,MAAM,GAEN,KAAK,OAFC,EACN,MAAM,GACN,KAAK,OADC,CACA;IACF,IAAA,KAAK,GAAK,wBAAM,CAAC,kBAAkB,CAAC,MAAM,CAAC,MAAtC,CAAuC;IACpD,OAAO,CACH,8DACK,IAAI,CAAC,GAAG,CAAC,UAAC,CAAC;QACR,IAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAC7B,IAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,UAAC,CAAC,IAAK,OAAA,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,EAAjB,CAAiB,CAAC,IAAI;YACjD,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,IAAI,EAAE,EAAE;YACR,IAAI,EAAE;gBACF,IAAI,EAAE,CAAC,CAAC,IAAmB;aAC9B;YACD,UAAU,EAAE,EAAE;YACd,EAAE,EAAE,IAAA,gCAAc,EAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAmB,EAAE,EAAE,CAAC;YACrD,UAAU,EAAE,EAAE;YACd,IAAI,EAAE;gBACF,SAAS,EAAE,IAAA,+BAAa,EAAC,CAAC,CAAC,IAAI,CAAC;aACnC;SACJ,CAAC;QACF,OAAO,CACH,8BAAC,cAAM,IACH,IAAI,EAAE,IAAI,EACV,MAAM,wBACC,MAAM,KACT,KAAK,OAAA,KAET,MAAM,EAAE,UAAC,GAAG;;gBACR,OAAA,QAAQ,CAAC;oBACL,MAAM,wBAAO,MAAM,gBAAG,CAAC,CAAC,IAAI,IAAG,GAAG,MAAE;oBACpC,IAAI,MAAA;iBACP,CAAC;YAHF,CAGE,EAEN,KAAK,EAAE,KAAK,EACZ,GAAG,EAAE,CAAC,CAAC,IAAI,GACb,CACL,CAAC;IACN,CAAC,CAAC,CACH,CACN,CAAC;AACN,CAAC,CAAC;AA7CW,QAAA,YAAY,gBA6CvB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "graphql-form",
3
- "version": "0.1.6",
3
+ "version": "0.1.8",
4
4
  "description": "Easy form creation with GraphQL Editor and React",
5
5
  "main": "lib/index.js",
6
6
  "scripts": {
@@ -23,10 +23,10 @@
23
23
  "license": "MIT",
24
24
  "homepage": "https://form.graphqleditor.com",
25
25
  "peerDependencies": {
26
- "react": ">=18",
27
- "react-dom": ">=18"
26
+ "react": ">=16.8.0",
27
+ "react-dom": ">=16.8.0"
28
28
  },
29
29
  "dependencies": {
30
- "graphql-js-tree": "^0.2.5"
30
+ "graphql-js-tree": "^0.3.2"
31
31
  }
32
32
  }
package/src/index.tsx CHANGED
@@ -1,7 +1,2 @@
1
1
  export * from '@/models';
2
- export * from '@/FormBuilder';
3
- export * from '@/FormDisplayer';
4
- export * from '@/createWidget';
5
- export * from '@/renderer';
6
- export * from '@/FormToCode';
7
- export * from '@/outsideUse';
2
+ export * from '@/render';
package/src/models.ts CHANGED
@@ -1,19 +1,7 @@
1
1
  import { ParserField } from 'graphql-js-tree';
2
+ import { VariableDefinitionWithoutLoc } from 'graphql-js-tree/lib/Models/GqlParserTree';
2
3
  import React from 'react';
3
4
 
4
- export type FieldComponent = React.FC<PassedFormProps>;
5
-
6
- export type FormLabelProps = React.FC<PassedFormProps & { open?: boolean; setOpen: (b: boolean) => void }>;
7
-
8
- export type WidgetSavedData = {
9
- widget: string;
10
- [x: string]: unknown;
11
- };
12
-
13
- export type SavedWidgets = {
14
- [selector: string]: WidgetSavedData | undefined;
15
- };
16
-
17
5
  export const enum Errs {
18
6
  REQUIRED = 'REQUIRED',
19
7
  VALUE_IN_ARRAY_REQUIRED = 'VALUE_IN_ARRAY_REQUIRED',
@@ -23,102 +11,57 @@ export type Errors = {
23
11
  [selector: string]: string;
24
12
  };
25
13
 
26
- export type SavedForms = {
27
- [selector: string]: FormObject;
28
- };
29
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
30
- export type ReturnedDictType = any;
14
+ // New implementation
31
15
 
32
- export type WidgetVariantType = {
33
- name: string;
34
- widget: string;
35
- data: ReturnedDictType;
36
- };
16
+ export type VariableValue =
17
+ | {
18
+ [x: string]: VariableValue;
19
+ }
20
+ | string
21
+ | boolean
22
+ | number
23
+ | null
24
+ | undefined
25
+ | Array<VariableValue>;
37
26
 
38
- export type PassedFormProps<WidgetData = ReturnedDictType> = {
39
- f: ParserField;
40
- nodes: ParserField[];
41
- formObject: FormObject;
42
- onChange: (formObject: FormObject) => void;
43
- changeWidget: (widgetData: WidgetSavedData | undefined, path: string) => void;
44
- required?: boolean;
45
- runQuery: (q: string) => Promise<ReturnedDictType>;
46
- widgetComponents: WidgetType[];
47
- widgetVariants?: WidgetVariantType[];
48
- currentPath: string;
49
- presetValues?: Record<string, any>;
50
- widgets?: SavedWidgets;
51
- widgetData?: WidgetData;
52
- errors?: Errors;
53
- children?: React.ReactNode;
54
- components: {
55
- ArrayField: FieldComponent;
56
- ObjectField: FieldComponent;
57
- BooleanField: FieldComponent;
58
- UniversalField: FieldComponent;
59
- NumberField: FieldComponent;
60
- EnumField: FieldComponent;
61
- NullField: FieldComponent;
62
- FormLabel: FormLabelProps;
63
- FormField: FieldComponent;
64
- };
27
+ export type VarValues = {
28
+ [variableName: string]: VariableValue;
65
29
  };
66
- export type FormFile = {
67
- widgets?: SavedWidgets;
68
- forms?: SavedForms;
30
+ export type VarFormFile = {
31
+ values: VarValues;
32
+ vars: VariableDefinitionWithoutLoc[];
69
33
  };
70
34
 
71
- export type FormBuilderProps = Omit<
72
- PassedFormProps,
73
- 'formObject' | 'onChange' | 'f' | 'currentPath' | 'changeWidget' | 'widgets' | 'nodes'
74
- > & {
75
- formFile: FormFile;
35
+ export type VarFormProps = {
36
+ file: VarFormFile;
37
+ onChange: (file: VarFormFile) => void;
76
38
  schema: string;
77
- onChange: (o: FormFile, query: string) => void;
39
+ shared: Omit<SharedProps, 'nodes'>;
78
40
  };
79
41
 
80
- export type FormDisplayerProps = Omit<
81
- PassedFormProps,
82
- 'formObject' | 'onChange' | 'f' | 'currentPath' | 'changeWidget' | 'widgets' | 'nodes'
83
- > & {
84
- formFile: FormFile;
85
- schema: string;
86
- onChange: (o: FormFile, query: string) => void;
87
- };
88
-
89
- export type FormLibraryProps = Omit<FormDisplayerProps, 'required' | 'components'>;
90
-
91
- export type CastToWidgetSettingsPassedForm<WidgetData = ReturnedDictType> = Partial<
92
- PassedFormProps<Partial<WidgetData>>
93
- > & {
94
- widgetSettingsChange: (data: WidgetData) => void;
95
- };
96
-
97
- export type WidgetProps<Props> = {
98
- Component: React.FC<PassedFormProps<Props>>;
99
- Settings?: React.FC<CastToWidgetSettingsPassedForm<Props>> | undefined;
100
- Description?: React.FC;
101
- requirements: (props: PassedFormProps) => boolean;
102
- displayName?: string;
103
- name: string;
42
+ type SharedProps = {
43
+ nodes: ParserField[];
44
+ components: {
45
+ ArrayField: NewFieldComponent;
46
+ ObjectField: NewFieldComponent;
47
+ BooleanField: NewFieldComponent;
48
+ UniversalField: NewFieldComponent;
49
+ NumberField: NewFieldComponent;
50
+ EnumField: NewFieldComponent;
51
+ NullField: NewFieldComponent;
52
+ FormLabel: NewFormLabelProps;
53
+ FormField: NewFieldComponent;
54
+ };
104
55
  };
105
56
 
106
- export type WidgetType = WidgetProps<ReturnedDictType>;
107
-
108
- export type FormValue =
109
- | { value: FormValue }
110
- | {
111
- [x: string]: FormValue;
112
- }
113
- | string
114
- | boolean
115
- | number
116
- | null
117
- | undefined
118
- | FormObject
119
- | Array<FormValue>;
120
-
121
- export type FormObject = {
122
- value?: FormValue;
57
+ export type NewFieldProps = {
123
58
  node: ParserField;
59
+ value: VariableValue;
60
+ shared: SharedProps;
61
+ mutate: (value: VariableValue) => void;
62
+ children?: React.ReactNode;
63
+ required?: boolean;
124
64
  };
65
+ export type NewFieldComponent = React.FC<NewFieldProps>;
66
+
67
+ export type NewFormLabelProps = React.FC<NewFieldProps>;
@@ -0,0 +1,58 @@
1
+ import { NewFieldProps } from '@/models';
2
+ import { getTypeName, Options, ScalarTypes, TypeDefinition, TypeSystemDefinition } from 'graphql-js-tree';
3
+ import React from 'react';
4
+
5
+ export const Fields: React.FC<NewFieldProps> = (props) => {
6
+ const {
7
+ node,
8
+ shared: {
9
+ nodes,
10
+ components: { ArrayField, ObjectField },
11
+ },
12
+ } = props;
13
+ const seekNode = nodes.find((n) => n.name === getTypeName(node.type.fieldType));
14
+ const isInput = seekNode?.data.type === TypeDefinition.InputObjectTypeDefinition;
15
+ if (
16
+ node.data.type === TypeSystemDefinition.FieldDefinition ||
17
+ node.data.type === TypeDefinition.InputObjectTypeDefinition
18
+ ) {
19
+ return <ObjectField {...props} />;
20
+ }
21
+ if (node.type.fieldType.type === Options.array) {
22
+ return <ArrayField {...props} />;
23
+ }
24
+ if (isInput) {
25
+ return <ObjectField {...props} node={seekNode} />;
26
+ }
27
+ return <ScalarField {...props} />;
28
+ };
29
+
30
+ const ScalarField: React.FC<NewFieldProps> = (props) => {
31
+ const {
32
+ node,
33
+ shared: {
34
+ nodes,
35
+ components: { BooleanField, NumberField, EnumField, UniversalField },
36
+ },
37
+ } = props;
38
+ const typeName = getTypeName(node.type.fieldType);
39
+ const seekNode = nodes.find((n) => n.name === getTypeName(node.type.fieldType));
40
+ if (
41
+ typeName === ScalarTypes.String ||
42
+ typeName === ScalarTypes.ID ||
43
+ seekNode?.data.type === TypeDefinition.ScalarTypeDefinition
44
+ ) {
45
+ return <UniversalField {...props} />;
46
+ }
47
+
48
+ if (typeName === ScalarTypes.Float || typeName === ScalarTypes.Int) {
49
+ return <NumberField {...props} />;
50
+ }
51
+ if (typeName === ScalarTypes.Boolean) {
52
+ return <BooleanField {...props} />;
53
+ }
54
+ if (seekNode?.data.type === TypeDefinition.EnumTypeDefinition) {
55
+ return <EnumField {...props} />;
56
+ }
57
+ return <></>;
58
+ };
@@ -0,0 +1,65 @@
1
+ import { NewFieldProps, VarFormProps } from '@/models';
2
+ import { Fields } from '@/render/fields';
3
+ import { Parser, ScalarTypes, generateNodeId, decompileType } from 'graphql-js-tree';
4
+ import React from 'react';
5
+
6
+ export const Render: React.FC<NewFieldProps> = (props) => {
7
+ const {
8
+ shared: {
9
+ components: { FormLabel, FormField },
10
+ },
11
+ } = props;
12
+ return (
13
+ <FormField {...props}>
14
+ <FormLabel {...props} />
15
+ <Fields {...props} />
16
+ </FormField>
17
+ );
18
+ };
19
+
20
+ export const VariableForm: React.FC<VarFormProps> = (props) => {
21
+ const {
22
+ file: { values, vars },
23
+ onChange,
24
+ schema,
25
+ shared,
26
+ } = props;
27
+ const { nodes } = Parser.parseAddExtensions(schema);
28
+ return (
29
+ <>
30
+ {vars.map((v) => {
31
+ const value = values[v.name];
32
+ const node = nodes.find((n) => n.name === v.type) || {
33
+ name: v.name,
34
+ args: [],
35
+ data: {
36
+ type: v.type as ScalarTypes,
37
+ },
38
+ directives: [],
39
+ id: generateNodeId(v.name, v.type as ScalarTypes, []),
40
+ interfaces: [],
41
+ type: {
42
+ fieldType: decompileType(v.type),
43
+ },
44
+ };
45
+ return (
46
+ <Render
47
+ node={node}
48
+ shared={{
49
+ ...shared,
50
+ nodes,
51
+ }}
52
+ mutate={(val) =>
53
+ onChange({
54
+ values: { ...values, [v.name]: val },
55
+ vars,
56
+ })
57
+ }
58
+ value={value}
59
+ key={v.name}
60
+ />
61
+ );
62
+ })}
63
+ </>
64
+ );
65
+ };
package/tsconfig.json CHANGED
@@ -16,5 +16,6 @@
16
16
  "skipLibCheck": true /* Skip type checking of declaration files. */,
17
17
  "forceConsistentCasingInFileNames": true /* Disallow inconsistently-cased references to the same file. */,
18
18
  "composite": true
19
- }
20
- }
19
+ },
20
+ "include": ["src/**/*"]
21
+ }
@@ -1,5 +0,0 @@
1
- import { PassedFormProps } from "../models";
2
- import React from 'react';
3
- export declare const InjectedValue: React.FC<PassedFormProps<{
4
- value: any;
5
- }>>;