graphql-form 0.0.5 → 0.0.8

Sign up to get free protection for your applications and to get access to all the features.
@@ -26,6 +26,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
26
26
  };
27
27
  Object.defineProperty(exports, "__esModule", { value: true });
28
28
  exports.FormBuilder = void 0;
29
+ var FormToCode_1 = require("./FormToCode");
29
30
  var renderer_1 = require("./renderer");
30
31
  var graphql_js_tree_1 = require("graphql-js-tree");
31
32
  var react_1 = __importDefault(require("react"));
@@ -38,12 +39,15 @@ var FormBuilder = function (_a) {
38
39
  return !!((_b = v.node.args) === null || _b === void 0 ? void 0 : _b.length) && v.node.data.type === graphql_js_tree_1.TypeSystemDefinition.FieldDefinition;
39
40
  }));
40
41
  return (react_1.default.createElement(react_1.default.Fragment, null, Object.keys(formFields).map(function (key) {
41
- return (react_1.default.createElement(renderer_1.Renderer, __assign({}, props, { changeWidget: function (widgetData, path) {
42
+ return (react_1.default.createElement(renderer_1.Renderer, __assign({}, props, { key: key, changeWidget: function (widgetData, path) {
42
43
  var _a;
43
- onChange(__assign(__assign({}, formFile), { widgets: __assign(__assign({}, widgets), (_a = {}, _a[path] = widgetData, _a)) }));
44
+ var query = (0, FormToCode_1.formToGql)({ fields: forms, nodes: props.nodes });
45
+ onChange(__assign(__assign({}, formFile), { widgets: __assign(__assign({}, widgets), (_a = {}, _a[path] = widgetData, _a)) }), query);
44
46
  }, widgets: widgets, currentPath: key, formObject: formFields[key], onChange: function (changedForm) {
45
47
  var _a;
46
- onChange(__assign(__assign({}, formFile), { forms: __assign(__assign({}, forms), (_a = {}, _a[key] = changedForm, _a)) }));
48
+ var updatedFile = __assign(__assign({}, formFile), { forms: __assign(__assign({}, forms), (_a = {}, _a[key] = changedForm, _a)) });
49
+ var query = (0, FormToCode_1.formToGql)({ fields: updatedFile.forms, nodes: props.nodes });
50
+ onChange(updatedFile, query);
47
51
  }, f: formFields[key].node })));
48
52
  })));
49
53
  };
@@ -1 +1 @@
1
- {"version":3,"file":"FormBuilder.js","sourceRoot":"","sources":["../src/FormBuilder.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,uCAAsC;AACtC,mDAAuD;AACvD,gDAA0B;AAEnB,IAAM,WAAW,GAA+B,UAAC,EAAgC;IAA9B,IAAA,QAAQ,cAAA,EAAE,QAAQ,cAAA,EAAK,KAAK,cAA9B,wBAAgC,CAAF;IAC1E,IAAA,KAA6B,QAAQ,QAAzB,EAAZ,OAAO,mBAAG,EAAE,KAAA,EAAE,KAAe,QAAQ,MAAb,EAAV,KAAK,mBAAG,EAAE,KAAA,CAAc;IAC9C,IAAM,UAAU,GAAG,MAAM,CAAC,WAAW,CACjC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,CACxB,UAAC,EAAK;;YAAF,CAAC,QAAA;QAAM,OAAA,CAAC,CAAC,CAAA,MAAA,CAAC,CAAC,IAAI,CAAC,IAAI,0CAAE,MAAM,CAAA,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,sCAAoB,CAAC,eAAe,CAAA;KAAA,CAChG,CACJ,CAAC;IACF,OAAO,CACH,8DACK,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,UAAC,GAAG;QAC7B,OAAO,CACH,8BAAC,mBAAQ,eACD,KAAK,IACT,YAAY,EAAE,UAAC,UAAU,EAAE,IAAI;;gBAC3B,QAAQ,uBACD,QAAQ,KACX,OAAO,wBACA,OAAO,gBACT,IAAI,IAAG,UAAU,UAExB,CAAC;YACP,CAAC,EACD,OAAO,EAAE,OAAO,EAChB,WAAW,EAAE,GAAG,EAChB,UAAU,EAAE,UAAU,CAAC,GAAG,CAAC,EAC3B,QAAQ,EAAE,UAAC,WAAuB;;gBAC9B,QAAQ,uBACD,QAAQ,KACX,KAAK,wBACE,KAAK,gBACP,GAAG,IAAG,WAAW,UAExB,CAAC;YACP,CAAC,EACD,CAAC,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,IACzB,CACL,CAAC;IACN,CAAC,CAAC,CACH,CACN,CAAC;AACN,CAAC,CAAC;AAxCW,QAAA,WAAW,eAwCtB"}
1
+ {"version":3,"file":"FormBuilder.js","sourceRoot":"","sources":["../src/FormBuilder.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,2CAAyC;AAEzC,uCAAsC;AACtC,mDAAuD;AACvD,gDAA0B;AAEnB,IAAM,WAAW,GAA+B,UAAC,EAAgC;IAA9B,IAAA,QAAQ,cAAA,EAAE,QAAQ,cAAA,EAAK,KAAK,cAA9B,wBAAgC,CAAF;IAC1E,IAAA,KAA6B,QAAQ,QAAzB,EAAZ,OAAO,mBAAG,EAAE,KAAA,EAAE,KAAe,QAAQ,MAAb,EAAV,KAAK,mBAAG,EAAE,KAAA,CAAc;IAC9C,IAAM,UAAU,GAAG,MAAM,CAAC,WAAW,CACjC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,CACxB,UAAC,EAAK;;YAAF,CAAC,QAAA;QAAM,OAAA,CAAC,CAAC,CAAA,MAAA,CAAC,CAAC,IAAI,CAAC,IAAI,0CAAE,MAAM,CAAA,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,sCAAoB,CAAC,eAAe,CAAA;KAAA,CAChG,CACJ,CAAC;IACF,OAAO,CACH,8DACK,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,UAAC,GAAG;QAC7B,OAAO,CACH,8BAAC,mBAAQ,eACD,KAAK,IACT,GAAG,EAAE,GAAG,EACR,YAAY,EAAE,UAAC,UAAU,EAAE,IAAI;;gBAC3B,IAAM,KAAK,GAAG,IAAA,sBAAS,EAAC,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;gBAC/D,QAAQ,uBAEG,QAAQ,KACX,OAAO,wBACA,OAAO,gBACT,IAAI,IAAG,UAAU,WAG1B,KAAK,CACR,CAAC;YACN,CAAC,EACD,OAAO,EAAE,OAAO,EAChB,WAAW,EAAE,GAAG,EAChB,UAAU,EAAE,UAAU,CAAC,GAAG,CAAC,EAC3B,QAAQ,EAAE,UAAC,WAAuB;;gBAC9B,IAAM,WAAW,yBACV,QAAQ,KACX,KAAK,wBACE,KAAK,gBACP,GAAG,IAAG,WAAW,SAEzB,CAAC;gBACF,IAAM,KAAK,GAAG,IAAA,sBAAS,EAAC,EAAE,MAAM,EAAE,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;gBAC3E,QAAQ,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;YACjC,CAAC,EACD,CAAC,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,IACzB,CACL,CAAC;IACN,CAAC,CAAC,CACH,CACN,CAAC;AACN,CAAC,CAAC;AA/CW,QAAA,WAAW,eA+CtB"}
@@ -26,6 +26,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
26
26
  };
27
27
  Object.defineProperty(exports, "__esModule", { value: true });
28
28
  exports.FormDisplayer = void 0;
29
+ var FormToCode_1 = require("./FormToCode");
29
30
  var renderer_1 = require("./renderer");
30
31
  var graphql_js_tree_1 = require("graphql-js-tree");
31
32
  var react_1 = __importDefault(require("react"));
@@ -38,11 +39,13 @@ var FormDisplayer = function (_a) {
38
39
  return !!((_b = v.node.args) === null || _b === void 0 ? void 0 : _b.length) && v.node.data.type === graphql_js_tree_1.TypeSystemDefinition.FieldDefinition;
39
40
  }));
40
41
  return (react_1.default.createElement(react_1.default.Fragment, null, Object.keys(formFields).map(function (key) {
41
- return (react_1.default.createElement(renderer_1.Renderer, __assign({}, props, { widgets: widgets, changeWidget: function () {
42
+ return (react_1.default.createElement(renderer_1.Renderer, __assign({}, props, { key: key, widgets: widgets, changeWidget: function () {
42
43
  return;
43
44
  }, currentPath: key, formObject: formFields[key], onChange: function (changedForm) {
44
45
  var _a;
45
- onChange(__assign(__assign({}, formFile), { forms: __assign(__assign({}, forms), (_a = {}, _a[key] = changedForm, _a)) }));
46
+ var updatedFile = __assign(__assign({}, formFile), { forms: __assign(__assign({}, forms), (_a = {}, _a[key] = changedForm, _a)) });
47
+ var query = (0, FormToCode_1.formToGql)({ fields: updatedFile.forms, nodes: props.nodes });
48
+ onChange(updatedFile, query);
46
49
  }, f: formFields[key].node })));
47
50
  })));
48
51
  };
@@ -1 +1 @@
1
- {"version":3,"file":"FormDisplayer.js","sourceRoot":"","sources":["../src/FormDisplayer.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,uCAAsC;AACtC,mDAAuD;AACvD,gDAA0B;AAEnB,IAAM,aAAa,GAAiC,UAAC,EAAgC;IAA9B,IAAA,QAAQ,cAAA,EAAE,QAAQ,cAAA,EAAK,KAAK,cAA9B,wBAAgC,CAAF;IAC9E,IAAA,KAA6B,QAAQ,QAAzB,EAAZ,OAAO,mBAAG,EAAE,KAAA,EAAE,KAAe,QAAQ,MAAb,EAAV,KAAK,mBAAG,EAAE,KAAA,CAAc;IAC9C,IAAM,UAAU,GAAG,MAAM,CAAC,WAAW,CACjC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,CACxB,UAAC,EAAK;;YAAF,CAAC,QAAA;QAAM,OAAA,CAAC,CAAC,CAAA,MAAA,CAAC,CAAC,IAAI,CAAC,IAAI,0CAAE,MAAM,CAAA,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,sCAAoB,CAAC,eAAe,CAAA;KAAA,CAChG,CACJ,CAAC;IACF,OAAO,CACH,8DACK,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,UAAC,GAAG;QAC7B,OAAO,CACH,8BAAC,mBAAQ,eACD,KAAK,IACT,OAAO,EAAE,OAAO,EAChB,YAAY,EAAE;gBACV,OAAO;YACX,CAAC,EACD,WAAW,EAAE,GAAG,EAChB,UAAU,EAAE,UAAU,CAAC,GAAG,CAAC,EAC3B,QAAQ,EAAE,UAAC,WAAuB;;gBAC9B,QAAQ,uBACD,QAAQ,KACX,KAAK,wBACE,KAAK,gBACP,GAAG,IAAG,WAAW,UAExB,CAAC;YACP,CAAC,EACD,CAAC,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,IACzB,CACL,CAAC;IACN,CAAC,CAAC,CACH,CACN,CAAC;AACN,CAAC,CAAC;AAlCW,QAAA,aAAa,iBAkCxB"}
1
+ {"version":3,"file":"FormDisplayer.js","sourceRoot":"","sources":["../src/FormDisplayer.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,2CAAyC;AAEzC,uCAAsC;AACtC,mDAAuD;AACvD,gDAA0B;AAEnB,IAAM,aAAa,GAAiC,UAAC,EAAgC;IAA9B,IAAA,QAAQ,cAAA,EAAE,QAAQ,cAAA,EAAK,KAAK,cAA9B,wBAAgC,CAAF;IAC9E,IAAA,KAA6B,QAAQ,QAAzB,EAAZ,OAAO,mBAAG,EAAE,KAAA,EAAE,KAAe,QAAQ,MAAb,EAAV,KAAK,mBAAG,EAAE,KAAA,CAAc;IAC9C,IAAM,UAAU,GAAG,MAAM,CAAC,WAAW,CACjC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,CACxB,UAAC,EAAK;;YAAF,CAAC,QAAA;QAAM,OAAA,CAAC,CAAC,CAAA,MAAA,CAAC,CAAC,IAAI,CAAC,IAAI,0CAAE,MAAM,CAAA,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,sCAAoB,CAAC,eAAe,CAAA;KAAA,CAChG,CACJ,CAAC;IACF,OAAO,CACH,8DACK,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,UAAC,GAAG;QAC7B,OAAO,CACH,8BAAC,mBAAQ,eACD,KAAK,IACT,GAAG,EAAE,GAAG,EACR,OAAO,EAAE,OAAO,EAChB,YAAY,EAAE;gBACV,OAAO;YACX,CAAC,EACD,WAAW,EAAE,GAAG,EAChB,UAAU,EAAE,UAAU,CAAC,GAAG,CAAC,EAC3B,QAAQ,EAAE,UAAC,WAAuB;;gBAC9B,IAAM,WAAW,yBACV,QAAQ,KACX,KAAK,wBACE,KAAK,gBACP,GAAG,IAAG,WAAW,SAEzB,CAAC;gBACF,IAAM,KAAK,GAAG,IAAA,sBAAS,EAAC,EAAE,MAAM,EAAE,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;gBAC3E,QAAQ,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;YACjC,CAAC,EACD,CAAC,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,IACzB,CACL,CAAC;IACN,CAAC,CAAC,CACH,CACN,CAAC;AACN,CAAC,CAAC;AArCW,QAAA,aAAa,iBAqCxB"}
@@ -1,13 +1,15 @@
1
- /// <reference types="react" />
2
1
  import { PassedFormProps, CastToWidgetSettingsPassedForm } from "./models";
3
- export declare function createWidget<Props>({ name, Component, Settings, requirements, }: {
2
+ import React from 'react';
3
+ export declare function createWidget<Props>({ name, Component, Settings, Description, requirements, }: {
4
4
  name: string;
5
5
  Component: React.FC<PassedFormProps<Props>>;
6
6
  Settings?: React.FC<CastToWidgetSettingsPassedForm<Props>>;
7
+ Description?: React.FC;
7
8
  requirements: (props: PassedFormProps) => boolean;
8
9
  }): {
9
- Component: import("react").FC<PassedFormProps<Props>>;
10
- Settings: import("react").FC<CastToWidgetSettingsPassedForm<Props>> | undefined;
10
+ Component: React.FC<PassedFormProps<Props>>;
11
+ Settings: React.FC<CastToWidgetSettingsPassedForm<Props>> | undefined;
12
+ Description: React.FC<{}> | undefined;
11
13
  requirements: (props: PassedFormProps) => boolean;
12
14
  props: Props;
13
15
  name: string;
@@ -2,10 +2,11 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.createWidget = void 0;
4
4
  function createWidget(_a) {
5
- var name = _a.name, Component = _a.Component, Settings = _a.Settings, requirements = _a.requirements;
5
+ var name = _a.name, Component = _a.Component, Settings = _a.Settings, Description = _a.Description, requirements = _a.requirements;
6
6
  return {
7
7
  Component: Component,
8
8
  Settings: Settings,
9
+ Description: Description,
9
10
  requirements: requirements,
10
11
  props: {},
11
12
  name: name,
@@ -1 +1 @@
1
- {"version":3,"file":"createWidget.js","sourceRoot":"","sources":["../src/createWidget.tsx"],"names":[],"mappings":";;;AAEA,SAAgB,YAAY,CAAQ,EAUnC;QATG,IAAI,UAAA,EACJ,SAAS,eAAA,EACT,QAAQ,cAAA,EACR,YAAY,kBAAA;IAOZ,OAAO;QACH,SAAS,WAAA;QACT,QAAQ,UAAA;QACR,YAAY,cAAA;QACZ,KAAK,EAAE,EAAW;QAClB,IAAI,MAAA;KACP,CAAC;AACN,CAAC;AAlBD,oCAkBC"}
1
+ {"version":3,"file":"createWidget.js","sourceRoot":"","sources":["../src/createWidget.tsx"],"names":[],"mappings":";;;AAGA,SAAgB,YAAY,CAAQ,EAYnC;QAXG,IAAI,UAAA,EACJ,SAAS,eAAA,EACT,QAAQ,cAAA,EACR,WAAW,iBAAA,EACX,YAAY,kBAAA;IAQZ,OAAO;QACH,SAAS,WAAA;QACT,QAAQ,UAAA;QACR,WAAW,aAAA;QACX,YAAY,cAAA;QACZ,KAAK,EAAE,EAAW;QAClB,IAAI,MAAA;KACP,CAAC;AACN,CAAC;AArBD,oCAqBC"}
package/lib/models.d.ts CHANGED
@@ -7,7 +7,7 @@ export declare type FormLabelProps = React.FC<PassedFormProps & {
7
7
  }>;
8
8
  export declare type WidgetSavedData = {
9
9
  widget: string;
10
- [x: string]: any;
10
+ [x: string]: unknown;
11
11
  };
12
12
  export declare type SavedWidgets = {
13
13
  [selector: string]: WidgetSavedData | undefined;
@@ -15,14 +15,15 @@ export declare type SavedWidgets = {
15
15
  export declare type SavedForms = {
16
16
  [selector: string]: FormObject;
17
17
  };
18
- export declare type PassedFormProps<WidgetData = any> = {
18
+ export declare type ReturnedDictType = Record<string, unknown> | undefined;
19
+ export declare type PassedFormProps<WidgetData = ReturnedDictType> = {
19
20
  f: ParserField;
20
21
  nodes: ParserField[];
21
22
  formObject: FormObject;
22
23
  onChange: (formObject: FormObject) => void;
23
24
  changeWidget: (widgetData: WidgetSavedData | undefined, path: string) => void;
24
25
  required?: boolean;
25
- runQuery: (q: string) => Promise<any>;
26
+ runQuery: (q: string) => Promise<unknown>;
26
27
  widgetComponents: WidgetType[];
27
28
  currentPath: string;
28
29
  widgets?: SavedWidgets;
@@ -45,21 +46,21 @@ export declare type FormFile = {
45
46
  };
46
47
  export declare type FormBuilderProps = Omit<PassedFormProps, 'formObject' | 'onChange' | 'f' | 'currentPath' | 'changeWidget' | 'widgets'> & {
47
48
  formFile: FormFile;
48
- onChange: (o: FormFile) => void;
49
+ onChange: (o: FormFile, query: string) => void;
49
50
  };
50
51
  export declare type FormDisplayerProps = Omit<PassedFormProps, 'formObject' | 'onChange' | 'f' | 'currentPath' | 'changeWidget' | 'widgets'> & {
51
52
  formFile: FormFile;
52
- onChange: (o: FormFile) => void;
53
+ onChange: (o: FormFile, query: string) => void;
53
54
  };
54
55
  export declare type FormLibraryProps = Omit<FormDisplayerProps, 'required' | 'components'>;
55
- export declare type CastToWidgetSettingsPassedForm<WidgetData> = PassedFormProps<Partial<WidgetData>> & {
56
- close: () => void;
56
+ export declare type CastToWidgetSettingsPassedForm<WidgetData = ReturnedDictType> = PassedFormProps<Partial<WidgetData>> & {
57
+ widgetSettingsChange: (data: WidgetData) => void;
57
58
  };
58
59
  export declare type WidgetType = {
59
60
  Component: React.FC<PassedFormProps>;
60
- Settings: React.FC<CastToWidgetSettingsPassedForm<any>> | undefined;
61
+ Settings: React.FC<CastToWidgetSettingsPassedForm> | undefined;
61
62
  requirements: (props: PassedFormProps) => boolean;
62
- props?: Record<string, any>;
63
+ props?: ReturnedDictType;
63
64
  name: string;
64
65
  };
65
66
  export declare type FormValue = {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "graphql-form",
3
- "version": "0.0.5",
3
+ "version": "0.0.8",
4
4
  "description": "Easy form creation with GraphQL Editor and React",
5
5
  "main": "lib/index.js",
6
6
  "scripts": {
@@ -1,3 +1,4 @@
1
+ import { formToGql } from '@/FormToCode';
1
2
  import { FormBuilderProps, FormObject } from '@/models';
2
3
  import { Renderer } from '@/renderer';
3
4
  import { TypeSystemDefinition } from 'graphql-js-tree';
@@ -16,26 +17,33 @@ export const FormBuilder: React.FC<FormBuilderProps> = ({ formFile, onChange, ..
16
17
  return (
17
18
  <Renderer
18
19
  {...props}
20
+ key={key}
19
21
  changeWidget={(widgetData, path) => {
20
- onChange({
21
- ...formFile,
22
- widgets: {
23
- ...widgets,
24
- [path]: widgetData,
22
+ const query = formToGql({ fields: forms, nodes: props.nodes });
23
+ onChange(
24
+ {
25
+ ...formFile,
26
+ widgets: {
27
+ ...widgets,
28
+ [path]: widgetData,
29
+ },
25
30
  },
26
- });
31
+ query,
32
+ );
27
33
  }}
28
34
  widgets={widgets}
29
35
  currentPath={key}
30
36
  formObject={formFields[key]}
31
37
  onChange={(changedForm: FormObject) => {
32
- onChange({
38
+ const updatedFile = {
33
39
  ...formFile,
34
40
  forms: {
35
41
  ...forms,
36
42
  [key]: changedForm,
37
43
  },
38
- });
44
+ };
45
+ const query = formToGql({ fields: updatedFile.forms, nodes: props.nodes });
46
+ onChange(updatedFile, query);
39
47
  }}
40
48
  f={formFields[key].node}
41
49
  />
@@ -1,3 +1,4 @@
1
+ import { formToGql } from '@/FormToCode';
1
2
  import { FormDisplayerProps, FormObject } from '@/models';
2
3
  import { Renderer } from '@/renderer';
3
4
  import { TypeSystemDefinition } from 'graphql-js-tree';
@@ -16,6 +17,7 @@ export const FormDisplayer: React.FC<FormDisplayerProps> = ({ formFile, onChange
16
17
  return (
17
18
  <Renderer
18
19
  {...props}
20
+ key={key}
19
21
  widgets={widgets}
20
22
  changeWidget={() => {
21
23
  return;
@@ -23,13 +25,15 @@ export const FormDisplayer: React.FC<FormDisplayerProps> = ({ formFile, onChange
23
25
  currentPath={key}
24
26
  formObject={formFields[key]}
25
27
  onChange={(changedForm: FormObject) => {
26
- onChange({
28
+ const updatedFile = {
27
29
  ...formFile,
28
30
  forms: {
29
31
  ...forms,
30
32
  [key]: changedForm,
31
33
  },
32
- });
34
+ };
35
+ const query = formToGql({ fields: updatedFile.forms, nodes: props.nodes });
36
+ onChange(updatedFile, query);
33
37
  }}
34
38
  f={formFields[key].node}
35
39
  />
@@ -1,19 +1,23 @@
1
1
  import { PassedFormProps, CastToWidgetSettingsPassedForm } from '@/models';
2
+ import React from 'react';
2
3
 
3
4
  export function createWidget<Props>({
4
5
  name,
5
6
  Component,
6
7
  Settings,
8
+ Description,
7
9
  requirements,
8
10
  }: {
9
11
  name: string;
10
12
  Component: React.FC<PassedFormProps<Props>>;
11
13
  Settings?: React.FC<CastToWidgetSettingsPassedForm<Props>>;
14
+ Description?: React.FC;
12
15
  requirements: (props: PassedFormProps) => boolean;
13
16
  }) {
14
17
  return {
15
18
  Component,
16
19
  Settings,
20
+ Description,
17
21
  requirements,
18
22
  props: {} as Props,
19
23
  name,
package/src/models.ts CHANGED
@@ -7,7 +7,7 @@ export type FormLabelProps = React.FC<PassedFormProps & { open?: boolean; setOpe
7
7
 
8
8
  export type WidgetSavedData = {
9
9
  widget: string;
10
- [x: string]: any;
10
+ [x: string]: unknown;
11
11
  };
12
12
 
13
13
  export type SavedWidgets = {
@@ -17,14 +17,16 @@ export type SavedForms = {
17
17
  [selector: string]: FormObject;
18
18
  };
19
19
 
20
- export type PassedFormProps<WidgetData = any> = {
20
+ export type ReturnedDictType = Record<string, unknown> | undefined;
21
+
22
+ export type PassedFormProps<WidgetData = ReturnedDictType> = {
21
23
  f: ParserField;
22
24
  nodes: ParserField[];
23
25
  formObject: FormObject;
24
26
  onChange: (formObject: FormObject) => void;
25
27
  changeWidget: (widgetData: WidgetSavedData | undefined, path: string) => void;
26
28
  required?: boolean;
27
- runQuery: (q: string) => Promise<any>;
29
+ runQuery: (q: string) => Promise<unknown>;
28
30
  widgetComponents: WidgetType[];
29
31
  currentPath: string;
30
32
  widgets?: SavedWidgets;
@@ -51,7 +53,7 @@ export type FormBuilderProps = Omit<
51
53
  'formObject' | 'onChange' | 'f' | 'currentPath' | 'changeWidget' | 'widgets'
52
54
  > & {
53
55
  formFile: FormFile;
54
- onChange: (o: FormFile) => void;
56
+ onChange: (o: FormFile, query: string) => void;
55
57
  };
56
58
 
57
59
  export type FormDisplayerProps = Omit<
@@ -59,20 +61,20 @@ export type FormDisplayerProps = Omit<
59
61
  'formObject' | 'onChange' | 'f' | 'currentPath' | 'changeWidget' | 'widgets'
60
62
  > & {
61
63
  formFile: FormFile;
62
- onChange: (o: FormFile) => void;
64
+ onChange: (o: FormFile, query: string) => void;
63
65
  };
64
66
 
65
67
  export type FormLibraryProps = Omit<FormDisplayerProps, 'required' | 'components'>;
66
68
 
67
- export type CastToWidgetSettingsPassedForm<WidgetData> = PassedFormProps<Partial<WidgetData>> & {
68
- close: () => void;
69
+ export type CastToWidgetSettingsPassedForm<WidgetData = ReturnedDictType> = PassedFormProps<Partial<WidgetData>> & {
70
+ widgetSettingsChange: (data: WidgetData) => void;
69
71
  };
70
72
 
71
73
  export type WidgetType = {
72
74
  Component: React.FC<PassedFormProps>;
73
- Settings: React.FC<CastToWidgetSettingsPassedForm<any>> | undefined;
75
+ Settings: React.FC<CastToWidgetSettingsPassedForm> | undefined;
74
76
  requirements: (props: PassedFormProps) => boolean;
75
- props?: Record<string, any>;
77
+ props?: ReturnedDictType;
76
78
  name: string;
77
79
  };
78
80