relay-forms-nodeps 2.0.0 → 2.2.0

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.
@@ -1,10 +1,21 @@
1
1
  "use strict";
2
2
 
3
+ var __assign = this && this.__assign || function () {
4
+ __assign = Object.assign || function (t) {
5
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
6
+ s = arguments[i];
7
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
3
13
  Object.defineProperty(exports, "__esModule", {
4
14
  value: true
5
15
  });
6
16
  var React = require("react");
7
17
  var queries_1 = require("./relay/queries");
18
+ var queryValueFieldFragment_graphql_1 = require("./relay/queryValueFieldFragment.graphql");
8
19
  var RelayStoreProvider_1 = require("./relay/RelayStoreProvider");
9
20
  var RelayStoreUtils_1 = require("./relay/RelayStoreUtils");
10
21
  var useForceUpdate_1 = require("./useForceUpdate");
@@ -28,10 +39,15 @@ function logicSetValue(params) {
28
39
  initialValue = params.initialValue,
29
40
  forceUpdate = params.forceUpdate,
30
41
  validateOnChange = params.validateOnChange,
31
- label = params.label;
42
+ label = params.label,
43
+ dependsOn = params.dependsOn;
32
44
  var validate = undefined;
33
45
  var firstSet = true;
46
+ var deps = {};
34
47
  var localId = Utils_1.getFieldId(key);
48
+ function getDeps() {
49
+ return deps;
50
+ }
35
51
  function getValidate() {
36
52
  return validate;
37
53
  }
@@ -106,13 +122,14 @@ function logicSetValue(params) {
106
122
  }
107
123
  commitField(false);
108
124
  }
109
- function internalValidate(value, validateFunction) {
125
+ function internalValidate(value, validateFunction, depsValidation) {
110
126
  ref.isChecking = true;
111
- var result = validateFunction(value);
127
+ var result = validateFunction(value, deps);
112
128
  function internalFinalize(error) {
113
129
  var validate = getValidate();
114
- if (value !== dataResult.value || validate !== validateFunction) {
115
- internalValidate(dataResult.value, validate);
130
+ var deps = getDeps();
131
+ if (value !== dataResult.value || validate !== validateFunction || deps !== depsValidation) {
132
+ internalValidate(dataResult.value, validate, deps);
116
133
  return;
117
134
  }
118
135
  finalizeCheck(error);
@@ -136,9 +153,25 @@ function logicSetValue(params) {
136
153
  ref.check = getInitCheck(validate);
137
154
  setValueInternal(initialValue);
138
155
  } else if (isValidating && !ref.isChecking) {
139
- internalValidate(dataResult.value, validate);
156
+ internalValidate(dataResult.value, validate, deps);
140
157
  }
141
158
  }).dispose;
159
+ var disposeDeps = [];
160
+ if (dependsOn != null) {
161
+ dependsOn.forEach(function (depKey) {
162
+ var snapshot = Utils_1.getSnapshot(environment, queryValueFieldFragment_graphql_1.default, depKey);
163
+ var disposeDep = environment.subscribe(snapshot, function (s) {
164
+ var _a;
165
+ var data = s.data;
166
+ deps = __assign(__assign({}, deps), (_a = {}, _a[depKey] = data, _a));
167
+ if (ref.check == DONEVALIDATED && !ref.isChecking) {
168
+ ref.check = exports.VALIDATING;
169
+ commitField(false);
170
+ }
171
+ }).dispose;
172
+ disposeDeps.push(disposeDep);
173
+ });
174
+ }
142
175
  var dispose = function () {
143
176
  disposeSubscrition();
144
177
  Utils_1.commit(environment, function (store, form) {
@@ -149,9 +182,12 @@ function logicSetValue(params) {
149
182
  form.setLinkedRecords(newEntries, 'entries');
150
183
  store.delete(localId);
151
184
  });
185
+ disposeDeps.forEach(function (dispose) {
186
+ return dispose;
187
+ });
152
188
  };
153
189
  if (validateOnChange) {
154
- internalValidate(initialValue, getValidate());
190
+ internalValidate(initialValue, getValidate(), deps);
155
191
  }
156
192
  return dispose;
157
193
  }
@@ -167,7 +203,8 @@ function useFormField(_a) {
167
203
  initialValue = _a.initialValue,
168
204
  validate = _a.validate,
169
205
  validateOnChange = _a.validateOnChange,
170
- label = _a.label;
206
+ label = _a.label,
207
+ dependsOn = _a.dependsOn;
171
208
  var forceUpdate = useForceUpdate_1.useForceUpdate();
172
209
  var environment = RelayStoreProvider_1.useStore();
173
210
  var resolver = React.useMemo(function () {
@@ -177,9 +214,10 @@ function useFormField(_a) {
177
214
  label: label,
178
215
  initialValue: initialValue,
179
216
  forceUpdate: forceUpdate,
180
- validateOnChange: validateOnChange
217
+ validateOnChange: validateOnChange,
218
+ dependsOn: dependsOn
181
219
  });
182
- }, [environment, key, initialValue, forceUpdate, validateOnChange, label]);
220
+ }, [environment, key, initialValue, forceUpdate, validateOnChange, label, dependsOn]);
183
221
  resolver.setValidate(validate);
184
222
  React.useEffect(function () {
185
223
  return resolver.subscribe();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "relay-forms-nodeps",
3
- "version": "2.0.0",
3
+ "version": "2.2.0",
4
4
  "keywords": [
5
5
  "forms",
6
6
  "relay",
@@ -65,11 +65,11 @@
65
65
  "graphql": "^14.2.0",
66
66
  "@types/react": "18.0.26",
67
67
  "@types/react-dom": "18.0.10",
68
- "relay-compiler": "^14.0.0",
68
+ "relay-compiler": "^17.0.0",
69
69
  "replace-in-file": "6.2.0",
70
70
  "react-test-renderer": "^18.0.0",
71
- "relay-test-utils": "^14.0.0",
72
- "relay-test-utils-internal": "^14.0.0",
71
+ "relay-test-utils": "^17.0.0",
72
+ "relay-test-utils-internal": "^17.0.0",
73
73
  "@types/jest": "24.0.18",
74
74
  "ts-jest": "^26.5.6",
75
75
  "jest": "^26.0.0",