@digigov/form 0.6.10 → 0.7.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.
Files changed (108) hide show
  1. package/CHANGELOG.md +12 -1
  2. package/Field/FieldBase.js +110 -0
  3. package/Field/FieldConditional.js +72 -0
  4. package/Field/FieldContainer.js +62 -0
  5. package/Field/index.js +15 -328
  6. package/Field/utils.js +146 -0
  7. package/FormBuilder.js +12 -12
  8. package/Questions/__snapshots__/index.spec.tsx.snap +461 -2499
  9. package/es/Field/FieldBase.js +93 -0
  10. package/es/Field/FieldConditional.js +54 -0
  11. package/es/Field/FieldContainer.js +40 -0
  12. package/es/Field/index.js +11 -308
  13. package/es/Field/utils.js +122 -0
  14. package/es/FormBuilder.js +11 -11
  15. package/es/Questions/__snapshots__/index.spec.tsx.snap +461 -2499
  16. package/es/internal.js +2 -0
  17. package/es/utils.js +5 -3
  18. package/es/validators/index.js +155 -0
  19. package/es/validators/types.js +1 -0
  20. package/es/validators/utils/afm.js +35 -0
  21. package/es/validators/utils/file.js +52 -0
  22. package/es/validators/utils/iban.js +123 -0
  23. package/es/validators/utils/index.js +105 -0
  24. package/es/validators/utils/phone.js +122 -0
  25. package/es/validators/utils/postal_code.js +29 -0
  26. package/es/validators/utils/uuid4.js +20 -0
  27. package/es/{validators.spec.js → validators/validators.spec.js} +1 -1
  28. package/esm/Field/FieldBase.js +93 -0
  29. package/esm/Field/FieldConditional.js +54 -0
  30. package/esm/Field/FieldContainer.js +40 -0
  31. package/esm/Field/index.js +11 -308
  32. package/esm/Field/utils.js +122 -0
  33. package/esm/FormBuilder.js +11 -11
  34. package/esm/Questions/__snapshots__/index.spec.tsx.snap +461 -2499
  35. package/esm/index.js +1 -1
  36. package/esm/internal.js +2 -0
  37. package/esm/utils.js +5 -3
  38. package/esm/validators/index.js +155 -0
  39. package/esm/validators/types.js +1 -0
  40. package/esm/validators/utils/afm.js +35 -0
  41. package/esm/validators/utils/file.js +52 -0
  42. package/esm/validators/utils/iban.js +123 -0
  43. package/esm/validators/utils/index.js +105 -0
  44. package/esm/validators/utils/phone.js +122 -0
  45. package/esm/validators/utils/postal_code.js +29 -0
  46. package/esm/validators/utils/uuid4.js +20 -0
  47. package/esm/{validators.spec.js → validators/validators.spec.js} +1 -1
  48. package/internal.js +21 -0
  49. package/libs/form/src/Field/FieldBase.d.ts +3 -0
  50. package/libs/form/src/Field/FieldConditional.d.ts +4 -0
  51. package/libs/form/src/Field/FieldContainer.d.ts +4 -0
  52. package/libs/form/src/Field/index.d.ts +1 -3
  53. package/libs/form/src/Field/types.d.ts +2 -2
  54. package/libs/form/src/Field/utils.d.ts +5 -0
  55. package/libs/form/src/FormContext.d.ts +2 -2
  56. package/libs/form/src/internal.d.ts +2 -0
  57. package/libs/form/src/types.d.ts +3 -2
  58. package/libs/form/src/validators/index.d.ts +8 -0
  59. package/libs/form/src/validators/types.d.ts +2 -0
  60. package/libs/form/src/validators/utils/afm.d.ts +6 -0
  61. package/libs/form/src/validators/utils/file.d.ts +1 -0
  62. package/libs/form/src/validators/utils/iban.d.ts +2 -0
  63. package/libs/form/src/validators/utils/index.d.ts +12 -0
  64. package/libs/form/src/validators/utils/phone.d.ts +9 -0
  65. package/libs/form/src/validators/utils/postal_code.d.ts +2 -0
  66. package/libs/form/src/validators/utils/uuid4.d.ts +6 -0
  67. package/libs/form/src/{validators.spec.d.ts → validators/validators.spec.d.ts} +0 -0
  68. package/libs/ui/src/core/Button/BackButton.d.ts +1 -1
  69. package/libs/ui/src/core/Button/ButtonLink.d.ts +1 -1
  70. package/libs/ui/src/core/Button/index.d.ts +1 -1
  71. package/libs/ui/src/core/NavList/NavListItem.d.ts +1 -0
  72. package/libs/ui/src/core/NavList/NavListItemBase.d.ts +1 -0
  73. package/libs/ui/src/core/NavList/types.d.ts +1 -0
  74. package/libs-ui/react-core/src/AccordionSectionSummary/index.d.ts +2 -1
  75. package/libs-ui/react-core/src/BackLink/index.d.ts +1 -1
  76. package/libs-ui/react-core/src/Button/index.d.ts +1 -1
  77. package/libs-ui/react-core/src/ButtonLink/index.d.ts +1 -1
  78. package/libs-ui/react-core/src/CallToAction/index.d.ts +1 -1
  79. package/libs-ui/react-core/src/CheckboxItem/index.d.ts +1 -1
  80. package/libs-ui/react-core/src/DateInputItem/index.d.ts +1 -1
  81. package/libs-ui/react-core/src/Field/index.d.ts +3 -3
  82. package/libs-ui/react-core/src/FileUpload/index.d.ts +1 -1
  83. package/libs-ui/react-core/src/Form/index.d.ts +11 -0
  84. package/libs-ui/react-core/src/Link/index.d.ts +1 -1
  85. package/libs-ui/react-core/src/NotificationBannerLink/index.d.ts +1 -1
  86. package/libs-ui/react-core/src/RadioItem/index.d.ts +1 -1
  87. package/libs-ui/react-core/src/Select/index.d.ts +1 -1
  88. package/libs-ui/react-core/src/SvgIcon/index.d.ts +1 -1
  89. package/libs-ui/react-core/src/TabsListItem/index.d.ts +1 -1
  90. package/libs-ui/react-core/src/TextArea/index.d.ts +1 -1
  91. package/libs-ui/react-core/src/TextInput/index.d.ts +1 -1
  92. package/package.json +3 -2
  93. package/utils.js +6 -4
  94. package/validators/index.js +181 -0
  95. package/validators/types.js +5 -0
  96. package/validators/utils/afm.js +45 -0
  97. package/validators/utils/file.js +62 -0
  98. package/validators/utils/iban.js +134 -0
  99. package/validators/utils/index.js +210 -0
  100. package/validators/utils/phone.js +144 -0
  101. package/validators/utils/postal_code.js +40 -0
  102. package/validators/utils/uuid4.js +30 -0
  103. package/validators/validators.spec.js +88 -0
  104. package/es/validators.js +0 -626
  105. package/esm/validators.js +0 -626
  106. package/libs/form/src/validators.d.ts +0 -14
  107. package/validators.js +0 -662
  108. package/validators.spec.js +0 -88
package/Field/utils.js ADDED
@@ -0,0 +1,146 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.calculateField = calculateField;
9
+ exports.evaluateFieldWithConditions = evaluateFieldWithConditions;
10
+ exports.useField = void 0;
11
+
12
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
13
+
14
+ var _react = require("react");
15
+
16
+ var _Input = _interopRequireDefault(require("@digigov/form/inputs/Input"));
17
+
18
+ var _Checkboxes = _interopRequireDefault(require("@digigov/form/inputs/Checkboxes"));
19
+
20
+ var _Radio = _interopRequireDefault(require("@digigov/form/inputs/Radio"));
21
+
22
+ var _Select = _interopRequireDefault(require("@digigov/form/inputs/Select"));
23
+
24
+ var _FileInput = _interopRequireDefault(require("@digigov/form/inputs/FileInput"));
25
+
26
+ var _DateInput = _interopRequireDefault(require("@digigov/form/inputs/DateInput"));
27
+
28
+ var _FormContext = require("@digigov/form/FormContext");
29
+
30
+ var FIELD_COMPONENTS = {
31
+ text: {
32
+ component: _Input["default"]
33
+ },
34
+ string: {
35
+ component: _Input["default"]
36
+ },
37
+ file: {
38
+ wrapper: 'fieldset',
39
+ component: _FileInput["default"]
40
+ },
41
+ date: {
42
+ wrapper: 'fieldset',
43
+ controlled: true,
44
+ component: _DateInput["default"]
45
+ },
46
+ 'choice:multiple': {
47
+ wrapper: 'fieldset',
48
+ controlled: true,
49
+ component: _Checkboxes["default"]
50
+ },
51
+ 'choice:single': {
52
+ wrapper: 'fieldset',
53
+ controlled: false,
54
+ component: _Radio["default"]
55
+ }
56
+ };
57
+ var ALTERNATIVE_COMPONENTS = {
58
+ Select: {
59
+ component: _Select["default"],
60
+ controlled: false
61
+ }
62
+ };
63
+
64
+ function calculateField(children, field, componentRegistry) {
65
+ var _field$extra;
66
+
67
+ var calculatedField = (0, _extends2["default"])({}, field);
68
+ var fieldComponentRegistry = (0, _extends2["default"])({}, FIELD_COMPONENTS, componentRegistry);
69
+
70
+ if (children) {
71
+ calculatedField.component = children;
72
+ } else if (typeof field.component === 'function') {// leave as is
73
+ } else if (!field.component && !field.type) {
74
+ var _fieldComponentRegist;
75
+
76
+ calculatedField.component = fieldComponentRegistry.string.component;
77
+ calculatedField.controlled = ((_fieldComponentRegist = fieldComponentRegistry.string) === null || _fieldComponentRegist === void 0 ? void 0 : _fieldComponentRegist.controlled) || false;
78
+ } 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]) {
79
+ var _ALTERNATIVE_COMPONEN;
80
+
81
+ calculatedField.controlled = ((_ALTERNATIVE_COMPONEN = ALTERNATIVE_COMPONENTS[field.extra.component]) === null || _ALTERNATIVE_COMPONEN === void 0 ? void 0 : _ALTERNATIVE_COMPONEN.controlled) || false;
82
+ calculatedField.component = ALTERNATIVE_COMPONENTS[field.extra.component].component;
83
+ } else if (!field.component && field.type && fieldComponentRegistry[field.type]) {
84
+ var _fieldComponentRegist2;
85
+
86
+ calculatedField.component = fieldComponentRegistry[field.type].component;
87
+ calculatedField.wrapper = fieldComponentRegistry[field.type].wrapper;
88
+ calculatedField.controlled = ((_fieldComponentRegist2 = fieldComponentRegistry[field.type]) === null || _fieldComponentRegist2 === void 0 ? void 0 : _fieldComponentRegist2.controlled) || false;
89
+ } else {
90
+ var _fieldComponentRegist3;
91
+
92
+ calculatedField.component = fieldComponentRegistry.string.component;
93
+ calculatedField.controlled = ((_fieldComponentRegist3 = fieldComponentRegistry.string) === null || _fieldComponentRegist3 === void 0 ? void 0 : _fieldComponentRegist3.controlled) || false;
94
+ }
95
+
96
+ return calculatedField;
97
+ }
98
+
99
+ var useField = function useField(name, customField) {
100
+ var _useContext = (0, _react.useContext)(_FormContext.FormContext),
101
+ fieldsMap = _useContext.fieldsMap,
102
+ control = _useContext.control,
103
+ register = _useContext.register,
104
+ errors = _useContext.errors,
105
+ registerField = _useContext.registerField,
106
+ componentRegistry = _useContext.componentRegistry;
107
+
108
+ (0, _react.useMemo)(function () {
109
+ return (customField === null || customField === void 0 ? void 0 : customField.type) && registerField((0, _extends2["default"])({}, customField, {
110
+ key: name
111
+ }));
112
+ }, [customField, name, registerField]);
113
+ return {
114
+ field: customField || fieldsMap[name],
115
+ control: control,
116
+ register: register,
117
+ componentRegistry: componentRegistry,
118
+ error: errors[name]
119
+ };
120
+ };
121
+
122
+ exports.useField = useField;
123
+
124
+ function evaluateFieldWithConditions(field, variables) {
125
+ var newField = (0, _extends2["default"])({}, field);
126
+
127
+ if (variables) {
128
+ for (var key in variables) {
129
+ if (field.condition[key] && field.condition[key].is === variables[key]) {
130
+ var then = field.condition[key].then || {};
131
+
132
+ for (var attr in then) {
133
+ newField[attr] = then[attr];
134
+ }
135
+ } else if (field.condition[key]) {
136
+ var otherwise = field.condition[key]["else"] || {};
137
+
138
+ for (var _attr in otherwise) {
139
+ newField[_attr] = otherwise[_attr];
140
+ }
141
+ }
142
+ }
143
+ }
144
+
145
+ return newField;
146
+ }
package/FormBuilder.js CHANGED
@@ -23,8 +23,6 @@ var _reactHookForm = require("react-hook-form");
23
23
 
24
24
  var _utils = require("@digigov/form/utils");
25
25
 
26
- var _Grid = _interopRequireDefault(require("@digigov/ui/layouts/Grid"));
27
-
28
26
  var _validators = require("@digigov/form/validators");
29
27
 
30
28
  var _Fieldset = _interopRequireDefault(require("@digigov/form/Fieldset"));
@@ -33,8 +31,10 @@ var _Field = _interopRequireDefault(require("@digigov/form/Field"));
33
31
 
34
32
  var _FormContext = require("@digigov/form/FormContext");
35
33
 
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"];
34
+ var _Form = require("@digigov/react-core/Form");
35
+
36
+ var _excluded = ["onSubmit", "children", "registerField", "fieldsMap", "fieldsetsMap", "resolver", "mode", "initial", "reValidateMode", "shouldFocusError", "criteriaMode", "componentRegistry", "grid"],
37
+ _excluded2 = ["fields", "fieldsets", "initial", "onSubmit", "children", "reValidateMode", "mode", "shouldFocusError", "criteriaMode", "auto", "validatorRegistry", "componentRegistry", "grid"];
38
38
 
39
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
40
 
@@ -53,6 +53,7 @@ var FormBase = /*#__PURE__*/_react["default"].forwardRef(function FormBase(_ref,
53
53
  shouldFocusError = _ref.shouldFocusError,
54
54
  criteriaMode = _ref.criteriaMode,
55
55
  componentRegistry = _ref.componentRegistry,
56
+ grid = _ref.grid,
56
57
  props = (0, _objectWithoutProperties2["default"])(_ref, _excluded);
57
58
  var form = (0, _reactHookForm.useForm)({
58
59
  resolver: resolver,
@@ -83,15 +84,11 @@ var FormBase = /*#__PURE__*/_react["default"].forwardRef(function FormBase(_ref,
83
84
  };
84
85
  return /*#__PURE__*/_react["default"].createElement(_FormContext.FormContext.Provider, {
85
86
  value: ctx
86
- }, /*#__PURE__*/_react["default"].createElement("form", (0, _extends4["default"])({
87
+ }, /*#__PURE__*/_react["default"].createElement(_Form.Form, (0, _extends4["default"])({
88
+ grid: grid,
87
89
  onSubmit: form.handleSubmit(handleSubmit),
88
90
  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))));
91
+ }, props), children));
95
92
  });
96
93
 
97
94
  exports.FormBase = FormBase;
@@ -116,6 +113,8 @@ var FormBuilder = /*#__PURE__*/_react["default"].forwardRef(function FormBuilder
116
113
  auto = _ref2$auto === void 0 ? false : _ref2$auto,
117
114
  validatorRegistry = _ref2.validatorRegistry,
118
115
  componentRegistry = _ref2.componentRegistry,
116
+ _ref2$grid = _ref2.grid,
117
+ grid = _ref2$grid === void 0 ? false : _ref2$grid,
119
118
  props = (0, _objectWithoutProperties2["default"])(_ref2, _excluded2);
120
119
  var fieldsState = (0, _react.useRef)(fields);
121
120
  var setFieldsState = (0, _react.useCallback)(function (newFields) {
@@ -169,7 +168,8 @@ var FormBuilder = /*#__PURE__*/_react["default"].forwardRef(function FormBuilder
169
168
  criteriaMode: criteriaMode,
170
169
  onSubmit: onSubmit,
171
170
  componentRegistry: componentRegistry,
172
- ref: ref
171
+ ref: ref,
172
+ grid: grid
173
173
  }, props), fieldChildren, children);
174
174
  });
175
175