zeus-form 0.1.1 → 0.1.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,3 +1,3 @@
1
1
  /// <reference types="react" />
2
2
  import { InputFormProps } from "./models";
3
- export declare function InputForm<T>({ onChange, schema, values, inputName, ...props }: InputFormProps<T>): JSX.Element;
3
+ export declare function InputForm<T>({ onChange, schema, values, inputName, basicErrorMessages, override, ...props }: InputFormProps<T>): JSX.Element;
package/lib/InputForm.js CHANGED
@@ -46,12 +46,14 @@ var __rest = (this && this.__rest) || function (s, e) {
46
46
  };
47
47
  Object.defineProperty(exports, "__esModule", { value: true });
48
48
  exports.InputForm = void 0;
49
+ var deepMerge_1 = require("./deepMerge");
50
+ var outsideUse_1 = require("./outsideUse");
49
51
  var renderer_1 = require("./renderer");
50
52
  var resolve_1 = require("./resolve");
51
53
  var graphql_js_tree_1 = require("graphql-js-tree");
52
54
  var react_1 = __importStar(require("react"));
53
55
  function InputForm(_a) {
54
- var onChange = _a.onChange, schema = _a.schema, values = _a.values, inputName = _a.inputName, props = __rest(_a, ["onChange", "schema", "values", "inputName"]);
56
+ var onChange = _a.onChange, schema = _a.schema, values = _a.values, inputName = _a.inputName, basicErrorMessages = _a.basicErrorMessages, override = _a.override, props = __rest(_a, ["onChange", "schema", "values", "inputName", "basicErrorMessages", "override"]);
55
57
  var nodes = (0, react_1.useMemo)(function () {
56
58
  return graphql_js_tree_1.Parser.parse(schema).nodes;
57
59
  }, [schema]);
@@ -69,9 +71,10 @@ function InputForm(_a) {
69
71
  values: v,
70
72
  });
71
73
  }, [inputName, values]);
72
- return (react_1.default.createElement(renderer_1.Renderer, __assign({}, props, { nodes: nodes, formObject: formObject, key: inputName, currentPath: inputName, onChange: function (changedForm) {
74
+ return (react_1.default.createElement(renderer_1.Renderer, __assign({}, props, { nodes: nodes, formObject: formObject, key: inputName, override: override, currentPath: inputName, onChange: function (changedForm) {
73
75
  var toValue = (0, resolve_1.resolveQlValue)({ v: changedForm, nodes: nodes });
74
- onChange(toValue);
76
+ var validation = (0, outsideUse_1.validateForm)(basicErrorMessages)(changedForm);
77
+ onChange(override ? (0, deepMerge_1.mergeDeep)(toValue, override) : toValue, validation);
75
78
  }, f: formObject.__form__node })));
76
79
  }
77
80
  exports.InputForm = InputForm;
@@ -1 +1 @@
1
- {"version":3,"file":"InputForm.js","sourceRoot":"","sources":["../src/InputForm.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"InputForm.js","sourceRoot":"","sources":["../src/InputForm.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,yCAAwC;AAExC,2CAA4C;AAC5C,uCAAsC;AACtC,qCAA2C;AAC3C,mDAA6G;AAC7G,6CAAuC;AAEvC,SAAgB,SAAS,CAAI,EAQT;IAPhB,IAAA,QAAQ,cAAA,EACR,MAAM,YAAA,EACN,MAAM,YAAA,EACN,SAAS,eAAA,EACT,kBAAkB,wBAAA,EAClB,QAAQ,cAAA,EACL,KAAK,cAPiB,+EAQ5B,CADW;IAER,IAAM,KAAK,GAAG,IAAA,eAAO,EAAC;QAClB,OAAO,wBAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC;IACtC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IAEb,IAAM,UAAU,GAAG,IAAA,eAAO,EAAC;;QACvB,IAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CACnB,UAAC,CAAC,IAAK,OAAA,CAAC,CAAC,IAAI,KAAK,SAAS,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,gCAAc,CAAC,yBAAyB,EAAhF,CAAgF,CAC1F,CAAC;QACF,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,0BAAkB,SAAS,mDAA+C,CAAC,CAAC;QACvG,IAAM,CAAC;YACH,GAAC,SAAS,IAAG,MAAM;eACtB,CAAC;QACF,OAAO,SAAS,CAAW;YACvB,IAAI,MAAA;YACJ,KAAK,OAAA;YACL,MAAM,EAAE,CAAC;SACZ,CAAC,CAAC;IACP,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC;IACxB,OAAO,CACH,8BAAC,mBAAQ,eACD,KAAK,IACT,KAAK,EAAE,KAAK,EACZ,UAAU,EAAE,UAAU,EACtB,GAAG,EAAE,SAAS,EACd,QAAQ,EAAE,QAAQ,EAClB,WAAW,EAAE,SAAS,EACtB,QAAQ,EAAE,UAAC,WAAuB;YAC9B,IAAM,OAAO,GAAG,IAAA,wBAAc,EAAC,EAAE,CAAC,EAAE,WAAW,EAAE,KAAK,OAAA,EAAE,CAAe,CAAC;YACxE,IAAM,UAAU,GAAG,IAAA,yBAAY,EAAC,kBAAkB,CAAC,CAAC,WAAW,CAAC,CAAC;YACjE,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAA,qBAAS,EAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;QAC5E,CAAC,EACD,CAAC,EAAE,UAAU,CAAC,YAAY,IAC5B,CACL,CAAC;AACN,CAAC;AA3CD,8BA2CC;AAED,SAAS,SAAS,CAIhB,KAMD;;IACW,IAAA,IAAI,GAAoB,KAAK,KAAzB,EAAE,KAAK,GAAa,KAAK,MAAlB,EAAE,MAAM,GAAK,KAAK,OAAV,CAAW;IACtC,IACI,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,KAAK,yBAAO,CAAC,KAAK;QAC1C,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,KAAK,yBAAO,CAAC,QAAQ,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,KAAK,yBAAO,CAAC,KAAK,CAAC,EACpG;QACE,OAAO;YACH,YAAY,EAAE,IAAI;YAClB,aAAa,EAAE,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAG,IAAI,CAAC,IAAI,CAAC,0CAAE,GAAG,CAAC,UAAC,EAAO,IAAK,OAAA,CAAC;gBAClD,YAAY,EAAE,IAAI;gBAClB,aAAa,EAAE,EAAE;aACpB,CAAC,EAHmD,CAGnD,CAAC;SACN,CAAC;KACL;IACD,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,kBAAkB,GACpB,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,iCAAe,CAAC,oBAAoB;QACvD,CAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,IAAI,CAAC,IAAI,MAAK,gCAAc,CAAC,yBAAyB,CAAC;IAErE,IAAI,kBAAkB,EAAE;QACpB,OAAO,SAAS,uBAAM,KAAK,KAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,CAAC,IAAI,IAAG,CAAC;KACjG;IACD,IAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,gCAAc,CAAC,yBAAyB,CAAC;IAChF,IAAI,WAAW,EAAE;QACb,IAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAA4B,UAAC,CAAC,EAAE,CAAC;YACjE,IAAM,EAAE,GAAG,SAAS,uBAAM,KAAK,KAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAG,KAAK,CAAC,eAAe,IAAI,IAAI,CAAC,IAAI,CAAC,KAAI,EAAE,IAAG,CAAC;YACxG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;YACf,OAAO,CAAC,CAAC;QACb,CAAC,EAAE,EAAE,CAAC,CAAC;QACP,OAAO;YACH,YAAY,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC,uBAAM,IAAI,KAAE,IAAI,EAAE,EAAE,IAAI,EAAE,iCAAe,CAAC,oBAAoB,EAAE,IAAG,CAAC,CAAC,IAAI;YAC1G,aAAa,EAAE,WAAW;SAC7B,CAAC;KACL;IACD,OAAO;QACH,YAAY,EAAE,IAAI;QAClB,aAAa,EAAE,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAG,IAAI,CAAC,IAAI,CAAC;KACrC,CAAC;AACN,CAAC"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Simple object check.
3
+ * @param item
4
+ * @returns {boolean}
5
+ */
6
+ export declare function isObject(item: unknown): unknown;
7
+ /**
8
+ * Deep merge two objects.
9
+ * @param target
10
+ * @param ...sources
11
+ */
12
+ export declare function mergeDeep<T extends {
13
+ [x: string]: any;
14
+ }>(target: T, ...sources: T[]): T;
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
3
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
4
+ if (ar || !(i in from)) {
5
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
6
+ ar[i] = from[i];
7
+ }
8
+ }
9
+ return to.concat(ar || Array.prototype.slice.call(from));
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.mergeDeep = exports.isObject = void 0;
13
+ /**
14
+ * Simple object check.
15
+ * @param item
16
+ * @returns {boolean}
17
+ */
18
+ function isObject(item) {
19
+ return item && typeof item === 'object' && !Array.isArray(item);
20
+ }
21
+ exports.isObject = isObject;
22
+ /**
23
+ * Deep merge two objects.
24
+ * @param target
25
+ * @param ...sources
26
+ */
27
+ function mergeDeep(target) {
28
+ var _a, _b;
29
+ var sources = [];
30
+ for (var _i = 1; _i < arguments.length; _i++) {
31
+ sources[_i - 1] = arguments[_i];
32
+ }
33
+ if (!sources.length)
34
+ return target;
35
+ var source = sources.shift();
36
+ if (isObject(target) && isObject(source)) {
37
+ for (var key in source) {
38
+ if (isObject(source[key])) {
39
+ if (!target[key])
40
+ Object.assign(target, (_a = {}, _a[key] = {}, _a));
41
+ mergeDeep(target[key], source[key]);
42
+ }
43
+ else {
44
+ Object.assign(target, (_b = {}, _b[key] = source[key], _b));
45
+ }
46
+ }
47
+ }
48
+ return mergeDeep.apply(void 0, __spreadArray([target], sources, false));
49
+ }
50
+ exports.mergeDeep = mergeDeep;
51
+ //# sourceMappingURL=deepMerge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deepMerge.js","sourceRoot":"","sources":["../src/deepMerge.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA;;;;GAIG;AACH,SAAgB,QAAQ,CAAC,IAAa;IAClC,OAAO,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AACpE,CAAC;AAFD,4BAEC;AAED;;;;GAIG;AACH,SAAgB,SAAS,CAAiC,MAAS;;IAAE,iBAAe;SAAf,UAAe,EAAf,qBAAe,EAAf,IAAe;QAAf,gCAAe;;IAChF,IAAI,CAAC,OAAO,CAAC,MAAM;QAAE,OAAO,MAAM,CAAC;IACnC,IAAM,MAAM,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;IAE/B,IAAI,QAAQ,CAAC,MAAM,CAAC,IAAI,QAAQ,CAAC,MAAM,CAAC,EAAE;QACtC,KAAK,IAAM,GAAG,IAAI,MAAM,EAAE;YACtB,IAAI,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE;gBACvB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;oBAAE,MAAM,CAAC,MAAM,CAAC,MAAM,YAAI,GAAC,GAAG,IAAG,EAAE,MAAG,CAAC;gBACvD,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;aACvC;iBAAM;gBACH,MAAM,CAAC,MAAM,CAAC,MAAM,YAAI,GAAC,GAAG,IAAG,MAAM,CAAC,GAAG,CAAC,MAAG,CAAC;aACjD;SACJ;KACJ;IAED,OAAO,SAAS,8BAAC,MAAM,GAAK,OAAO,UAAE;AACzC,CAAC;AAhBD,8BAgBC"}
package/lib/models.d.ts CHANGED
@@ -35,11 +35,14 @@ export declare type PassedFormProps<WidgetData = ReturnedDictType> = {
35
35
  onChange: (formObject: FormObject) => void;
36
36
  required?: boolean;
37
37
  widgetComponents: WidgetType[];
38
- widgetVariants?: WidgetVariantType[];
39
38
  currentPath: string;
40
39
  widgets?: SavedWidgets;
41
40
  widgetData?: WidgetData;
42
41
  errors?: Errors;
42
+ children?: React.ReactNode;
43
+ override?: {
44
+ [x: string]: any;
45
+ };
43
46
  components: {
44
47
  ArrayField: FieldComponent;
45
48
  ObjectField: FieldComponent;
@@ -59,8 +62,10 @@ export declare type FormFile = {
59
62
  export declare type InputFormProps<InputZeusType> = Omit<PassedFormProps, 'formObject' | 'onChange' | 'f' | 'currentPath' | 'changeWidget' | 'widgets' | 'nodes' | 'formFile' | 'runQuery'> & {
60
63
  schema: string;
61
64
  inputName: string;
65
+ override?: Partial<InputZeusType>;
66
+ basicErrorMessages: Record<Errs, string>;
62
67
  values: Partial<InputZeusType>;
63
- onChange: (o: Partial<InputZeusType>) => void;
68
+ onChange: (o: Partial<InputZeusType>, errors?: Record<string, string>) => void;
64
69
  };
65
70
  export declare type InputFormLibraryProps<T> = Omit<InputFormProps<T>, 'required' | 'components'>;
66
71
  export declare type WidgetProps<Props> = {
@@ -1,10 +1,8 @@
1
1
  import { Errs, FormObject, FormValue, PassedFormProps } from "./models";
2
2
  export declare const getWidgetFromProps: (props: PassedFormProps) => {
3
- data: any;
3
+ data: import("./models").WidgetSavedData | undefined;
4
4
  widget: import("./models").WidgetType;
5
5
  } | undefined;
6
6
  export declare const getErrorFromProps: (props: PassedFormProps) => string | undefined;
7
- export declare const graphqlFormUtils: () => {
8
- validateForm: (v: FormObject, errors: Record<Errs, string>) => Record<string, string>;
9
- validateValue: (f: FormValue, path: string, pushErrors: (path: string, value: Errs) => void) => void;
10
- };
7
+ export declare const validateValue: (f: FormValue, path: string, pushErrors: (path: string, value: Errs) => void) => void;
8
+ export declare const validateForm: (errors: Record<Errs, string>) => (v: FormObject) => Record<string, string> | undefined;
package/lib/outsideUse.js CHANGED
@@ -1,36 +1,14 @@
1
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
2
  Object.defineProperty(exports, "__esModule", { value: true });
14
- exports.graphqlFormUtils = exports.getErrorFromProps = exports.getWidgetFromProps = void 0;
3
+ exports.validateForm = exports.validateValue = exports.getErrorFromProps = exports.getWidgetFromProps = void 0;
15
4
  var models_1 = require("./models");
16
5
  var graphql_js_tree_1 = require("graphql-js-tree");
17
6
  var getWidgetFromProps = function (props) {
18
- var _a, _b;
7
+ var _a;
19
8
  var w = (_a = props.widgets) === null || _a === void 0 ? void 0 : _a[props.currentPath];
20
9
  var FoundBasicWidget = props.widgetComponents.find(function (wc) { return wc.name === (w === null || w === void 0 ? void 0 : w.widget); });
21
10
  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
- };
11
+ return;
34
12
  }
35
13
  return {
36
14
  data: w,
@@ -43,70 +21,64 @@ var getErrorFromProps = function (props) {
43
21
  return (_a = props.errors) === null || _a === void 0 ? void 0 : _a[props.currentPath];
44
22
  };
45
23
  exports.getErrorFromProps = getErrorFromProps;
46
- var graphqlFormUtils = function () {
47
- var validateValue = function (f, path, pushErrors) {
48
- if (f === null ||
49
- typeof f === 'string' ||
50
- typeof f === 'boolean' ||
51
- typeof f === 'number' ||
52
- typeof f === 'undefined') {
53
- return;
54
- }
55
- if ('__form__node' in f &&
56
- typeof f.__form__node === 'object' &&
57
- f.__form__node !== null &&
58
- 'args' in f.__form__node &&
59
- 'data' in f.__form__node &&
60
- typeof f.__form__node.data === 'object' &&
61
- !!f.__form__node.data &&
62
- 'type' in f.__form__node.data &&
63
- 'directives' in f.__form__node) {
64
- var _a = f, __form__node = _a.__form__node, __form__value = _a.__form__value;
65
- if (__form__node.data.type === graphql_js_tree_1.ValueDefinition.InputValueDefinition) {
66
- if (__form__node.type.fieldType.type === graphql_js_tree_1.Options.required &&
67
- (0, graphql_js_tree_1.getTypeName)(__form__node.type.fieldType) !== graphql_js_tree_1.ScalarTypes.Boolean) {
68
- if (typeof __form__value === 'undefined' || __form__value === '') {
69
- pushErrors(path, models_1.Errs.REQUIRED);
70
- }
71
- if (Array.isArray(__form__value)) {
72
- for (var _i = 0, __form__value_1 = __form__value; _i < __form__value_1.length; _i++) {
73
- var v = __form__value_1[_i];
74
- validateValue(v, path, pushErrors);
75
- }
24
+ var validateValue = function (f, path, pushErrors) {
25
+ if (f === null ||
26
+ typeof f === 'string' ||
27
+ typeof f === 'boolean' ||
28
+ typeof f === 'number' ||
29
+ typeof f === 'undefined') {
30
+ return;
31
+ }
32
+ if ('__form__node' in f &&
33
+ typeof f.__form__node === 'object' &&
34
+ f.__form__node !== null &&
35
+ 'args' in f.__form__node &&
36
+ 'data' in f.__form__node &&
37
+ typeof f.__form__node.data === 'object' &&
38
+ !!f.__form__node.data &&
39
+ 'type' in f.__form__node.data &&
40
+ 'directives' in f.__form__node) {
41
+ var _a = f, __form__node = _a.__form__node, __form__value = _a.__form__value;
42
+ if (__form__node.data.type === graphql_js_tree_1.ValueDefinition.InputValueDefinition) {
43
+ if (__form__node.type.fieldType.type === graphql_js_tree_1.Options.required &&
44
+ (0, graphql_js_tree_1.getTypeName)(__form__node.type.fieldType) !== graphql_js_tree_1.ScalarTypes.Boolean) {
45
+ if (typeof __form__value === 'undefined' || __form__value === '') {
46
+ pushErrors(path, models_1.Errs.REQUIRED);
47
+ }
48
+ if (Array.isArray(__form__value)) {
49
+ for (var _i = 0, __form__value_1 = __form__value; _i < __form__value_1.length; _i++) {
50
+ var v = __form__value_1[_i];
51
+ (0, exports.validateValue)(v, path, pushErrors);
76
52
  }
77
53
  }
78
54
  }
79
55
  }
80
- if ('__form__value' in f && !!f.__form__value) {
81
- var __form__value = f.__form__value;
82
- if (Array.isArray(__form__value)) {
83
- __form__value.map(function (vv) { return validateValue(vv, path, pushErrors); });
84
- return;
85
- }
86
- if (typeof __form__value === 'object' && !!__form__value) {
87
- Object.entries(__form__value).forEach(function (_a) {
88
- var k = _a[0], v = _a[1];
89
- return validateValue(v, "".concat(path, ".").concat(k), pushErrors);
90
- });
91
- return;
92
- }
56
+ }
57
+ if ('__form__value' in f && !!f.__form__value) {
58
+ var __form__value = f.__form__value;
59
+ if (Array.isArray(__form__value)) {
60
+ __form__value.map(function (vv) { return (0, exports.validateValue)(vv, path, pushErrors); });
61
+ return;
93
62
  }
94
- return;
95
- };
96
- var validateForm = function (v, errors) {
97
- var errorDict = {};
98
- Object.entries(v.__form__value).forEach(function (_a) {
99
- var k = _a[0], val = _a[1];
100
- validateValue(val, k, function (p, err) {
101
- errorDict[p] = errors[err];
63
+ if (typeof __form__value === 'object' && !!__form__value) {
64
+ Object.entries(__form__value).forEach(function (_a) {
65
+ var k = _a[0], v = _a[1];
66
+ return (0, exports.validateValue)(v, path ? "".concat(path, ".").concat(k) : k, pushErrors);
102
67
  });
103
- });
104
- return errorDict;
105
- };
106
- return {
107
- validateForm: validateForm,
108
- validateValue: validateValue,
109
- };
68
+ return;
69
+ }
70
+ }
71
+ return;
110
72
  };
111
- exports.graphqlFormUtils = graphqlFormUtils;
73
+ exports.validateValue = validateValue;
74
+ var validateForm = function (errors) { return function (v) {
75
+ var errorDict = {};
76
+ (0, exports.validateValue)(v, v.__form__node.name, function (p, err) {
77
+ errorDict[p] = errors[err];
78
+ });
79
+ if (Object.keys(errorDict).length === 0)
80
+ return;
81
+ return errorDict;
82
+ }; };
83
+ exports.validateForm = validateForm;
112
84
  //# sourceMappingURL=outsideUse.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"outsideUse.js","sourceRoot":"","sources":["../src/outsideUse.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"outsideUse.js","sourceRoot":"","sources":["../src/outsideUse.tsx"],"names":[],"mappings":"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"}
@@ -50,7 +50,7 @@ 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 formObject = props.formObject, f = props.f, nodes = props.nodes, _a = props.components, NullField = _a.NullField, FormLabel = _a.FormLabel, FormField = _a.FormField;
53
+ var formObject = props.formObject, f = props.f, nodes = props.nodes, override = props.override, currentPath = props.currentPath, _a = props.components, NullField = _a.NullField, FormLabel = _a.FormLabel, FormField = _a.FormField;
54
54
  var children = props.children, allProps = __rest(props, ["children"]);
55
55
  var seekNode = nodes.find(function (n) { return n.name === (0, graphql_js_tree_1.getTypeName)(f.type.fieldType); });
56
56
  var isInput = (seekNode === null || seekNode === void 0 ? void 0 : seekNode.data.type) === graphql_js_tree_1.TypeDefinition.InputObjectTypeDefinition;
@@ -58,6 +58,18 @@ var Renderer = function (props) {
58
58
  if (f.type.fieldType.type === graphql_js_tree_1.Options.required) {
59
59
  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 })));
60
60
  }
61
+ if (override) {
62
+ var p = currentPath.split('.').slice(1);
63
+ if (p.length > 0) {
64
+ var overrides = p.reduce(function (a, b) {
65
+ if (!a)
66
+ return;
67
+ return a[b];
68
+ }, override);
69
+ if (overrides)
70
+ return null;
71
+ }
72
+ }
61
73
  return (react_1.default.createElement(FormField, __assign({}, allProps),
62
74
  react_1.default.createElement(FormLabel, __assign({}, allProps, { open: open, setOpen: setOpen, children: children })),
63
75
  formObject.__form__value === null ? (react_1.default.createElement(NullField, __assign({}, allProps))) : (react_1.default.createElement(react_1.default.Fragment, null, (!isInput || open) && react_1.default.createElement(fields_1.Fields, __assign({}, allProps))))));
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/renderer/index.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,mCAA2C;AAC3C,mDAAuE;AACvE,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;IAC3E,IAAA,KAAkB,IAAA,gBAAQ,EAAC,KAAK,CAAC,QAAQ,CAAC,EAAzC,IAAI,QAAA,EAAE,OAAO,QAA4B,CAAC;IACjD,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,aAAa,KAAK,IAAI,CAAC,CAAC,CAAC,CACjC,8BAAC,SAAS,eAAK,QAAQ,EAAI,CAC9B,CAAC,CAAC,CAAC,CACA,8DAAG,CAAC,CAAC,OAAO,IAAI,IAAI,CAAC,IAAI,8BAAC,eAAM,eAAK,QAAQ,EAAI,CAAI,CACxD,CACO,CACf,CAAC;AACN,CAAC,CAAC;AAjCW,QAAA,QAAQ,YAiCnB"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/renderer/index.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,mCAA2C;AAC3C,mDAAuE;AACvE,6CAAwC;AAEjC,IAAM,QAAQ,GAA8B,UAAC,KAAK;IAEjD,IAAA,UAAU,GAMV,KAAK,WANK,EACV,CAAC,GAKD,KAAK,EALJ,EACD,KAAK,GAIL,KAAK,MAJA,EACL,QAAQ,GAGR,KAAK,SAHG,EACR,WAAW,GAEX,KAAK,YAFM,EACX,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;IAC3E,IAAA,KAAkB,IAAA,gBAAQ,EAAC,KAAK,CAAC,QAAQ,CAAC,EAAzC,IAAI,QAAA,EAAE,OAAO,QAA4B,CAAC;IACjD,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,IAAI,QAAQ,EAAE;QACV,IAAM,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC1C,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;YACd,IAAM,SAAS,GAAG,CAAC,CAAC,MAAM,CAAC,UAAC,CAAC,EAAE,CAAC;gBAC5B,IAAI,CAAC,CAAC;oBAAE,OAAO;gBACf,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;YAChB,CAAC,EAAE,QAAQ,CAAC,CAAC;YACb,IAAI,SAAS;gBAAE,OAAO,IAAI,CAAC;SAC9B;KACJ;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,aAAa,KAAK,IAAI,CAAC,CAAC,CAAC,CACjC,8BAAC,SAAS,eAAK,QAAQ,EAAI,CAC9B,CAAC,CAAC,CAAC,CACA,8DAAG,CAAC,CAAC,OAAO,IAAI,IAAI,CAAC,IAAI,8BAAC,eAAM,eAAK,QAAQ,EAAI,CAAI,CACxD,CACO,CACf,CAAC;AACN,CAAC,CAAC;AA7CW,QAAA,QAAQ,YA6CnB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zeus-form",
3
- "version": "0.1.1",
3
+ "version": "0.1.3",
4
4
  "description": "Easy form creation with GraphQL Editor and React",
5
5
  "main": "lib/index.js",
6
6
  "scripts": {
@@ -24,8 +24,8 @@
24
24
  "homepage": "https://form.graphqleditor.com",
25
25
  "devDependencies": {},
26
26
  "peerDependencies": {
27
- "react": ">=16.8.0",
28
- "react-dom": ">=16.8.0"
27
+ "react": ">=18",
28
+ "react-dom": ">=18"
29
29
  },
30
30
  "dependencies": {
31
31
  "graphql-js-tree": "^0.1.1"
package/src/InputForm.tsx CHANGED
@@ -1,10 +1,20 @@
1
+ import { mergeDeep } from '@/deepMerge';
1
2
  import { InputFormProps, FormObject, FormValue } from '@/models';
3
+ import { validateForm } from '@/outsideUse';
2
4
  import { Renderer } from '@/renderer';
3
5
  import { resolveQlValue } from '@/resolve';
4
6
  import { getTypeName, Options, Parser, ParserField, TypeDefinition, ValueDefinition } from 'graphql-js-tree';
5
7
  import React, { useMemo } from 'react';
6
8
 
7
- export function InputForm<T>({ onChange, schema, values, inputName, ...props }: InputFormProps<T>) {
9
+ export function InputForm<T>({
10
+ onChange,
11
+ schema,
12
+ values,
13
+ inputName,
14
+ basicErrorMessages,
15
+ override,
16
+ ...props
17
+ }: InputFormProps<T>) {
8
18
  const nodes = useMemo(() => {
9
19
  return Parser.parse(schema).nodes;
10
20
  }, [schema]);
@@ -23,27 +33,32 @@ export function InputForm<T>({ onChange, schema, values, inputName, ...props }:
23
33
  values: v,
24
34
  });
25
35
  }, [inputName, values]);
26
-
27
36
  return (
28
37
  <Renderer
29
38
  {...props}
30
39
  nodes={nodes}
31
40
  formObject={formObject}
32
41
  key={inputName}
42
+ override={override}
33
43
  currentPath={inputName}
34
44
  onChange={(changedForm: FormObject) => {
35
- const toValue = resolveQlValue({ v: changedForm, nodes });
36
- onChange(toValue as Partial<T>);
45
+ const toValue = resolveQlValue({ v: changedForm, nodes }) as Partial<T>;
46
+ const validation = validateForm(basicErrorMessages)(changedForm);
47
+ onChange(override ? mergeDeep(toValue, override) : toValue, validation);
37
48
  }}
38
49
  f={formObject.__form__node}
39
50
  />
40
51
  );
41
52
  }
42
53
 
43
- function buildForm<T>(props: {
54
+ function buildForm<
55
+ T extends {
56
+ [x: string]: any;
57
+ },
58
+ >(props: {
44
59
  node: ParserField;
45
60
  nodes: ParserField[];
46
- values?: any;
61
+ values?: T;
47
62
  switchInput?: boolean;
48
63
  switchFieldName?: string;
49
64
  }): FormObject {
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Simple object check.
3
+ * @param item
4
+ * @returns {boolean}
5
+ */
6
+ export function isObject(item: unknown) {
7
+ return item && typeof item === 'object' && !Array.isArray(item);
8
+ }
9
+
10
+ /**
11
+ * Deep merge two objects.
12
+ * @param target
13
+ * @param ...sources
14
+ */
15
+ export function mergeDeep<T extends { [x: string]: any }>(target: T, ...sources: T[]): T {
16
+ if (!sources.length) return target;
17
+ const source = sources.shift();
18
+
19
+ if (isObject(target) && isObject(source)) {
20
+ for (const key in source) {
21
+ if (isObject(source[key])) {
22
+ if (!target[key]) Object.assign(target, { [key]: {} });
23
+ mergeDeep(target[key], source[key]);
24
+ } else {
25
+ Object.assign(target, { [key]: source[key] });
26
+ }
27
+ }
28
+ }
29
+
30
+ return mergeDeep(target, ...sources);
31
+ }
package/src/models.ts CHANGED
@@ -42,11 +42,12 @@ export type PassedFormProps<WidgetData = ReturnedDictType> = {
42
42
  onChange: (formObject: FormObject) => void;
43
43
  required?: boolean;
44
44
  widgetComponents: WidgetType[];
45
- widgetVariants?: WidgetVariantType[];
46
45
  currentPath: string;
47
46
  widgets?: SavedWidgets;
48
47
  widgetData?: WidgetData;
49
48
  errors?: Errors;
49
+ children?: React.ReactNode;
50
+ override?: { [x: string]: any };
50
51
  components: {
51
52
  ArrayField: FieldComponent;
52
53
  ObjectField: FieldComponent;
@@ -70,8 +71,10 @@ export type InputFormProps<InputZeusType> = Omit<
70
71
  > & {
71
72
  schema: string;
72
73
  inputName: string;
74
+ override?: Partial<InputZeusType>;
75
+ basicErrorMessages: Record<Errs, string>;
73
76
  values: Partial<InputZeusType>;
74
- onChange: (o: Partial<InputZeusType>) => void;
77
+ onChange: (o: Partial<InputZeusType>, errors?: Record<string, string>) => void;
75
78
  };
76
79
  export type InputFormLibraryProps<T> = Omit<InputFormProps<T>, 'required' | 'components'>;
77
80
 
@@ -5,21 +5,7 @@ export const getWidgetFromProps = (props: PassedFormProps) => {
5
5
  const w = props.widgets?.[props.currentPath];
6
6
  const FoundBasicWidget = props.widgetComponents.find((wc) => wc.name === w?.widget);
7
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
- };
8
+ return;
23
9
  }
24
10
  return {
25
11
  data: w,
@@ -30,73 +16,65 @@ export const getErrorFromProps = (props: PassedFormProps) => {
30
16
  return props.errors?.[props.currentPath];
31
17
  };
32
18
 
33
- export const graphqlFormUtils = () => {
34
- const validateValue = (f: FormValue, path: string, pushErrors: (path: string, value: Errs) => void) => {
35
- if (
36
- f === null ||
37
- typeof f === 'string' ||
38
- typeof f === 'boolean' ||
39
- typeof f === 'number' ||
40
- typeof f === 'undefined'
41
- ) {
42
- return;
43
- }
44
- if (
45
- '__form__node' in f &&
46
- typeof f.__form__node === 'object' &&
47
- f.__form__node !== null &&
48
- 'args' in f.__form__node &&
49
- 'data' in f.__form__node &&
50
- typeof f.__form__node.data === 'object' &&
51
- !!f.__form__node.data &&
52
- 'type' in f.__form__node.data &&
53
- 'directives' in f.__form__node
54
- ) {
55
- const { __form__node, __form__value } = f as FormObject;
56
- if (__form__node.data.type === ValueDefinition.InputValueDefinition) {
57
- if (
58
- __form__node.type.fieldType.type === Options.required &&
59
- getTypeName(__form__node.type.fieldType) !== ScalarTypes.Boolean
60
- ) {
61
- if (typeof __form__value === 'undefined' || __form__value === '') {
62
- pushErrors(path, Errs.REQUIRED);
63
- }
64
- if (Array.isArray(__form__value)) {
65
- for (const v of __form__value) {
66
- validateValue(v, path, pushErrors);
67
- }
19
+ export const validateValue = (f: FormValue, path: string, pushErrors: (path: string, value: Errs) => void) => {
20
+ if (
21
+ f === null ||
22
+ typeof f === 'string' ||
23
+ typeof f === 'boolean' ||
24
+ typeof f === 'number' ||
25
+ typeof f === 'undefined'
26
+ ) {
27
+ return;
28
+ }
29
+ if (
30
+ '__form__node' in f &&
31
+ typeof f.__form__node === 'object' &&
32
+ f.__form__node !== null &&
33
+ 'args' in f.__form__node &&
34
+ 'data' in f.__form__node &&
35
+ typeof f.__form__node.data === 'object' &&
36
+ !!f.__form__node.data &&
37
+ 'type' in f.__form__node.data &&
38
+ 'directives' in f.__form__node
39
+ ) {
40
+ const { __form__node, __form__value } = f as FormObject;
41
+ if (__form__node.data.type === ValueDefinition.InputValueDefinition) {
42
+ if (
43
+ __form__node.type.fieldType.type === Options.required &&
44
+ getTypeName(__form__node.type.fieldType) !== ScalarTypes.Boolean
45
+ ) {
46
+ if (typeof __form__value === 'undefined' || __form__value === '') {
47
+ pushErrors(path, Errs.REQUIRED);
48
+ }
49
+ if (Array.isArray(__form__value)) {
50
+ for (const v of __form__value) {
51
+ validateValue(v, path, pushErrors);
68
52
  }
69
53
  }
70
54
  }
71
55
  }
72
- if ('__form__value' in f && !!f.__form__value) {
73
- const { __form__value } = f;
74
- if (Array.isArray(__form__value)) {
75
- __form__value.map((vv) => validateValue(vv, path, pushErrors));
76
- return;
77
- }
78
- if (typeof __form__value === 'object' && !!__form__value) {
79
- Object.entries(__form__value).forEach(([k, v]) =>
80
- validateValue(v as FormObject, `${path}.${k}`, pushErrors),
81
- );
82
- return;
83
- }
56
+ }
57
+ if ('__form__value' in f && !!f.__form__value) {
58
+ const { __form__value } = f;
59
+ if (Array.isArray(__form__value)) {
60
+ __form__value.map((vv) => validateValue(vv, path, pushErrors));
61
+ return;
84
62
  }
85
- return;
86
- };
87
-
88
- const validateForm = (v: FormObject, errors: Record<Errs, string>) => {
89
- const errorDict: Record<string, string> = {};
90
- Object.entries(v.__form__value as Record<string, FormObject>).forEach(([k, val]) => {
91
- validateValue(val, k, (p, err) => {
92
- errorDict[p] = errors[err];
93
- });
94
- });
95
- return errorDict;
96
- };
63
+ if (typeof __form__value === 'object' && !!__form__value) {
64
+ Object.entries(__form__value).forEach(([k, v]) =>
65
+ validateValue(v as FormObject, path ? `${path}.${k}` : k, pushErrors),
66
+ );
67
+ return;
68
+ }
69
+ }
70
+ return;
71
+ };
97
72
 
98
- return {
99
- validateForm,
100
- validateValue,
101
- };
73
+ export const validateForm = (errors: Record<Errs, string>) => (v: FormObject) => {
74
+ const errorDict: Record<string, string> = {};
75
+ validateValue(v, v.__form__node.name, (p, err) => {
76
+ errorDict[p] = errors[err];
77
+ });
78
+ if (Object.keys(errorDict).length === 0) return;
79
+ return errorDict;
102
80
  };
@@ -8,6 +8,8 @@ export const Renderer: React.FC<PassedFormProps> = (props) => {
8
8
  formObject,
9
9
  f,
10
10
  nodes,
11
+ override,
12
+ currentPath,
11
13
  components: { NullField, FormLabel, FormField },
12
14
  } = props;
13
15
  const { children, ...allProps } = props;
@@ -26,6 +28,16 @@ export const Renderer: React.FC<PassedFormProps> = (props) => {
26
28
  />
27
29
  );
28
30
  }
31
+ if (override) {
32
+ const p = currentPath.split('.').slice(1);
33
+ if (p.length > 0) {
34
+ const overrides = p.reduce((a, b) => {
35
+ if (!a) return;
36
+ return a[b];
37
+ }, override);
38
+ if (overrides) return null;
39
+ }
40
+ }
29
41
  return (
30
42
  <FormField {...allProps}>
31
43
  <FormLabel {...allProps} open={open} setOpen={setOpen} children={children} />