@digigov/form 0.6.9 → 0.6.10

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 (137) hide show
  1. package/CHANGELOG.md +8 -1
  2. package/Field/index.js +107 -34
  3. package/Field/types.js +5 -0
  4. package/Fieldset/FieldsetWithContext.js +63 -0
  5. package/Fieldset/index.js +4 -63
  6. package/Fieldset/types.js +5 -0
  7. package/FormBuilder.js +178 -0
  8. package/FormContext.js +14 -0
  9. package/Questions/Questions.js +105 -0
  10. package/Questions/QuestionsContext.js +20 -0
  11. package/Questions/Step/ReviewStep.js +11 -7
  12. package/Questions/Step/Step.js +93 -0
  13. package/Questions/Step/StepArrayReview.js +79 -0
  14. package/Questions/Step/StepContext.js +37 -0
  15. package/Questions/Step/StepDescription.js +2 -2
  16. package/Questions/Step/StepForm.js +10 -6
  17. package/Questions/Step/StepTitle.js +2 -2
  18. package/Questions/Step/getAddMoreFields.js +31 -0
  19. package/Questions/Step/index.js +81 -200
  20. package/Questions/Step/types.js +5 -0
  21. package/Questions/getNextStep.js +30 -0
  22. package/Questions/index.js +4 -150
  23. package/Questions/types.js +5 -0
  24. package/es/Field/index.js +102 -30
  25. package/es/Field/types.js +1 -0
  26. package/es/Fieldset/FieldsetWithContext.js +41 -0
  27. package/es/Fieldset/index.js +3 -51
  28. package/es/Fieldset/types.js +1 -0
  29. package/es/FormBuilder.js +148 -0
  30. package/es/FormContext.js +5 -0
  31. package/es/Questions/Questions.js +84 -0
  32. package/es/Questions/QuestionsContext.js +11 -0
  33. package/es/Questions/Step/ReviewStep.js +5 -3
  34. package/es/Questions/Step/Step.js +69 -0
  35. package/es/Questions/Step/StepArrayReview.js +50 -0
  36. package/es/Questions/Step/StepContext.js +27 -0
  37. package/es/Questions/Step/StepDescription.js +1 -1
  38. package/es/Questions/Step/StepForm.js +4 -2
  39. package/es/Questions/Step/StepTitle.js +1 -1
  40. package/es/Questions/Step/getAddMoreFields.js +22 -0
  41. package/es/Questions/Step/index.js +13 -165
  42. package/es/Questions/Step/types.js +1 -0
  43. package/es/Questions/getNextStep.js +23 -0
  44. package/es/Questions/index.js +2 -119
  45. package/es/Questions/index.spec.js +2 -1
  46. package/es/Questions/types.js +1 -0
  47. package/es/index.js +2 -153
  48. package/es/inputs/index.js +5 -4
  49. package/es/internal.js +29 -0
  50. package/es/types.js +1 -0
  51. package/esm/Field/index.js +102 -30
  52. package/esm/Field/types.js +1 -0
  53. package/esm/Fieldset/FieldsetWithContext.js +41 -0
  54. package/esm/Fieldset/index.js +3 -51
  55. package/esm/Fieldset/types.js +1 -0
  56. package/esm/FormBuilder.js +148 -0
  57. package/esm/FormContext.js +5 -0
  58. package/esm/Questions/Questions.js +84 -0
  59. package/esm/Questions/QuestionsContext.js +11 -0
  60. package/esm/Questions/Step/ReviewStep.js +5 -3
  61. package/esm/Questions/Step/Step.js +69 -0
  62. package/esm/Questions/Step/StepArrayReview.js +50 -0
  63. package/esm/Questions/Step/StepContext.js +27 -0
  64. package/esm/Questions/Step/StepDescription.js +1 -1
  65. package/esm/Questions/Step/StepForm.js +4 -2
  66. package/esm/Questions/Step/StepTitle.js +1 -1
  67. package/esm/Questions/Step/getAddMoreFields.js +22 -0
  68. package/esm/Questions/Step/index.js +13 -165
  69. package/esm/Questions/Step/types.js +1 -0
  70. package/esm/Questions/getNextStep.js +23 -0
  71. package/esm/Questions/index.js +2 -119
  72. package/esm/Questions/index.spec.js +2 -1
  73. package/esm/Questions/types.js +1 -0
  74. package/esm/index.js +3 -154
  75. package/esm/inputs/index.js +5 -4
  76. package/esm/internal.js +29 -0
  77. package/esm/types.js +1 -0
  78. package/index.js +8 -191
  79. package/inputs/index.js +13 -5
  80. package/internal.js +335 -0
  81. package/libs/form/src/Field/index.d.ts +2 -61
  82. package/libs/form/src/Field/types.d.ts +75 -0
  83. package/libs/form/src/Fieldset/FieldsetWithContext.d.ts +4 -0
  84. package/libs/form/src/Fieldset/index.d.ts +2 -12
  85. package/libs/form/src/Fieldset/types.d.ts +6 -0
  86. package/libs/form/src/FormBuilder.d.ts +5 -0
  87. package/libs/form/src/FormContext.d.ts +3 -0
  88. package/libs/form/src/Questions/Questions.d.ts +8 -0
  89. package/libs/form/src/Questions/QuestionsContext.d.ts +3 -0
  90. package/libs/form/src/Questions/Step/ReviewStep.d.ts +1 -0
  91. package/libs/form/src/Questions/Step/Step.d.ts +9 -0
  92. package/libs/form/src/Questions/Step/StepArrayReview.d.ts +4 -0
  93. package/libs/form/src/Questions/Step/StepContext.d.ts +4 -0
  94. package/libs/form/src/Questions/Step/StepForm.d.ts +2 -1
  95. package/libs/form/src/Questions/Step/getAddMoreFields.d.ts +3 -0
  96. package/libs/form/src/Questions/Step/index.d.ts +12 -47
  97. package/libs/form/src/Questions/Step/types.d.ts +31 -0
  98. package/libs/form/src/Questions/getNextStep.d.ts +2 -0
  99. package/libs/form/src/Questions/index.d.ts +1 -28
  100. package/libs/form/src/Questions/types.d.ts +19 -0
  101. package/libs/form/src/index.d.ts +2 -73
  102. package/libs/form/src/inputs/Checkboxes/index.d.ts +1 -1
  103. package/libs/form/src/inputs/DateInput/index.d.ts +1 -1
  104. package/libs/form/src/inputs/FileInput/index.d.ts +1 -1
  105. package/libs/form/src/inputs/Input/index.d.ts +1 -1
  106. package/libs/form/src/inputs/Label/index.d.ts +2 -1
  107. package/libs/form/src/inputs/Radio/index.d.ts +1 -1
  108. package/libs/form/src/inputs/Select/index.d.ts +1 -1
  109. package/libs/form/src/inputs/index.d.ts +4 -3
  110. package/libs/form/src/internal.d.ts +29 -0
  111. package/libs/form/src/types.d.ts +69 -0
  112. package/libs/form/src/validators.d.ts +1 -1
  113. package/libs/ui/src/core/Button/index.d.ts +1 -1
  114. package/libs/ui/src/core/NavList/NavList.d.ts +1 -14
  115. package/libs/ui/src/core/NavList/NavListBase.d.ts +4 -0
  116. package/libs/ui/src/core/NavList/NavListSubMenu.d.ts +1 -1
  117. package/libs/ui/src/core/NavList/types.d.ts +13 -0
  118. package/libs/ui/src/core/Table/TableFloatingScroll.d.ts +3 -0
  119. package/libs/ui/src/core/Table/index.d.ts +1 -0
  120. package/libs/ui/src/layouts/Grid/index.d.ts +1 -0
  121. package/libs-ui/react-core/src/Button/index.d.ts +1 -1
  122. package/libs-ui/react-core/src/CheckboxItem/index.d.ts +1 -1
  123. package/libs-ui/react-core/src/DateInputItem/index.d.ts +1 -1
  124. package/libs-ui/react-core/src/Fieldset/index.d.ts +1 -1
  125. package/libs-ui/react-core/src/FileUpload/index.d.ts +1 -1
  126. package/libs-ui/react-core/src/RadioItem/index.d.ts +1 -1
  127. package/libs-ui/react-core/src/Select/index.d.ts +1 -1
  128. package/libs-ui/react-core/src/SvgIcon/index.d.ts +1 -1
  129. package/libs-ui/react-core/src/Table/index.d.ts +1 -1
  130. package/libs-ui/react-core/src/TextArea/index.d.ts +1 -1
  131. package/libs-ui/react-core/src/TextInput/index.d.ts +1 -1
  132. package/package.json +2 -2
  133. package/types.js +5 -0
  134. package/Field/ConditionalField.js +0 -92
  135. package/es/Field/ConditionalField.js +0 -77
  136. package/esm/Field/ConditionalField.js +0 -77
  137. package/libs/form/src/Field/ConditionalField.d.ts +0 -17
package/CHANGELOG.md CHANGED
@@ -1,6 +1,13 @@
1
1
  # Change Log - @digigov/form
2
2
 
3
- This log was last generated on Thu, 23 Jun 2022 11:49:45 GMT and should not be manually modified.
3
+ This log was last generated on Thu, 07 Jul 2022 13:01:18 GMT and should not be manually modified.
4
+
5
+ ## 0.6.10
6
+ Thu, 07 Jul 2022 13:01:18 GMT
7
+
8
+ ### Patches
9
+
10
+ - refactor code to resolve circular dependencies
4
11
 
5
12
  ## 0.6.9
6
13
  Thu, 23 Jun 2022 11:49:45 GMT
package/Field/index.js CHANGED
@@ -7,19 +7,17 @@ var _typeof = require("@babel/runtime/helpers/typeof");
7
7
  Object.defineProperty(exports, "__esModule", {
8
8
  value: true
9
9
  });
10
- exports["default"] = exports.FieldBase = exports.Field = void 0;
11
-
12
- var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
10
+ exports["default"] = exports.FieldBase = exports.Field = exports.ConditionalField = void 0;
13
11
 
14
12
  var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
15
13
 
16
- var _react = _interopRequireWildcard(require("react"));
14
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
17
15
 
18
- var _ConditionalField = require("@digigov/form/Field/ConditionalField");
16
+ var _react = _interopRequireWildcard(require("react"));
19
17
 
20
18
  var _reactHookForm = require("react-hook-form");
21
19
 
22
- var _form = require("@digigov/form");
20
+ var _FormContext = require("@digigov/form/FormContext");
23
21
 
24
22
  var _Field = _interopRequireDefault(require("@digigov/react-core/Field"));
25
23
 
@@ -56,6 +54,81 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "functio
56
54
 
57
55
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
58
56
 
57
+ function evaluateFieldWithConditions(field, variables) {
58
+ var newField = (0, _extends2["default"])({}, field);
59
+
60
+ if (variables) {
61
+ for (var key in variables) {
62
+ if (field.condition[key] && field.condition[key].is === variables[key]) {
63
+ var then = field.condition[key].then || {};
64
+
65
+ for (var attr in then) {
66
+ newField[attr] = then[attr];
67
+ }
68
+ } else if (field.condition[key]) {
69
+ var otherwise = field.condition[key]["else"] || {};
70
+
71
+ for (var _attr in otherwise) {
72
+ newField[_attr] = otherwise[_attr];
73
+ }
74
+ }
75
+ }
76
+ }
77
+
78
+ return newField;
79
+ }
80
+
81
+ var ChildFieldMemo = /*#__PURE__*/_react["default"].memo(function ChildField(_ref) {
82
+ var dependencies = _ref.dependencies,
83
+ field = _ref.field,
84
+ control = _ref.control,
85
+ register = _ref.register,
86
+ error = _ref.error;
87
+ var newField = evaluateFieldWithConditions(field, dependencies);
88
+ return /*#__PURE__*/_react["default"].createElement(FieldBase, (0, _extends2["default"])({}, newField, {
89
+ name: newField.key,
90
+ control: control,
91
+ register: register,
92
+ error: error
93
+ }));
94
+ }, function (prev, next) {
95
+ if (!prev || !prev.dependencies) {
96
+ return false;
97
+ }
98
+
99
+ if (prev.error !== next.error) {
100
+ return false;
101
+ }
102
+
103
+ for (var dep in next.dependencies) {
104
+ if (next.dependencies[dep] !== prev.dependencies[dep]) {
105
+ return false;
106
+ }
107
+ }
108
+
109
+ return true;
110
+ });
111
+
112
+ var ConditionalField = function ConditionalField(_ref2) {
113
+ var control = _ref2.control,
114
+ field = _ref2.field,
115
+ register = _ref2.register,
116
+ error = _ref2.error;
117
+ var dependencyKeys = Object.keys(field.condition);
118
+ var variables = (0, _reactHookForm.useWatch)({
119
+ name: dependencyKeys,
120
+ control: control
121
+ });
122
+ return /*#__PURE__*/_react["default"].createElement(ChildFieldMemo, {
123
+ dependencies: variables,
124
+ field: field,
125
+ control: control,
126
+ register: register,
127
+ error: error
128
+ });
129
+ };
130
+
131
+ exports.ConditionalField = ConditionalField;
59
132
  var FIELD_COMPONENTS = {
60
133
  text: {
61
134
  component: _Input["default"]
@@ -90,12 +163,12 @@ var ALTERNATIVE_COMPONENTS = {
90
163
  }
91
164
  };
92
165
 
93
- var FieldContainer = function FieldContainer(_ref) {
94
- var name = _ref.name,
95
- wrapper = _ref.wrapper,
96
- label = _ref.label,
97
- children = _ref.children,
98
- error = _ref.error;
166
+ var FieldContainer = function FieldContainer(_ref3) {
167
+ var name = _ref3.name,
168
+ wrapper = _ref3.wrapper,
169
+ label = _ref3.label,
170
+ children = _ref3.children,
171
+ error = _ref3.error;
99
172
 
100
173
  var _useTranslation = (0, _i18n.useTranslation)(),
101
174
  t = _useTranslation.t;
@@ -154,10 +227,10 @@ var FieldBase = function FieldBase(props) {
154
227
  }, /*#__PURE__*/_react["default"].createElement(_reactHookForm.Controller, {
155
228
  control: control,
156
229
  name: name,
157
- render: function render(_ref2) {
158
- var onChange = _ref2.onChange,
159
- onBlur = _ref2.onBlur,
160
- value = _ref2.value;
230
+ render: function render(_ref4) {
231
+ var onChange = _ref4.onChange,
232
+ onBlur = _ref4.onBlur,
233
+ value = _ref4.value;
161
234
  return /*#__PURE__*/_react["default"].createElement(Component, (0, _extends2["default"])({
162
235
  name: name,
163
236
  onChange: onChange,
@@ -210,7 +283,7 @@ var FieldBase = function FieldBase(props) {
210
283
  exports.FieldBase = FieldBase;
211
284
 
212
285
  var useField = function useField(name, customField) {
213
- var _useContext = (0, _react.useContext)(_form.FormContext),
286
+ var _useContext = (0, _react.useContext)(_FormContext.FormContext),
214
287
  fieldsMap = _useContext.fieldsMap,
215
288
  control = _useContext.control,
216
289
  register = _useContext.register,
@@ -236,41 +309,41 @@ function calculateField(children, field, componentRegistry) {
236
309
  var _field$extra;
237
310
 
238
311
  var calculatedField = (0, _extends2["default"])({}, field);
239
- var FieldComponentRegistry = (0, _extends2["default"])({}, FIELD_COMPONENTS, componentRegistry);
312
+ var fieldComponentRegistry = (0, _extends2["default"])({}, FIELD_COMPONENTS, componentRegistry);
240
313
 
241
314
  if (children) {
242
315
  calculatedField.component = children;
243
316
  } else if (typeof field.component === 'function') {// leave as is
244
317
  } else if (!field.component && !field.type) {
245
- var _FieldComponentRegist;
318
+ var _fieldComponentRegist;
246
319
 
247
- calculatedField.component = FieldComponentRegistry.string.component;
248
- calculatedField.controlled = ((_FieldComponentRegist = FieldComponentRegistry.string) === null || _FieldComponentRegist === void 0 ? void 0 : _FieldComponentRegist.controlled) || false;
320
+ calculatedField.component = fieldComponentRegistry.string.component;
321
+ calculatedField.controlled = ((_fieldComponentRegist = fieldComponentRegistry.string) === null || _fieldComponentRegist === void 0 ? void 0 : _fieldComponentRegist.controlled) || false;
249
322
  } else if (typeof (field === null || field === void 0 ? void 0 : (_field$extra = field.extra) === null || _field$extra === void 0 ? void 0 : _field$extra.component) === 'string' && ALTERNATIVE_COMPONENTS[field.extra.component]) {
250
323
  var _ALTERNATIVE_COMPONEN;
251
324
 
252
325
  calculatedField.controlled = ((_ALTERNATIVE_COMPONEN = ALTERNATIVE_COMPONENTS[field.extra.component]) === null || _ALTERNATIVE_COMPONEN === void 0 ? void 0 : _ALTERNATIVE_COMPONEN.controlled) || false;
253
326
  calculatedField.component = ALTERNATIVE_COMPONENTS[field.extra.component].component;
254
- } else if (!field.component && field.type && FieldComponentRegistry[field.type]) {
255
- var _FieldComponentRegist2;
327
+ } else if (!field.component && field.type && fieldComponentRegistry[field.type]) {
328
+ var _fieldComponentRegist2;
256
329
 
257
- calculatedField.component = FieldComponentRegistry[field.type].component;
258
- calculatedField.wrapper = FieldComponentRegistry[field.type].wrapper;
259
- calculatedField.controlled = ((_FieldComponentRegist2 = FieldComponentRegistry[field.type]) === null || _FieldComponentRegist2 === void 0 ? void 0 : _FieldComponentRegist2.controlled) || false;
330
+ calculatedField.component = fieldComponentRegistry[field.type].component;
331
+ calculatedField.wrapper = fieldComponentRegistry[field.type].wrapper;
332
+ calculatedField.controlled = ((_fieldComponentRegist2 = fieldComponentRegistry[field.type]) === null || _fieldComponentRegist2 === void 0 ? void 0 : _fieldComponentRegist2.controlled) || false;
260
333
  } else {
261
- var _FieldComponentRegist3;
334
+ var _fieldComponentRegist3;
262
335
 
263
- calculatedField.component = FieldComponentRegistry.string.component;
264
- calculatedField.controlled = ((_FieldComponentRegist3 = FieldComponentRegistry.string) === null || _FieldComponentRegist3 === void 0 ? void 0 : _FieldComponentRegist3.controlled) || false;
336
+ calculatedField.component = fieldComponentRegistry.string.component;
337
+ calculatedField.controlled = ((_fieldComponentRegist3 = fieldComponentRegistry.string) === null || _fieldComponentRegist3 === void 0 ? void 0 : _fieldComponentRegist3.controlled) || false;
265
338
  }
266
339
 
267
340
  return calculatedField;
268
341
  }
269
342
 
270
- var Field = function Field(_ref3) {
271
- var name = _ref3.name,
272
- children = _ref3.children,
273
- customField = (0, _objectWithoutProperties2["default"])(_ref3, _excluded2);
343
+ var Field = function Field(_ref5) {
344
+ var name = _ref5.name,
345
+ children = _ref5.children,
346
+ customField = (0, _objectWithoutProperties2["default"])(_ref5, _excluded2);
274
347
 
275
348
  var _useField = useField(name, customField !== null && customField !== void 0 && customField.type ? customField : null),
276
349
  field = _useField.field,
@@ -284,7 +357,7 @@ var Field = function Field(_ref3) {
284
357
  }, [field]);
285
358
 
286
359
  if (calculatedField.condition) {
287
- return /*#__PURE__*/_react["default"].createElement(_ConditionalField.ConditionalField, {
360
+ return /*#__PURE__*/_react["default"].createElement(ConditionalField, {
288
361
  control: control,
289
362
  register: register,
290
363
  field: calculatedField,
package/Field/types.js ADDED
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
@@ -0,0 +1,63 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ var _typeof = require("@babel/runtime/helpers/typeof");
6
+
7
+ Object.defineProperty(exports, "__esModule", {
8
+ value: true
9
+ });
10
+ exports.FieldsetWithContext = void 0;
11
+
12
+ var _react = _interopRequireWildcard(require("react"));
13
+
14
+ var _FormContext = require("@digigov/form/FormContext");
15
+
16
+ var _Field = _interopRequireDefault(require("@digigov/form/Field"));
17
+
18
+ var _i18n = require("@digigov/ui/app/i18n");
19
+
20
+ var _Fieldset = require("@digigov/form/Fieldset/");
21
+
22
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
23
+
24
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
25
+
26
+ var FieldsetWithContext = function FieldsetWithContext(_ref) {
27
+ var name = _ref.name;
28
+
29
+ var _useFieldset = useFieldset(name),
30
+ label = _useFieldset.label,
31
+ body = _useFieldset.body,
32
+ fields = _useFieldset.fields;
33
+
34
+ var _useTranslation = (0, _i18n.useTranslation)(),
35
+ t = _useTranslation.t;
36
+
37
+ var _ref2 = /*#__PURE__*/_react["default"].createElement(_Fieldset.FieldsetBody, null, body);
38
+
39
+ return (0, _react.useMemo)(function () {
40
+ return /*#__PURE__*/_react["default"].createElement(_Fieldset.Fieldset, null, (label === null || label === void 0 ? void 0 : label.primary) && /*#__PURE__*/_react["default"].createElement(_Fieldset.FieldsetLabel, null, t(label.primary)), (label === null || label === void 0 ? void 0 : label.secondary) && /*#__PURE__*/_react["default"].createElement(_Fieldset.FieldsetCaption, null, t(label.secondary)), body && _ref2, fields.map(function (field) {
41
+ return /*#__PURE__*/_react["default"].createElement(_Field["default"], {
42
+ key: field,
43
+ name: field
44
+ });
45
+ }));
46
+ }, [label === null || label === void 0 ? void 0 : label.primary, label === null || label === void 0 ? void 0 : label.secondary, body, fields]);
47
+ };
48
+
49
+ exports.FieldsetWithContext = FieldsetWithContext;
50
+
51
+ var useFieldset = function useFieldset(name) {
52
+ var _useContext = (0, _react.useContext)(_FormContext.FormContext),
53
+ fieldsetsMap = _useContext.fieldsetsMap;
54
+
55
+ if (fieldsetsMap && fieldsetsMap[name]) {
56
+ return (0, _react.useMemo)(function () {
57
+ return fieldsetsMap[name];
58
+ }, [name]);
59
+ } else {
60
+ if (!fieldsetsMap) throw new Error("Fieldsets is not defined");
61
+ throw new Error("No fieldset with name ".concat(name, " found"));
62
+ }
63
+ };
package/Fieldset/index.js CHANGED
@@ -2,14 +2,12 @@
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
4
 
5
- var _typeof = require("@babel/runtime/helpers/typeof");
6
-
7
5
  Object.defineProperty(exports, "__esModule", {
8
6
  value: true
9
7
  });
10
- exports["default"] = exports.FieldsetWithContext = exports.FieldsetLabel = exports.FieldsetCaption = exports.FieldsetBody = exports.Fieldset = void 0;
8
+ exports["default"] = exports.FieldsetLabel = exports.FieldsetCaption = exports.FieldsetBody = exports.Fieldset = void 0;
11
9
 
12
- var _react = _interopRequireWildcard(require("react"));
10
+ var _react = _interopRequireDefault(require("react"));
13
11
 
14
12
  var _Grid = _interopRequireDefault(require("@digigov/ui/layouts/Grid"));
15
13
 
@@ -19,18 +17,8 @@ var _FieldsetLegend = _interopRequireDefault(require("@digigov/react-core/Fields
19
17
 
20
18
  var _Hint = _interopRequireDefault(require("@digigov/react-core/Hint"));
21
19
 
22
- var _form = require("@digigov/form");
23
-
24
- var _Field = _interopRequireDefault(require("@digigov/form/Field"));
25
-
26
20
  var _NormalText = _interopRequireDefault(require("@digigov/ui/typography/NormalText"));
27
21
 
28
- var _i18n = require("@digigov/ui/app/i18n");
29
-
30
- function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
31
-
32
- function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
33
-
34
22
  var FieldsetLabel = function FieldsetLabel(_ref) {
35
23
  var children = _ref.children;
36
24
  return /*#__PURE__*/_react["default"].createElement(_FieldsetLegend["default"], {
@@ -58,55 +46,8 @@ var FieldsetBody = function FieldsetBody(_ref3) {
58
46
 
59
47
  exports.FieldsetBody = FieldsetBody;
60
48
 
61
- var useFieldset = function useFieldset(name) {
62
- var _useContext = (0, _react.useContext)(_form.FormContext),
63
- fieldsetsMap = _useContext.fieldsetsMap;
64
-
65
- if (fieldsetsMap && fieldsetsMap[name]) {
66
- return (0, _react.useMemo)(function () {
67
- return fieldsetsMap[name];
68
- }, [name]);
69
- } else {
70
- if (!fieldsetsMap) throw new Error("Fieldsets is not defined");
71
- throw new Error("No fieldset with name ".concat(name, " found"));
72
- }
73
- };
74
-
75
- var FieldsetWithContext = function FieldsetWithContext(_ref4) {
76
- var name = _ref4.name;
77
-
78
- var _useFieldset = useFieldset(name),
79
- label = _useFieldset.label,
80
- body = _useFieldset.body,
81
- fields = _useFieldset.fields;
82
-
83
- var _useTranslation = (0, _i18n.useTranslation)(),
84
- t = _useTranslation.t;
85
-
86
- var _ref5 = /*#__PURE__*/_react["default"].createElement(FieldsetBody, null, body);
87
-
88
- return (0, _react.useMemo)(function () {
89
- return /*#__PURE__*/_react["default"].createElement(Fieldset, null, (label === null || label === void 0 ? void 0 : label.primary) && /*#__PURE__*/_react["default"].createElement(FieldsetLabel, null, t(label.primary)), (label === null || label === void 0 ? void 0 : label.secondary) && /*#__PURE__*/_react["default"].createElement(FieldsetCaption, null, t(label.secondary)), body && _ref5, fields.map(function (field) {
90
- return /*#__PURE__*/_react["default"].createElement(_Field["default"], {
91
- key: field,
92
- name: field
93
- });
94
- }));
95
- }, [label === null || label === void 0 ? void 0 : label.primary, label === null || label === void 0 ? void 0 : label.secondary, body, fields]);
96
- };
97
-
98
- exports.FieldsetWithContext = FieldsetWithContext;
99
-
100
- var Fieldset = function Fieldset(_ref6) {
101
- var name = _ref6.name,
102
- children = _ref6.children;
103
-
104
- if (name && !children) {
105
- return /*#__PURE__*/_react["default"].createElement(FieldsetWithContext, {
106
- name: name
107
- });
108
- }
109
-
49
+ var Fieldset = function Fieldset(_ref4) {
50
+ var children = _ref4.children;
110
51
  return /*#__PURE__*/_react["default"].createElement(_Fieldset["default"], null, children);
111
52
  };
112
53
 
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
package/FormBuilder.js ADDED
@@ -0,0 +1,178 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ var _typeof = require("@babel/runtime/helpers/typeof");
6
+
7
+ Object.defineProperty(exports, "__esModule", {
8
+ value: true
9
+ });
10
+ exports["default"] = exports.FormBuilder = exports.FormBase = void 0;
11
+
12
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
13
+
14
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
15
+
16
+ var _extends4 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
17
+
18
+ var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
19
+
20
+ var _react = _interopRequireWildcard(require("react"));
21
+
22
+ var _reactHookForm = require("react-hook-form");
23
+
24
+ var _utils = require("@digigov/form/utils");
25
+
26
+ var _Grid = _interopRequireDefault(require("@digigov/ui/layouts/Grid"));
27
+
28
+ var _validators = require("@digigov/form/validators");
29
+
30
+ var _Fieldset = _interopRequireDefault(require("@digigov/form/Fieldset"));
31
+
32
+ var _Field = _interopRequireDefault(require("@digigov/form/Field"));
33
+
34
+ var _FormContext = require("@digigov/form/FormContext");
35
+
36
+ var _excluded = ["onSubmit", "children", "registerField", "fieldsMap", "fieldsetsMap", "resolver", "mode", "initial", "reValidateMode", "shouldFocusError", "criteriaMode", "componentRegistry"],
37
+ _excluded2 = ["fields", "fieldsets", "initial", "onSubmit", "children", "reValidateMode", "mode", "shouldFocusError", "criteriaMode", "auto", "validatorRegistry", "componentRegistry"];
38
+
39
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
40
+
41
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
42
+
43
+ var FormBase = /*#__PURE__*/_react["default"].forwardRef(function FormBase(_ref, ref) {
44
+ var onSubmit = _ref.onSubmit,
45
+ children = _ref.children,
46
+ registerField = _ref.registerField,
47
+ fieldsMap = _ref.fieldsMap,
48
+ fieldsetsMap = _ref.fieldsetsMap,
49
+ resolver = _ref.resolver,
50
+ mode = _ref.mode,
51
+ initial = _ref.initial,
52
+ reValidateMode = _ref.reValidateMode,
53
+ shouldFocusError = _ref.shouldFocusError,
54
+ criteriaMode = _ref.criteriaMode,
55
+ componentRegistry = _ref.componentRegistry,
56
+ props = (0, _objectWithoutProperties2["default"])(_ref, _excluded);
57
+ var form = (0, _reactHookForm.useForm)({
58
+ resolver: resolver,
59
+ mode: mode,
60
+ defaultValues: initial,
61
+ reValidateMode: reValidateMode,
62
+ shouldFocusError: shouldFocusError,
63
+ criteriaMode: criteriaMode
64
+ });
65
+ var handleSubmit = (0, _react.useCallback)(function (data) {
66
+ var errors = onSubmit && onSubmit(data);
67
+
68
+ if (errors) {
69
+ for (var key in errors) {
70
+ form.setError(key, errors[key]);
71
+ }
72
+ }
73
+ }, [onSubmit]);
74
+ var ctx = {
75
+ fieldsMap: fieldsMap,
76
+ fieldsetsMap: fieldsetsMap,
77
+ control: form.control,
78
+ register: form.register,
79
+ registerField: registerField,
80
+ errors: form.errors,
81
+ reset: form.reset,
82
+ componentRegistry: componentRegistry
83
+ };
84
+ return /*#__PURE__*/_react["default"].createElement(_FormContext.FormContext.Provider, {
85
+ value: ctx
86
+ }, /*#__PURE__*/_react["default"].createElement("form", (0, _extends4["default"])({
87
+ onSubmit: form.handleSubmit(handleSubmit),
88
+ ref: ref
89
+ }, props), /*#__PURE__*/_react["default"].createElement(_Grid["default"], {
90
+ container: true
91
+ }, /*#__PURE__*/_react["default"].createElement(_Grid["default"], {
92
+ item: true,
93
+ xs: 12
94
+ }, children))));
95
+ });
96
+
97
+ exports.FormBase = FormBase;
98
+
99
+ var FormBuilder = /*#__PURE__*/_react["default"].forwardRef(function FormBuilder(_ref2, ref) {
100
+ var _ref2$fields = _ref2.fields,
101
+ fields = _ref2$fields === void 0 ? [] : _ref2$fields,
102
+ fieldsets = _ref2.fieldsets,
103
+ _ref2$initial = _ref2.initial,
104
+ initial = _ref2$initial === void 0 ? {} : _ref2$initial,
105
+ onSubmit = _ref2.onSubmit,
106
+ children = _ref2.children,
107
+ _ref2$reValidateMode = _ref2.reValidateMode,
108
+ reValidateMode = _ref2$reValidateMode === void 0 ? 'onSubmit' : _ref2$reValidateMode,
109
+ _ref2$mode = _ref2.mode,
110
+ mode = _ref2$mode === void 0 ? 'onSubmit' : _ref2$mode,
111
+ _ref2$shouldFocusErro = _ref2.shouldFocusError,
112
+ shouldFocusError = _ref2$shouldFocusErro === void 0 ? true : _ref2$shouldFocusErro,
113
+ _ref2$criteriaMode = _ref2.criteriaMode,
114
+ criteriaMode = _ref2$criteriaMode === void 0 ? 'firstError' : _ref2$criteriaMode,
115
+ _ref2$auto = _ref2.auto,
116
+ auto = _ref2$auto === void 0 ? false : _ref2$auto,
117
+ validatorRegistry = _ref2.validatorRegistry,
118
+ componentRegistry = _ref2.componentRegistry,
119
+ props = (0, _objectWithoutProperties2["default"])(_ref2, _excluded2);
120
+ var fieldsState = (0, _react.useRef)(fields);
121
+ var setFieldsState = (0, _react.useCallback)(function (newFields) {
122
+ fieldsState.current = newFields;
123
+ }, []);
124
+ var schema = (0, _validators.useValidationSchema)(fieldsState, validatorRegistry);
125
+ var registerField = (0, _react.useCallback)(function (field) {
126
+ setFieldsState([].concat((0, _toConsumableArray2["default"])(fieldsState.current), [field]));
127
+ }, []);
128
+ var resolver;
129
+ var fieldsMap;
130
+ var fieldsetsMap;
131
+ var fieldChildren;
132
+
133
+ if (schema) {
134
+ resolver = (0, _utils.yupResolver)(schema);
135
+ fieldsMap = fields ? fields.reduce(function (map, field) {
136
+ return (0, _extends4["default"])({}, map, (0, _defineProperty2["default"])({}, field.key, field));
137
+ }, {}) : {};
138
+ fieldsetsMap = fieldsets && fieldsets.reduce(function (map, fieldset) {
139
+ return (0, _extends4["default"])({}, map, (0, _defineProperty2["default"])({}, fieldset.key, fieldset));
140
+ }, {});
141
+
142
+ if (auto) {
143
+ if (fieldsets) {
144
+ fieldChildren = fieldsets.map(function (fieldset) {
145
+ return /*#__PURE__*/_react["default"].createElement(_Fieldset["default"], {
146
+ key: fieldset.key
147
+ });
148
+ });
149
+ } else if (fields) {
150
+ fieldChildren = fields.map(function (field) {
151
+ return /*#__PURE__*/_react["default"].createElement(_Field["default"], {
152
+ key: field.key,
153
+ name: field.key
154
+ });
155
+ });
156
+ }
157
+ }
158
+ }
159
+
160
+ return /*#__PURE__*/_react["default"].createElement(FormBase, (0, _extends4["default"])({
161
+ resolver: resolver,
162
+ fieldsetsMap: fieldsetsMap,
163
+ fieldsMap: fieldsMap,
164
+ registerField: registerField,
165
+ initial: initial,
166
+ reValidateMode: reValidateMode,
167
+ mode: mode,
168
+ shouldFocusError: shouldFocusError,
169
+ criteriaMode: criteriaMode,
170
+ onSubmit: onSubmit,
171
+ componentRegistry: componentRegistry,
172
+ ref: ref
173
+ }, props), fieldChildren, children);
174
+ });
175
+
176
+ exports.FormBuilder = FormBuilder;
177
+ var _default = FormBuilder;
178
+ exports["default"] = _default;
package/FormContext.js ADDED
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.FormContext = void 0;
7
+
8
+ var _react = require("react");
9
+
10
+ var FormContext = /*#__PURE__*/(0, _react.createContext)({
11
+ fieldsMap: {},
12
+ fieldsetsMap: {}
13
+ });
14
+ exports.FormContext = FormContext;