graphql-form 0.0.13 → 0.0.16

Sign up to get free protection for your applications and to get access to all the features.
package/lib/index.d.ts CHANGED
@@ -4,3 +4,4 @@ export * from "./FormDisplayer";
4
4
  export * from "./createWidget";
5
5
  export * from "./renderer";
6
6
  export * from "./FormToCode";
7
+ export * from "./outsideUse";
package/lib/index.js CHANGED
@@ -20,4 +20,5 @@ __exportStar(require("./FormDisplayer"), exports);
20
20
  __exportStar(require("./createWidget"), exports);
21
21
  __exportStar(require("./renderer"), exports);
22
22
  __exportStar(require("./FormToCode"), exports);
23
+ __exportStar(require("./outsideUse"), exports);
23
24
  //# 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"}
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"}
package/lib/models.d.ts CHANGED
@@ -7,12 +7,18 @@ export declare type FormLabelProps = React.FC<PassedFormProps & {
7
7
  }>;
8
8
  export declare type WidgetSavedData = {
9
9
  widget: string;
10
- hideLabel?: boolean;
11
10
  [x: string]: unknown;
12
11
  };
13
12
  export declare type SavedWidgets = {
14
13
  [selector: string]: WidgetSavedData | undefined;
15
14
  };
15
+ export declare const enum Errs {
16
+ REQUIRED = "REQUIRED",
17
+ VALUE_IN_ARRAY_REQUIRED = "VALUE_IN_ARRAY_REQUIRED"
18
+ }
19
+ export declare type Errors = {
20
+ [selector: string]: string;
21
+ };
16
22
  export declare type SavedForms = {
17
23
  [selector: string]: FormObject;
18
24
  };
@@ -76,5 +82,6 @@ export declare type FormValue = {
76
82
  } | string | boolean | number | null | undefined | FormObject | Array<FormValue>;
77
83
  export declare type FormObject = {
78
84
  value?: FormValue;
85
+ errors?: string[];
79
86
  node: ParserField;
80
87
  };
package/lib/models.js CHANGED
@@ -1,3 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Errs = void 0;
4
+ var Errs;
5
+ (function (Errs) {
6
+ Errs["REQUIRED"] = "REQUIRED";
7
+ Errs["VALUE_IN_ARRAY_REQUIRED"] = "VALUE_IN_ARRAY_REQUIRED";
8
+ })(Errs = exports.Errs || (exports.Errs = {}));
3
9
  //# sourceMappingURL=models.js.map
package/lib/models.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"models.js","sourceRoot":"","sources":["../src/models.ts"],"names":[],"mappings":""}
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"}
@@ -0,0 +1,10 @@
1
+ import { Errs, FormFile, FormObject, PassedFormProps } from "./models";
2
+ import { ParserField } from 'graphql-js-tree';
3
+ export declare const getWidgetFromProps: (props: PassedFormProps) => {
4
+ data: any;
5
+ widget: import("./models").WidgetType;
6
+ } | undefined;
7
+ export declare const validateValue: (f: FormObject, nodes: ParserField[], errors: Record<Errs, string>, pushErrors: (isValid: boolean) => void) => FormObject;
8
+ export declare const validateForm: (v: FormFile, nodes: ParserField[], errors: Record<Errs, string>) => readonly [FormFile, true];
9
+ export declare const eraseValue: (f: FormObject, nodes: ParserField[]) => FormObject;
10
+ export declare const eraseForm: (v: FormFile, nodes: ParserField[]) => FormFile;
@@ -0,0 +1,135 @@
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
+ Object.defineProperty(exports, "__esModule", { value: true });
14
+ exports.eraseForm = exports.eraseValue = exports.validateForm = exports.validateValue = exports.getWidgetFromProps = void 0;
15
+ var models_1 = require("./models");
16
+ var graphql_js_tree_1 = require("graphql-js-tree");
17
+ var getWidgetFromProps = function (props) {
18
+ var _a, _b;
19
+ var w = (_a = props.widgets) === null || _a === void 0 ? void 0 : _a[props.currentPath];
20
+ var FoundBasicWidget = props.widgetComponents.find(function (wc) { return wc.name === (w === null || w === void 0 ? void 0 : w.widget); });
21
+ if (!FoundBasicWidget) {
22
+ var widgetVariant_1 = (_b = props.widgetVariants) === null || _b === void 0 ? void 0 : _b.find(function (wv) { return wv.name === (w === null || w === void 0 ? void 0 : w.widget); });
23
+ if (!widgetVariant_1) {
24
+ return;
25
+ }
26
+ var FoundVariantWidget = props.widgetComponents.find(function (wc) { return wc.name === widgetVariant_1.widget; });
27
+ if (!FoundVariantWidget) {
28
+ return;
29
+ }
30
+ return {
31
+ data: __assign({ widget: widgetVariant_1.widget }, widgetVariant_1.data),
32
+ widget: FoundVariantWidget,
33
+ };
34
+ }
35
+ return {
36
+ data: w,
37
+ widget: FoundBasicWidget,
38
+ };
39
+ };
40
+ exports.getWidgetFromProps = getWidgetFromProps;
41
+ var validateValue = function (f, nodes, errors, pushErrors) {
42
+ var value = f.value, node = f.node;
43
+ var seekNode = nodes.find(function (n) { return n.name === (0, graphql_js_tree_1.getTypeName)(node.type.fieldType); });
44
+ var errs;
45
+ if (!seekNode ||
46
+ (seekNode === null || seekNode === void 0 ? void 0 : seekNode.data.type) === graphql_js_tree_1.TypeDefinition.EnumTypeDefinition ||
47
+ (seekNode === null || seekNode === void 0 ? void 0 : seekNode.data.type) === graphql_js_tree_1.TypeDefinition.ScalarTypeDefinition) {
48
+ if (node.type.fieldType.type === graphql_js_tree_1.Options.required) {
49
+ if (!value) {
50
+ errs = [errors[models_1.Errs.REQUIRED]];
51
+ }
52
+ if (node.type.fieldType.nest.type === graphql_js_tree_1.Options.array &&
53
+ node.type.fieldType.nest.nest.type === graphql_js_tree_1.Options.required) {
54
+ if (Array.isArray(value)) {
55
+ for (var _i = 0, value_1 = value; _i < value_1.length; _i++) {
56
+ var v = value_1[_i];
57
+ if (!v) {
58
+ errs = [errors[models_1.Errs.VALUE_IN_ARRAY_REQUIRED]];
59
+ }
60
+ }
61
+ }
62
+ }
63
+ }
64
+ }
65
+ pushErrors(!(errs === null || errs === void 0 ? void 0 : errs.length));
66
+ if ((seekNode || node.data.type === graphql_js_tree_1.TypeSystemDefinition.FieldDefinition) && value) {
67
+ return __assign(__assign({}, f), { value: Object.fromEntries(Object.entries(value).map(function (_a) {
68
+ var k = _a[0], v = _a[1];
69
+ return [k, (0, exports.validateValue)(v, nodes, errors, pushErrors)];
70
+ })), errors: errs });
71
+ }
72
+ return __assign(__assign({}, f), { errors: errs });
73
+ };
74
+ exports.validateValue = validateValue;
75
+ var validateForm = function (v, nodes, errors) {
76
+ var isValid = true;
77
+ if (!v.forms)
78
+ return [v, isValid];
79
+ var forms = Object.entries(v.forms)
80
+ .map(function (_a) {
81
+ var k = _a[0], val = _a[1];
82
+ return [
83
+ k,
84
+ (0, exports.validateValue)(val, nodes, errors, function (valid) {
85
+ if (!valid) {
86
+ isValid = valid;
87
+ }
88
+ }),
89
+ ];
90
+ })
91
+ .reduce(function (a, _a) {
92
+ var _b;
93
+ var k = _a[0], val = _a[1];
94
+ return (__assign(__assign({}, a), (_b = {}, _b[k] = val, _b)));
95
+ }, {});
96
+ return [
97
+ __assign(__assign({}, v), { forms: forms }),
98
+ isValid,
99
+ ];
100
+ };
101
+ exports.validateForm = validateForm;
102
+ var eraseValue = function (f, nodes) {
103
+ var value = f.value, node = f.node;
104
+ var seekNode = nodes.find(function (n) { return n.name === (0, graphql_js_tree_1.getTypeName)(node.type.fieldType); });
105
+ if (!seekNode ||
106
+ (seekNode === null || seekNode === void 0 ? void 0 : seekNode.data.type) === graphql_js_tree_1.TypeDefinition.EnumTypeDefinition ||
107
+ (seekNode === null || seekNode === void 0 ? void 0 : seekNode.data.type) === graphql_js_tree_1.TypeDefinition.ScalarTypeDefinition) {
108
+ return __assign(__assign({}, f), { value: undefined });
109
+ }
110
+ if ((seekNode || node.data.type === graphql_js_tree_1.TypeSystemDefinition.FieldDefinition) && value) {
111
+ return __assign(__assign({}, f), { value: Object.fromEntries(Object.entries(value).map(function (_a) {
112
+ var k = _a[0], v = _a[1];
113
+ return [k, (0, exports.eraseValue)(v, nodes)];
114
+ })) });
115
+ }
116
+ return __assign(__assign({}, f), { value: undefined });
117
+ };
118
+ exports.eraseValue = eraseValue;
119
+ var eraseForm = function (v, nodes) {
120
+ if (!v.forms)
121
+ return v;
122
+ var forms = Object.entries(v.forms)
123
+ .map(function (_a) {
124
+ var k = _a[0], val = _a[1];
125
+ return [k, (0, exports.eraseValue)(val, nodes)];
126
+ })
127
+ .reduce(function (a, _a) {
128
+ var _b;
129
+ var k = _a[0], val = _a[1];
130
+ return (__assign(__assign({}, a), (_b = {}, _b[k] = val, _b)));
131
+ }, {});
132
+ return __assign(__assign({}, v), { forms: forms });
133
+ };
134
+ exports.eraseForm = eraseForm;
135
+ //# sourceMappingURL=outsideUse.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"outsideUse.js","sourceRoot":"","sources":["../src/outsideUse.tsx"],"names":[],"mappings":"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"}
@@ -15,11 +15,11 @@ 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");
18
19
  var graphql_js_tree_1 = require("graphql-js-tree");
19
20
  var react_1 = __importDefault(require("react"));
20
21
  var Fields = function (props) {
21
- var _a, _b;
22
- var nodes = props.nodes, widgetComponents = props.widgetComponents, f = props.f, widgets = props.widgets, widgetVariants = props.widgetVariants, _c = props.components, ArrayField = _c.ArrayField, ObjectField = _c.ObjectField;
22
+ var nodes = props.nodes, f = props.f, _a = props.components, ArrayField = _a.ArrayField, ObjectField = _a.ObjectField;
23
23
  var seekNode = nodes.find(function (n) { return n.name === (0, graphql_js_tree_1.getTypeName)(f.type.fieldType); });
24
24
  var isInput = (seekNode === null || seekNode === void 0 ? void 0 : seekNode.data.type) === graphql_js_tree_1.TypeDefinition.InputObjectTypeDefinition;
25
25
  if (f.data.type === graphql_js_tree_1.TypeSystemDefinition.FieldDefinition) {
@@ -31,21 +31,10 @@ var Fields = function (props) {
31
31
  if (isInput) {
32
32
  return react_1.default.createElement(ObjectField, __assign({}, props, { f: seekNode }));
33
33
  }
34
- var widget = widgets === null || widgets === void 0 ? void 0 : widgets[props.currentPath];
35
- if (widget) {
36
- var WidgetComponent = (_a = widgetComponents.find(function (wc) { return wc.name === widget.widget; })) === null || _a === void 0 ? void 0 : _a.Component;
37
- if (!WidgetComponent) {
38
- var widgetVariant_1 = widgetVariants === null || widgetVariants === void 0 ? void 0 : widgetVariants.find(function (wv) { return wv.name === widget.widget; });
39
- if (!widgetVariant_1) {
40
- return react_1.default.createElement(react_1.default.Fragment, null);
41
- }
42
- var WidgetComponent_1 = (_b = widgetComponents.find(function (wc) { return wc.name === widgetVariant_1.widget; })) === null || _b === void 0 ? void 0 : _b.Component;
43
- if (!WidgetComponent_1) {
44
- return react_1.default.createElement(react_1.default.Fragment, null);
45
- }
46
- return (react_1.default.createElement(WidgetComponent_1, __assign({}, props, { widgetData: __assign({ widget: widgetVariant_1.widget }, widgetVariant_1.data) })));
47
- }
48
- return react_1.default.createElement(WidgetComponent, __assign({}, props, { widgetData: widget }));
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 }));
49
38
  }
50
39
  return react_1.default.createElement(ScalarField, __assign({}, props));
51
40
  };
@@ -1 +1 @@
1
- {"version":3,"file":"fields.js","sourceRoot":"","sources":["../../src/renderer/fields.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fields.js","sourceRoot":"","sources":["../../src/renderer/fields.tsx"],"names":[],"mappings":"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"}
@@ -50,19 +50,17 @@ var fields_1 = require("./fields");
50
50
  var graphql_js_tree_1 = require("graphql-js-tree");
51
51
  var react_1 = __importStar(require("react"));
52
52
  var Renderer = function (props) {
53
- var _a;
54
- var formObject = props.formObject, f = props.f, nodes = props.nodes, widgets = props.widgets, _b = props.components, NullField = _b.NullField, FormLabel = _b.FormLabel, FormField = _b.FormField;
53
+ var formObject = props.formObject, f = props.f, nodes = props.nodes, _a = props.components, NullField = _a.NullField, FormLabel = _a.FormLabel, FormField = _a.FormField;
55
54
  var children = props.children, allProps = __rest(props, ["children"]);
56
55
  var seekNode = nodes.find(function (n) { return n.name === (0, graphql_js_tree_1.getTypeName)(f.type.fieldType); });
57
56
  var isInput = (seekNode === null || seekNode === void 0 ? void 0 : seekNode.data.type) === graphql_js_tree_1.TypeDefinition.InputObjectTypeDefinition;
58
57
  var canBeOpened = props.f.data.type === graphql_js_tree_1.TypeSystemDefinition.FieldDefinition || isInput;
59
- var _c = (0, react_1.useState)(props.f.data.type === graphql_js_tree_1.TypeSystemDefinition.FieldDefinition || props.required), open = _c[0], setOpen = _c[1];
58
+ var _b = (0, react_1.useState)(props.f.data.type === graphql_js_tree_1.TypeSystemDefinition.FieldDefinition || props.required), open = _b[0], setOpen = _b[1];
60
59
  if (f.type.fieldType.type === graphql_js_tree_1.Options.required) {
61
60
  return (react_1.default.createElement(exports.Renderer, __assign({}, props, { f: __assign(__assign({}, f), { type: __assign(__assign({}, f.type), { fieldType: __assign({}, f.type.fieldType.nest) }) }), required: true })));
62
61
  }
63
- var showLabel = !((_a = widgets === null || widgets === void 0 ? void 0 : widgets[props.currentPath]) === null || _a === void 0 ? void 0 : _a.hideLabel);
64
62
  return (react_1.default.createElement(FormField, __assign({}, allProps),
65
- showLabel && react_1.default.createElement(FormLabel, __assign({}, allProps, { open: open, setOpen: setOpen, children: children })),
63
+ react_1.default.createElement(FormLabel, __assign({}, allProps, { open: open, setOpen: setOpen, children: children })),
66
64
  formObject.value === null ? (react_1.default.createElement(NullField, __assign({}, allProps))) : (react_1.default.createElement(react_1.default.Fragment, null, (!canBeOpened || open) && react_1.default.createElement(fields_1.Fields, __assign({}, allProps))))));
67
65
  };
68
66
  exports.Renderer = Renderer;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/renderer/index.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,mCAA2C;AAC3C,mDAA6F;AAC7F,6CAAwC;AAEjC,IAAM,QAAQ,GAA8B,UAAC,KAAK;;IAEjD,IAAA,UAAU,GAKV,KAAK,WALK,EACV,CAAC,GAID,KAAK,EAJJ,EACD,KAAK,GAGL,KAAK,MAHA,EACL,OAAO,GAEP,KAAK,QAFE,EACP,KACA,KAAK,WAD0C,EAAjC,SAAS,eAAA,EAAE,SAAS,eAAA,EAAE,SAAS,eAAE,CACzC;IACF,IAAA,QAAQ,GAAkB,KAAK,SAAvB,EAAK,QAAQ,UAAK,KAAK,EAAjC,YAAyB,CAAF,CAAW;IACxC,IAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,UAAC,CAAC,IAAK,OAAA,CAAC,CAAC,IAAI,KAAK,IAAA,6BAAW,EAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,EAAxC,CAAwC,CAAC,CAAC;IAC7E,IAAM,OAAO,GAAG,CAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,IAAI,CAAC,IAAI,MAAK,gCAAc,CAAC,yBAAyB,CAAC;IACjF,IAAM,WAAW,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,sCAAoB,CAAC,eAAe,IAAI,OAAO,CAAC;IACpF,IAAA,KAAkB,IAAA,gBAAQ,EAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,sCAAoB,CAAC,eAAe,IAAI,KAAK,CAAC,QAAQ,CAAC,EAAvG,IAAI,QAAA,EAAE,OAAO,QAA0F,CAAC;IAC/G,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,KAAK,yBAAO,CAAC,QAAQ,EAAE;QAC5C,OAAO,CACH,8BAAC,gBAAQ,eACD,KAAK,IACT,CAAC,wBACM,CAAC,KACJ,IAAI,wBAAO,CAAC,CAAC,IAAI,KAAE,SAAS,eAAO,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,SAE5D,QAAQ,EAAE,IAAI,IAChB,CACL,CAAC;KACL;IACD,IAAM,SAAS,GAAG,CAAC,CAAA,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAG,KAAK,CAAC,WAAW,CAAC,0CAAE,SAAS,CAAA,CAAC;IAC3D,OAAO,CACH,8BAAC,SAAS,eAAK,QAAQ;QAClB,SAAS,IAAI,8BAAC,SAAS,eAAK,QAAQ,IAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,IAAI;QAC1F,UAAU,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,CACzB,8BAAC,SAAS,eAAK,QAAQ,EAAI,CAC9B,CAAC,CAAC,CAAC,CACA,8DAAG,CAAC,CAAC,WAAW,IAAI,IAAI,CAAC,IAAI,8BAAC,eAAM,eAAK,QAAQ,EAAI,CAAI,CAC5D,CACO,CACf,CAAC;AACN,CAAC,CAAC;AApCW,QAAA,QAAQ,YAoCnB"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/renderer/index.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,mCAA2C;AAC3C,mDAA6F;AAC7F,6CAAwC;AAEjC,IAAM,QAAQ,GAA8B,UAAC,KAAK;IAEjD,IAAA,UAAU,GAIV,KAAK,WAJK,EACV,CAAC,GAGD,KAAK,EAHJ,EACD,KAAK,GAEL,KAAK,MAFA,EACL,KACA,KAAK,WAD0C,EAAjC,SAAS,eAAA,EAAE,SAAS,eAAA,EAAE,SAAS,eAAE,CACzC;IACF,IAAA,QAAQ,GAAkB,KAAK,SAAvB,EAAK,QAAQ,UAAK,KAAK,EAAjC,YAAyB,CAAF,CAAW;IACxC,IAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,UAAC,CAAC,IAAK,OAAA,CAAC,CAAC,IAAI,KAAK,IAAA,6BAAW,EAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,EAAxC,CAAwC,CAAC,CAAC;IAC7E,IAAM,OAAO,GAAG,CAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,IAAI,CAAC,IAAI,MAAK,gCAAc,CAAC,yBAAyB,CAAC;IACjF,IAAM,WAAW,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,sCAAoB,CAAC,eAAe,IAAI,OAAO,CAAC;IACpF,IAAA,KAAkB,IAAA,gBAAQ,EAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,sCAAoB,CAAC,eAAe,IAAI,KAAK,CAAC,QAAQ,CAAC,EAAvG,IAAI,QAAA,EAAE,OAAO,QAA0F,CAAC;IAC/G,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,KAAK,yBAAO,CAAC,QAAQ,EAAE;QAC5C,OAAO,CACH,8BAAC,gBAAQ,eACD,KAAK,IACT,CAAC,wBACM,CAAC,KACJ,IAAI,wBAAO,CAAC,CAAC,IAAI,KAAE,SAAS,eAAO,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,SAE5D,QAAQ,EAAE,IAAI,IAChB,CACL,CAAC;KACL;IACD,OAAO,CACH,8BAAC,SAAS,eAAK,QAAQ;QACnB,8BAAC,SAAS,eAAK,QAAQ,IAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,IAAI;QAC5E,UAAU,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,CACzB,8BAAC,SAAS,eAAK,QAAQ,EAAI,CAC9B,CAAC,CAAC,CAAC,CACA,8DAAG,CAAC,CAAC,WAAW,IAAI,IAAI,CAAC,IAAI,8BAAC,eAAM,eAAK,QAAQ,EAAI,CAAI,CAC5D,CACO,CACf,CAAC;AACN,CAAC,CAAC;AAlCW,QAAA,QAAQ,YAkCnB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "graphql-form",
3
- "version": "0.0.13",
3
+ "version": "0.0.16",
4
4
  "description": "Easy form creation with GraphQL Editor and React",
5
5
  "main": "lib/index.js",
6
6
  "scripts": {
package/src/index.tsx CHANGED
@@ -4,3 +4,4 @@ export * from '@/FormDisplayer';
4
4
  export * from '@/createWidget';
5
5
  export * from '@/renderer';
6
6
  export * from '@/FormToCode';
7
+ export * from '@/outsideUse';
package/src/models.ts CHANGED
@@ -7,13 +7,22 @@ export type FormLabelProps = React.FC<PassedFormProps & { open?: boolean; setOpe
7
7
 
8
8
  export type WidgetSavedData = {
9
9
  widget: string;
10
- hideLabel?: boolean;
11
10
  [x: string]: unknown;
12
11
  };
13
12
 
14
13
  export type SavedWidgets = {
15
14
  [selector: string]: WidgetSavedData | undefined;
16
15
  };
16
+
17
+ export const enum Errs {
18
+ REQUIRED = 'REQUIRED',
19
+ VALUE_IN_ARRAY_REQUIRED = 'VALUE_IN_ARRAY_REQUIRED',
20
+ }
21
+
22
+ export type Errors = {
23
+ [selector: string]: string;
24
+ };
25
+
17
26
  export type SavedForms = {
18
27
  [selector: string]: FormObject;
19
28
  };
@@ -103,5 +112,6 @@ export type FormValue =
103
112
 
104
113
  export type FormObject = {
105
114
  value?: FormValue;
115
+ errors?: string[];
106
116
  node: ParserField;
107
117
  };
@@ -0,0 +1,152 @@
1
+ import { Errs, FormFile, FormObject, PassedFormProps } from '@/models';
2
+ import { getTypeName, Options, ParserField, TypeDefinition, TypeSystemDefinition } from 'graphql-js-tree';
3
+
4
+ export const getWidgetFromProps = (props: PassedFormProps) => {
5
+ const w = props.widgets?.[props.currentPath];
6
+ const FoundBasicWidget = props.widgetComponents.find((wc) => wc.name === w?.widget);
7
+ if (!FoundBasicWidget) {
8
+ const widgetVariant = props.widgetVariants?.find((wv) => wv.name === w?.widget);
9
+ if (!widgetVariant) {
10
+ return;
11
+ }
12
+ const FoundVariantWidget = props.widgetComponents.find((wc) => wc.name === widgetVariant.widget);
13
+ if (!FoundVariantWidget) {
14
+ return;
15
+ }
16
+ return {
17
+ data: {
18
+ widget: widgetVariant.widget,
19
+ ...widgetVariant.data,
20
+ },
21
+ widget: FoundVariantWidget,
22
+ };
23
+ }
24
+ return {
25
+ data: w,
26
+ widget: FoundBasicWidget,
27
+ };
28
+ };
29
+
30
+ export const validateValue = (
31
+ f: FormObject,
32
+ nodes: ParserField[],
33
+ errors: Record<Errs, string>,
34
+ pushErrors: (isValid: boolean) => void,
35
+ ): FormObject => {
36
+ const { value, node } = f;
37
+
38
+ const seekNode = nodes.find((n) => n.name === getTypeName(node.type.fieldType));
39
+ let errs: string[] | undefined;
40
+ if (
41
+ !seekNode ||
42
+ seekNode?.data.type === TypeDefinition.EnumTypeDefinition ||
43
+ seekNode?.data.type === TypeDefinition.ScalarTypeDefinition
44
+ ) {
45
+ if (node.type.fieldType.type === Options.required) {
46
+ if (!value) {
47
+ errs = [errors[Errs.REQUIRED]];
48
+ }
49
+ if (
50
+ node.type.fieldType.nest.type === Options.array &&
51
+ node.type.fieldType.nest.nest.type === Options.required
52
+ ) {
53
+ if (Array.isArray(value)) {
54
+ for (const v of value) {
55
+ if (!v) {
56
+ errs = [errors[Errs.VALUE_IN_ARRAY_REQUIRED]];
57
+ }
58
+ }
59
+ }
60
+ }
61
+ }
62
+ }
63
+ pushErrors(!errs?.length);
64
+ if ((seekNode || node.data.type === TypeSystemDefinition.FieldDefinition) && value) {
65
+ return {
66
+ ...f,
67
+ value: Object.fromEntries(
68
+ Object.entries(value).map(([k, v]) => [k, validateValue(v as FormObject, nodes, errors, pushErrors)]),
69
+ ),
70
+ errors: errs,
71
+ };
72
+ }
73
+ return {
74
+ ...f,
75
+ errors: errs,
76
+ };
77
+ };
78
+
79
+ export const validateForm = (v: FormFile, nodes: ParserField[], errors: Record<Errs, string>) => {
80
+ let isValid = true;
81
+ if (!v.forms) return [v, isValid] as const;
82
+ const forms = Object.entries(v.forms)
83
+ .map(([k, val]) => {
84
+ return [
85
+ k,
86
+ validateValue(val, nodes, errors, (valid) => {
87
+ if (!valid) {
88
+ isValid = valid;
89
+ }
90
+ }),
91
+ ] as const;
92
+ })
93
+ .reduce(
94
+ (a, [k, val]) => ({
95
+ ...a,
96
+ [k]: val,
97
+ }),
98
+ {} as FormFile['forms'],
99
+ );
100
+ return [
101
+ {
102
+ ...v,
103
+ forms,
104
+ } as FormFile,
105
+ isValid,
106
+ ] as const;
107
+ };
108
+
109
+ export const eraseValue = (f: FormObject, nodes: ParserField[]): FormObject => {
110
+ const { value, node } = f;
111
+
112
+ const seekNode = nodes.find((n) => n.name === getTypeName(node.type.fieldType));
113
+ if (
114
+ !seekNode ||
115
+ seekNode?.data.type === TypeDefinition.EnumTypeDefinition ||
116
+ seekNode?.data.type === TypeDefinition.ScalarTypeDefinition
117
+ ) {
118
+ return {
119
+ ...f,
120
+ value: undefined,
121
+ };
122
+ }
123
+ if ((seekNode || node.data.type === TypeSystemDefinition.FieldDefinition) && value) {
124
+ return {
125
+ ...f,
126
+ value: Object.fromEntries(Object.entries(value).map(([k, v]) => [k, eraseValue(v as FormObject, nodes)])),
127
+ };
128
+ }
129
+ return {
130
+ ...f,
131
+ value: undefined,
132
+ };
133
+ };
134
+
135
+ export const eraseForm = (v: FormFile, nodes: ParserField[]) => {
136
+ if (!v.forms) return v;
137
+ const forms = Object.entries(v.forms)
138
+ .map(([k, val]) => {
139
+ return [k, eraseValue(val, nodes)] as const;
140
+ })
141
+ .reduce(
142
+ (a, [k, val]) => ({
143
+ ...a,
144
+ [k]: val,
145
+ }),
146
+ {} as FormFile['forms'],
147
+ );
148
+ return {
149
+ ...v,
150
+ forms,
151
+ };
152
+ };
@@ -1,14 +1,12 @@
1
1
  import { PassedFormProps } from '@/models';
2
+ import { getWidgetFromProps } from '@/outsideUse';
2
3
  import { getTypeName, Options, ScalarTypes, TypeDefinition, TypeSystemDefinition } from 'graphql-js-tree';
3
4
  import React from 'react';
4
5
 
5
6
  export const Fields: React.FC<PassedFormProps> = (props) => {
6
7
  const {
7
8
  nodes,
8
- widgetComponents,
9
9
  f,
10
- widgets,
11
- widgetVariants,
12
10
  components: { ArrayField, ObjectField },
13
11
  } = props;
14
12
  const seekNode = nodes.find((n) => n.name === getTypeName(f.type.fieldType));
@@ -22,29 +20,13 @@ export const Fields: React.FC<PassedFormProps> = (props) => {
22
20
  if (isInput) {
23
21
  return <ObjectField {...props} f={seekNode} />;
24
22
  }
25
- const widget = widgets?.[props.currentPath];
26
- if (widget) {
27
- const WidgetComponent = widgetComponents.find((wc) => wc.name === widget.widget)?.Component;
28
- if (!WidgetComponent) {
29
- const widgetVariant = widgetVariants?.find((wv) => wv.name === widget.widget);
30
- if (!widgetVariant) {
31
- return <></>;
32
- }
33
- const WidgetComponent = widgetComponents.find((wc) => wc.name === widgetVariant.widget)?.Component;
34
- if (!WidgetComponent) {
35
- return <></>;
36
- }
37
- return (
38
- <WidgetComponent
39
- {...props}
40
- widgetData={{
41
- widget: widgetVariant.widget,
42
- ...widgetVariant.data,
43
- }}
44
- />
45
- );
46
- }
47
- return <WidgetComponent {...props} widgetData={widget} />;
23
+ const w = getWidgetFromProps(props);
24
+ if (w) {
25
+ const {
26
+ data,
27
+ widget: { Component },
28
+ } = w;
29
+ return <Component {...props} widgetData={data} />;
48
30
  }
49
31
  return <ScalarField {...props} />;
50
32
  };
@@ -8,7 +8,6 @@ export const Renderer: React.FC<PassedFormProps> = (props) => {
8
8
  formObject,
9
9
  f,
10
10
  nodes,
11
- widgets,
12
11
  components: { NullField, FormLabel, FormField },
13
12
  } = props;
14
13
  const { children, ...allProps } = props;
@@ -28,10 +27,9 @@ export const Renderer: React.FC<PassedFormProps> = (props) => {
28
27
  />
29
28
  );
30
29
  }
31
- const showLabel = !widgets?.[props.currentPath]?.hideLabel;
32
30
  return (
33
31
  <FormField {...allProps}>
34
- {showLabel && <FormLabel {...allProps} open={open} setOpen={setOpen} children={children} />}
32
+ <FormLabel {...allProps} open={open} setOpen={setOpen} children={children} />
35
33
  {formObject.value === null ? (
36
34
  <NullField {...allProps} />
37
35
  ) : (