@digigov/form 0.7.1 → 0.8.2

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 (203) hide show
  1. package/CHANGELOG.md +26 -1
  2. package/Field/FieldBase.js +4 -14
  3. package/Field/FieldConditional.js +4 -0
  4. package/Field/FieldContainer.js +6 -3
  5. package/Field/index.js +39 -1
  6. package/Field/utils.js +19 -1
  7. package/FieldArray/FieldArray.stories.js +44 -0
  8. package/FieldArray/__stories__/Default.js +109 -0
  9. package/FieldArray/__stories__/WithExactLength.js +108 -0
  10. package/FieldArray/index.js +84 -0
  11. package/FieldObject/index.js +84 -0
  12. package/Form.stories.js +25 -0
  13. package/FormBuilder.js +22 -12
  14. package/MultiplicityField/MultiplicityField.stories.js +86 -0
  15. package/MultiplicityField/__stories__/Default.js +121 -0
  16. package/MultiplicityField/__stories__/WithExactLength.js +116 -0
  17. package/MultiplicityField/__stories__/WithMaxLength.js +119 -0
  18. package/MultiplicityField/__stories__/WithMinAndMaxLength.js +120 -0
  19. package/MultiplicityField/__stories__/WithMinLength.js +119 -0
  20. package/MultiplicityField/add-objects.js +182 -0
  21. package/MultiplicityField/index.js +142 -0
  22. package/__stories__/IntField.js +60 -0
  23. package/es/Field/FieldBase.js +4 -14
  24. package/es/Field/FieldConditional.js +4 -0
  25. package/es/Field/FieldContainer.js +6 -3
  26. package/es/Field/index.js +37 -1
  27. package/es/Field/utils.js +19 -1
  28. package/es/FieldArray/FieldArray.stories.js +7 -0
  29. package/es/FieldArray/__stories__/Default.js +88 -0
  30. package/es/FieldArray/__stories__/WithExactLength.js +87 -0
  31. package/es/FieldArray/index.js +62 -0
  32. package/es/FieldObject/index.js +59 -0
  33. package/es/Form.stories.js +4 -0
  34. package/es/FormBuilder.js +22 -11
  35. package/es/MultiplicityField/MultiplicityField.stories.js +10 -0
  36. package/es/MultiplicityField/__stories__/Default.js +100 -0
  37. package/es/MultiplicityField/__stories__/WithExactLength.js +95 -0
  38. package/es/MultiplicityField/__stories__/WithMaxLength.js +98 -0
  39. package/es/MultiplicityField/__stories__/WithMinAndMaxLength.js +99 -0
  40. package/es/MultiplicityField/__stories__/WithMinLength.js +98 -0
  41. package/es/MultiplicityField/add-objects.js +158 -0
  42. package/es/MultiplicityField/index.js +113 -0
  43. package/es/__stories__/IntField.js +40 -0
  44. package/es/inputs/FileInput/FileInput.stories.js +6 -0
  45. package/es/inputs/FileInput/__stories__/Default.js +23 -0
  46. package/es/inputs/FileInput/index.js +33 -23
  47. package/es/inputs/Input/index.js +1 -1
  48. package/es/inputs/Radio/index.js +8 -13
  49. package/es/internal.js +2 -0
  50. package/es/utils.js +61 -46
  51. package/es/validators/index.js +31 -11
  52. package/es/validators/utils/index.js +1 -19
  53. package/es/validators/utils/int.js +20 -0
  54. package/es/validators/utils/number.js +16 -0
  55. package/esm/Field/FieldBase.js +4 -14
  56. package/esm/Field/FieldConditional.js +4 -0
  57. package/esm/Field/FieldContainer.js +6 -3
  58. package/esm/Field/index.js +37 -1
  59. package/esm/Field/utils.js +19 -1
  60. package/esm/FieldArray/FieldArray.stories.js +7 -0
  61. package/esm/FieldArray/__stories__/Default.js +88 -0
  62. package/esm/FieldArray/__stories__/WithExactLength.js +87 -0
  63. package/esm/FieldArray/index.js +62 -0
  64. package/esm/FieldObject/index.js +59 -0
  65. package/esm/Form.stories.js +4 -0
  66. package/esm/FormBuilder.js +22 -11
  67. package/esm/MultiplicityField/MultiplicityField.stories.js +10 -0
  68. package/esm/MultiplicityField/__stories__/Default.js +100 -0
  69. package/esm/MultiplicityField/__stories__/WithExactLength.js +95 -0
  70. package/esm/MultiplicityField/__stories__/WithMaxLength.js +98 -0
  71. package/esm/MultiplicityField/__stories__/WithMinAndMaxLength.js +99 -0
  72. package/esm/MultiplicityField/__stories__/WithMinLength.js +98 -0
  73. package/esm/MultiplicityField/add-objects.js +158 -0
  74. package/esm/MultiplicityField/index.js +113 -0
  75. package/esm/__stories__/IntField.js +40 -0
  76. package/esm/index.js +1 -1
  77. package/esm/inputs/FileInput/FileInput.stories.js +6 -0
  78. package/esm/inputs/FileInput/__stories__/Default.js +23 -0
  79. package/esm/inputs/FileInput/index.js +33 -23
  80. package/esm/inputs/Input/index.js +1 -1
  81. package/esm/inputs/Radio/index.js +8 -13
  82. package/esm/internal.js +2 -0
  83. package/esm/utils.js +61 -46
  84. package/esm/validators/index.js +31 -11
  85. package/esm/validators/utils/index.js +1 -19
  86. package/esm/validators/utils/int.js +20 -0
  87. package/esm/validators/utils/number.js +16 -0
  88. package/inputs/FileInput/FileInput.stories.js +30 -0
  89. package/inputs/FileInput/__stories__/Default.js +43 -0
  90. package/inputs/FileInput/index.js +37 -23
  91. package/inputs/Input/index.js +1 -1
  92. package/inputs/Radio/index.js +8 -20
  93. package/internal.js +21 -0
  94. package/libs/form/src/Field/types.d.ts +24 -13
  95. package/libs/form/src/FieldArray/FieldArray.stories.d.ts +8 -0
  96. package/libs/form/src/FieldArray/__stories__/Default.d.ts +1 -0
  97. package/libs/form/src/FieldArray/__stories__/WithExactLength.d.ts +1 -0
  98. package/libs/form/src/FieldArray/index.d.ts +11 -0
  99. package/libs/form/src/FieldObject/index.d.ts +22 -0
  100. package/libs/form/src/Form.stories.d.ts +5 -0
  101. package/libs/form/src/MultiplicityField/MultiplicityField.stories.d.ts +11 -0
  102. package/libs/form/src/MultiplicityField/__stories__/Default.d.ts +1 -0
  103. package/libs/form/src/MultiplicityField/__stories__/WithExactLength.d.ts +1 -0
  104. package/libs/form/src/MultiplicityField/__stories__/WithMaxLength.d.ts +1 -0
  105. package/libs/form/src/MultiplicityField/__stories__/WithMinAndMaxLength.d.ts +1 -0
  106. package/libs/form/src/MultiplicityField/__stories__/WithMinLength.d.ts +1 -0
  107. package/libs/form/src/MultiplicityField/add-objects.d.ts +13 -0
  108. package/libs/form/src/MultiplicityField/index.d.ts +32 -0
  109. package/libs/form/src/__stories__/IntField.d.ts +1 -0
  110. package/libs/form/src/inputs/FileInput/FileInput.stories.d.ts +7 -0
  111. package/libs/form/src/inputs/FileInput/__stories__/Default.d.ts +2 -0
  112. package/libs/form/src/inputs/Label/index.d.ts +1 -0
  113. package/libs/form/src/internal.d.ts +2 -0
  114. package/libs/form/src/types.d.ts +20 -12
  115. package/libs/form/src/utils.d.ts +8 -3
  116. package/libs/form/src/validators/index.d.ts +4 -3
  117. package/libs/form/src/validators/types.d.ts +1 -1
  118. package/libs/form/src/validators/utils/file.d.ts +3 -1
  119. package/libs/form/src/validators/utils/iban.d.ts +3 -1
  120. package/libs/form/src/validators/utils/index.d.ts +15 -3
  121. package/libs/form/src/validators/utils/int.d.ts +3 -0
  122. package/libs/form/src/validators/utils/number.d.ts +3 -0
  123. package/libs/form/src/validators/utils/phone.d.ts +3 -1
  124. package/libs/form/src/validators/utils/postal_code.d.ts +3 -1
  125. package/libs/ui/src/app/i18n.d.ts +2 -2
  126. package/libs/ui/src/core/Button/BackButton.d.ts +1 -1
  127. package/libs/ui/src/core/Button/ButtonLink.d.ts +1 -1
  128. package/libs/ui/src/core/Button/index.d.ts +1 -1
  129. package/libs/ui/src/core/List/ListItemContent.d.ts +0 -1
  130. package/libs/ui/src/core/List/ListItemIcon.d.ts +1 -3
  131. package/libs/ui/src/core/List/ListItemText.d.ts +0 -1
  132. package/libs/ui/src/core/List/ListItemTitle.d.ts +0 -1
  133. package/libs/ui/src/locales/el.d.ts +8 -1
  134. package/libs-ui/react-core/src/Aside/index.d.ts +10 -0
  135. package/libs-ui/react-core/src/BackLink/index.d.ts +1 -1
  136. package/libs-ui/react-core/src/Bottom/index.d.ts +9 -0
  137. package/libs-ui/react-core/src/BreadcrumbsList/index.d.ts +1 -1
  138. package/libs-ui/react-core/src/Button/index.d.ts +1 -1
  139. package/libs-ui/react-core/src/ButtonLink/index.d.ts +1 -1
  140. package/libs-ui/react-core/src/CallToAction/index.d.ts +1 -1
  141. package/libs-ui/react-core/src/CheckboxConditional/index.d.ts +11 -0
  142. package/libs-ui/react-core/src/CheckboxItem/index.d.ts +1 -1
  143. package/libs-ui/react-core/src/Container/index.d.ts +17 -0
  144. package/libs-ui/react-core/src/Copyright/index.d.ts +10 -0
  145. package/libs-ui/react-core/src/DateInputItem/index.d.ts +1 -1
  146. package/libs-ui/react-core/src/FileUpload/index.d.ts +9 -1
  147. package/libs-ui/react-core/src/Footer/index.d.ts +9 -0
  148. package/libs-ui/react-core/src/FooterContainer/index.d.ts +16 -0
  149. package/libs-ui/react-core/src/FooterContent/index.d.ts +10 -0
  150. package/libs-ui/react-core/src/FooterContentLogos/index.d.ts +11 -0
  151. package/libs-ui/react-core/src/FooterHeading/index.d.ts +15 -0
  152. package/libs-ui/react-core/src/FooterImage/index.d.ts +15 -0
  153. package/libs-ui/react-core/src/FooterInlineList/index.d.ts +11 -0
  154. package/libs-ui/react-core/src/FooterInlineListItem/index.d.ts +9 -0
  155. package/libs-ui/react-core/src/FooterLink/index.d.ts +13 -0
  156. package/libs-ui/react-core/src/FooterList/index.d.ts +15 -0
  157. package/libs-ui/react-core/src/FooterListItem/index.d.ts +10 -0
  158. package/libs-ui/react-core/src/FooterMeta/index.d.ts +11 -0
  159. package/libs-ui/react-core/src/FooterMetaItem/index.d.ts +14 -0
  160. package/libs-ui/react-core/src/FooterNavigation/index.d.ts +11 -0
  161. package/libs-ui/react-core/src/FooterSection/index.d.ts +11 -0
  162. package/libs-ui/react-core/src/GovGRFooter/index.d.ts +9 -0
  163. package/libs-ui/react-core/src/GovGRLogo/govgr-logo-base64.d.ts +2 -0
  164. package/libs-ui/react-core/src/GovGRLogo/index.d.ts +9 -0
  165. package/libs-ui/react-core/src/Header/index.d.ts +10 -0
  166. package/libs-ui/react-core/src/HeaderContent/index.d.ts +9 -0
  167. package/libs-ui/react-core/src/HeaderLogo/index.d.ts +21 -0
  168. package/libs-ui/react-core/src/HeaderSecondaryLogo/index.d.ts +21 -0
  169. package/libs-ui/react-core/src/HeaderSection/index.d.ts +9 -0
  170. package/libs-ui/react-core/src/HeaderSubtitle/index.d.ts +9 -0
  171. package/libs-ui/react-core/src/HeaderTitle/index.d.ts +13 -0
  172. package/libs-ui/react-core/src/HellenicRepublicLogo/index.d.ts +20 -0
  173. package/libs-ui/react-core/src/HellenicRepublicLogo/logo-el.d.ts +2 -0
  174. package/libs-ui/react-core/src/HellenicRepublicLogo/logo-en.d.ts +2 -0
  175. package/libs-ui/react-core/src/Layout/index.d.ts +10 -0
  176. package/libs-ui/react-core/src/Link/index.d.ts +1 -1
  177. package/libs-ui/react-core/src/List/index.d.ts +1 -1
  178. package/libs-ui/react-core/src/Main/index.d.ts +9 -0
  179. package/libs-ui/react-core/src/Masthead/index.d.ts +9 -0
  180. package/libs-ui/react-core/src/MastheadBody/index.d.ts +9 -0
  181. package/libs-ui/react-core/src/NavHorizontalListItem/index.d.ts +1 -1
  182. package/libs-ui/react-core/src/NavVerticalItem/index.d.ts +1 -1
  183. package/libs-ui/react-core/src/NotificationBannerLink/index.d.ts +1 -1
  184. package/libs-ui/react-core/src/PageTitle/index.d.ts +9 -0
  185. package/libs-ui/react-core/src/PageTitleCaption/index.d.ts +14 -0
  186. package/libs-ui/react-core/src/PageTitleHeading/index.d.ts +13 -0
  187. package/libs-ui/react-core/src/PageTitleSection/index.d.ts +10 -0
  188. package/libs-ui/react-core/src/RadioConditional/index.d.ts +11 -0
  189. package/libs-ui/react-core/src/RadioItem/index.d.ts +1 -1
  190. package/libs-ui/react-core/src/ServiceBadge/index.d.ts +11 -0
  191. package/libs-ui/react-core/src/SkipLink/index.d.ts +1 -1
  192. package/libs-ui/react-core/src/SvgIcon/index.d.ts +1 -1
  193. package/libs-ui/react-core/src/Table/index.d.ts +1 -1
  194. package/libs-ui/react-core/src/TabsListItem/index.d.ts +1 -1
  195. package/libs-ui/react-core/src/TextInput/index.d.ts +1 -1
  196. package/libs-ui/react-core/src/Top/index.d.ts +9 -0
  197. package/libs-ui/react-core/src/index.d.ts +141 -0
  198. package/package.json +7 -6
  199. package/utils.js +61 -47
  200. package/validators/index.js +33 -11
  201. package/validators/utils/index.js +1 -23
  202. package/validators/utils/int.js +31 -0
  203. package/validators/utils/number.js +27 -0
@@ -0,0 +1,20 @@
1
+ export function validateIntNumber(number) {
2
+ if (number === undefined) {
3
+ return false;
4
+ } else {
5
+ return Number.isInteger(number) && Number(number) > 0;
6
+ }
7
+ }
8
+ export var INT_VALIDATOR = function INT_VALIDATOR() {
9
+ return {
10
+ name: 'int-validator',
11
+ message: 'form.error.positive_integer_number',
12
+ test: function test(value) {
13
+ if (value === null) {
14
+ return true;
15
+ }
16
+
17
+ return validateIntNumber(value);
18
+ }
19
+ };
20
+ };
@@ -0,0 +1,16 @@
1
+ export function validateNumber(number) {
2
+ return !Number.isNaN(number);
3
+ }
4
+ export var NUMBER_VALIDATOR = function NUMBER_VALIDATOR() {
5
+ return {
6
+ name: 'number-validator',
7
+ message: 'form.error.number',
8
+ test: function test(value) {
9
+ if (value === null) {
10
+ return true;
11
+ }
12
+
13
+ return validateNumber(value);
14
+ }
15
+ };
16
+ };
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ var _exportNames = {};
9
+ exports["default"] = void 0;
10
+
11
+ var _FileInput = _interopRequireDefault(require("@digigov/form/inputs/FileInput"));
12
+
13
+ var _Default = require("@digigov/form/inputs/FileInput/__stories__/Default");
14
+
15
+ Object.keys(_Default).forEach(function (key) {
16
+ if (key === "default" || key === "__esModule") return;
17
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
18
+ if (key in exports && exports[key] === _Default[key]) return;
19
+ Object.defineProperty(exports, key, {
20
+ enumerable: true,
21
+ get: function get() {
22
+ return _Default[key];
23
+ }
24
+ });
25
+ });
26
+ var _default = {
27
+ title: 'Digigov Form/inputs/FileInput',
28
+ component: _FileInput["default"]
29
+ };
30
+ exports["default"] = _default;
@@ -0,0 +1,43 @@
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.Default = void 0;
11
+
12
+ var _react = _interopRequireDefault(require("react"));
13
+
14
+ var _form = _interopRequireWildcard(require("@digigov/form"));
15
+
16
+ var _core = require("@digigov/ui/core");
17
+
18
+ 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); }
19
+
20
+ 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; }
21
+
22
+ var _ref = /*#__PURE__*/_react["default"].createElement(_core.Button, null, "\u03A3\u03C5\u03BD\u03AD\u03C7\u03B5\u03B9\u03B1");
23
+
24
+ var Default = function Default() {
25
+ return /*#__PURE__*/_react["default"].createElement(_form["default"], {
26
+ onSubmit: function onSubmit(data) {
27
+ debugger;
28
+ console.log(data);
29
+ }
30
+ }, /*#__PURE__*/_react["default"].createElement(_form.Field, {
31
+ key: 'string',
32
+ name: "file",
33
+ type: "file",
34
+ required: true,
35
+ label: {
36
+ primary: 'Βιογραφικό σημείωμα'
37
+ }
38
+ }), _ref);
39
+ };
40
+
41
+ exports.Default = Default;
42
+ var _default = Default;
43
+ exports["default"] = _default;
@@ -9,6 +9,8 @@ Object.defineProperty(exports, "__esModule", {
9
9
  });
10
10
  exports["default"] = exports.FileInput = void 0;
11
11
 
12
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
13
+
12
14
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
13
15
 
14
16
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
@@ -25,7 +27,13 @@ var _Paragraph = _interopRequireDefault(require("@digigov/ui/typography/Paragrap
25
27
 
26
28
  var _Hint = _interopRequireDefault(require("@digigov/react-core/Hint"));
27
29
 
28
- var _excluded = ["name", "extra", "disabled", "type"];
30
+ var _Button = _interopRequireDefault(require("@digigov/ui/core/Button"));
31
+
32
+ var _FileUpload = _interopRequireDefault(require("@digigov/react-core/FileUpload"));
33
+
34
+ var _Field = _interopRequireDefault(require("@digigov/react-core/Field"));
35
+
36
+ var _excluded = ["name", "extra", "disabled", "reset", "onChange", "control"];
29
37
 
30
38
  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
39
 
@@ -37,7 +45,9 @@ var FileInput = /*#__PURE__*/_react["default"].forwardRef(function FileInput(_re
37
45
  _ref$extra = _ref.extra,
38
46
  extra = _ref$extra === void 0 ? {} : _ref$extra,
39
47
  disabled = _ref.disabled,
40
- type = _ref.type,
48
+ reset = _ref.reset,
49
+ onChange = _ref.onChange,
50
+ control = _ref.control,
41
51
  props = (0, _objectWithoutProperties2["default"])(_ref, _excluded);
42
52
 
43
53
  var _useTranslation = (0, _i18n.useTranslation)(),
@@ -48,32 +58,36 @@ var FileInput = /*#__PURE__*/_react["default"].forwardRef(function FileInput(_re
48
58
  files = _useState2[0],
49
59
  setFiles = _useState2[1];
50
60
 
51
- return /*#__PURE__*/_react["default"].createElement("div", {
52
- className: (0, _clsx["default"])(extra.className, files.length > 0 && 'govgr-uploaded-file', true && 'govgr-field-file')
53
- }, files.length ? /*#__PURE__*/_react["default"].createElement(_Paragraph["default"], null, /*#__PURE__*/_react["default"].createElement("b", null, t('upload.file'), ":"), " ", "".concat(files.join(', '))) : /*#__PURE__*/_react["default"].createElement(_Hint["default"], null, t('upload.no_file')), /*#__PURE__*/_react["default"].createElement("label", {
54
- tabIndex: 0,
55
- role: "button",
56
- className: (0, _clsx["default"])(extra.className, files.length === 0 && ['govgr-btn', 'govgr-btn-primary'], files.length > 0 && 'govgr-link', true && 'govgr-label-file')
57
- }, /*#__PURE__*/_react["default"].createElement("input", (0, _extends2["default"])({
61
+ var handleChange = function handleChange(e) {
62
+ var target = e.target;
63
+ var selectedFiles = Array.from(target.files).map(function (_ref2) {
64
+ var name = _ref2.name;
65
+ return name;
66
+ });
67
+ setFiles(selectedFiles); // proceed calling the onChange provided
68
+ // by react-hook-form
69
+
70
+ onChange(e);
71
+ };
72
+
73
+ return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement(_Field["default"], {
74
+ className: (0, _clsx["default"])(extra.className, files && files.length > 0 && 'govgr-uploaded-file')
75
+ }, files !== null && files !== void 0 && files.length ? /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement(_Paragraph["default"], null, /*#__PURE__*/_react["default"].createElement("b", null, t('upload.file'), ":"), " ", "".concat(files.join(', ')))) : /*#__PURE__*/_react["default"].createElement(_Hint["default"], null, t('upload.no_file')), /*#__PURE__*/_react["default"].createElement(_FileUpload["default"], (0, _extends2["default"])({
58
76
  ref: ref,
59
- type: "file",
77
+ hasFiles: !!(files !== null && files !== void 0 && files.length),
60
78
  name: name,
61
79
  disabled: disabled,
62
- style: {
63
- display: 'none'
64
- },
65
- className: "govgr-file-upload",
66
- onChange: function onChange(e) {
67
- var target = e.target;
68
- var selectedFiles = Array.from(target.files).map(function (_ref2) {
69
- var name = _ref2.name;
70
- return name;
71
- });
72
- setFiles(selectedFiles);
73
- }
80
+ onChange: handleChange
74
81
  }, (0, _extends2["default"])({}, props, {
75
82
  required: undefined
76
- }))), files.length ? t('upload.change_file') : t('upload.choose_file')));
83
+ })), files !== null && files !== void 0 && files.length ? t('upload.change_file') : t('upload.choose_file')), files !== undefined && files.length > 0 && /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement(_Button["default"], {
84
+ variant: "link",
85
+ onClick: function onClick(event) {
86
+ event.preventDefault();
87
+ reset((0, _defineProperty2["default"])({}, name, ''));
88
+ setFiles(undefined);
89
+ }
90
+ }, t('upload.reset_file')))));
77
91
  });
78
92
 
79
93
  exports.FileInput = FileInput;
@@ -20,7 +20,7 @@ var _TextArea = _interopRequireDefault(require("@digigov/react-core/TextArea"));
20
20
  var _excluded = ["name", "type", "extra"];
21
21
  var TYPES_MAP = {
22
22
  string: 'text',
23
- "int": 'number',
23
+ "int": 'text',
24
24
  text: 'text',
25
25
  date: 'date'
26
26
  };
@@ -2,8 +2,6 @@
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
  });
@@ -11,11 +9,9 @@ exports["default"] = exports.RadioButtonsGroup = void 0;
11
9
 
12
10
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
13
11
 
14
- var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
15
-
16
12
  var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
17
13
 
18
- var _react = _interopRequireWildcard(require("react"));
14
+ var _react = _interopRequireDefault(require("react"));
19
15
 
20
16
  var _Radio = _interopRequireDefault(require("@digigov/react-core/Radio"));
21
17
 
@@ -29,10 +25,6 @@ var _Hint = _interopRequireDefault(require("@digigov/react-core/Hint"));
29
25
 
30
26
  var _excluded = ["register", "name", "control", "extra", "disabled"];
31
27
 
32
- 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); }
33
-
34
- 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; }
35
-
36
28
  var RadioButtonsGroup = function RadioButtonsGroup(_ref) {
37
29
  var register = _ref.register,
38
30
  name = _ref.name,
@@ -47,32 +39,28 @@ var RadioButtonsGroup = function RadioButtonsGroup(_ref) {
47
39
  name: name
48
40
  });
49
41
 
50
- var _useState = (0, _react.useState)(currentValue),
51
- _useState2 = (0, _slicedToArray2["default"])(_useState, 1),
52
- defaultValue = _useState2[0];
53
-
54
42
  var _useTranslation = (0, _i18n.useTranslation)(),
55
43
  t = _useTranslation.t;
56
44
 
57
45
  return /*#__PURE__*/_react["default"].createElement(_Radio["default"], {
58
46
  className: className,
59
- defaultValue: defaultValue,
47
+ defaultValue: currentValue,
60
48
  id: name
61
49
  }, options.map(function (_ref2) {
62
50
  var label = _ref2.label,
63
51
  v = _ref2.value,
64
- optionDisabled = _ref2.disabled;
65
- return /*#__PURE__*/_react["default"].createElement(_RadioItem["default"], (0, _extends2["default"])({
66
- ref: register,
67
- key: v,
68
- name: name,
52
+ optionDisabled = _ref2.disabled,
53
+ selected = _ref2.selected;
54
+ return /*#__PURE__*/_react["default"].createElement("div", {
55
+ key: "".concat(name, ".").concat(v)
56
+ }, /*#__PURE__*/_react["default"].createElement(_RadioItem["default"], (0, _extends2["default"])({}, register(name), {
69
57
  value: v,
70
58
  disabled: disabled || optionDisabled
71
59
  }, (0, _extends2["default"])({}, props, {
72
60
  required: undefined,
73
61
  'aria-describedby': undefined,
74
62
  type: 'radio'
75
- })), label && label.primary && t(label.primary) || v, label && label.secondary && /*#__PURE__*/_react["default"].createElement(_Hint["default"], null, t(label.secondary)));
63
+ })), label && label.primary && t(label.primary) || v, label && label.secondary && /*#__PURE__*/_react["default"].createElement(_Hint["default"], null, t(label.secondary))), selected && selected());
76
64
  }));
77
65
  };
78
66
 
package/internal.js CHANGED
@@ -7,6 +7,7 @@ Object.defineProperty(exports, "__esModule", {
7
7
  });
8
8
  var _exportNames = {
9
9
  Field: true,
10
+ FieldArray: true,
10
11
  FieldConditional: true,
11
12
  Fieldset: true,
12
13
  FormBuilder: true,
@@ -38,6 +39,12 @@ Object.defineProperty(exports, "Field", {
38
39
  return _Field["default"];
39
40
  }
40
41
  });
42
+ Object.defineProperty(exports, "FieldArray", {
43
+ enumerable: true,
44
+ get: function get() {
45
+ return _FieldArray["default"];
46
+ }
47
+ });
41
48
  Object.defineProperty(exports, "FieldConditional", {
42
49
  enumerable: true,
43
50
  get: function get() {
@@ -113,6 +120,20 @@ Object.keys(_Field).forEach(function (key) {
113
120
  });
114
121
  });
115
122
 
123
+ var _FieldArray = _interopRequireWildcard(require("@digigov/form/FieldArray"));
124
+
125
+ Object.keys(_FieldArray).forEach(function (key) {
126
+ if (key === "default" || key === "__esModule") return;
127
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
128
+ if (key in exports && exports[key] === _FieldArray[key]) return;
129
+ Object.defineProperty(exports, key, {
130
+ enumerable: true,
131
+ get: function get() {
132
+ return _FieldArray[key];
133
+ }
134
+ });
135
+ });
136
+
116
137
  var _FieldConditional = _interopRequireWildcard(require("@digigov/form/Field/FieldConditional"));
117
138
 
118
139
  Object.keys(_FieldConditional).forEach(function (key) {
@@ -1,6 +1,6 @@
1
1
  import React from 'react';
2
- import { UseFormMethods } from 'react-hook-form';
3
- import { FieldSpec, FieldError } from '@digigov/form/types';
2
+ import { ErrorOption, UseFormReturn } from 'react-hook-form';
3
+ import { FieldSpec } from '@digigov/form/types';
4
4
  import { FieldCondition, FormData } from '@digigov/form/types';
5
5
  export interface ChildFieldMemoProps extends FieldConditionalProps {
6
6
  dependencies: FormData;
@@ -10,9 +10,10 @@ export interface FieldWithCondition extends Omit<CalculatedField, 'condition'> {
10
10
  }
11
11
  export interface FieldConditionalProps {
12
12
  field: FieldWithCondition;
13
- control: UseFormMethods['control'];
14
- register: UseFormMethods['register'];
15
- error?: FieldError;
13
+ control: UseFormReturn['control'];
14
+ register: UseFormReturn['register'];
15
+ reset: UseFormReturn['reset'];
16
+ error?: ErrorOption;
16
17
  }
17
18
  export declare type FieldComponentItem = {
18
19
  component: any;
@@ -23,7 +24,7 @@ export interface FieldContainerProps {
23
24
  name?: FieldSpec['key'];
24
25
  layout?: FieldSpec['layout'];
25
26
  label?: FieldSpec['label'];
26
- error?: FieldError;
27
+ error?: ErrorOption | Record<string, any>;
27
28
  children?: React.ReactNode;
28
29
  wrapper?: FieldSpec['wrapper'];
29
30
  }
@@ -43,8 +44,7 @@ export interface ControlledFieldProps {
43
44
  }
44
45
  export interface UncontrolledFieldProps {
45
46
  name: string;
46
- register?: FieldBaseProps['register'];
47
- ref?: FieldBaseProps['register'];
47
+ register: FieldBaseProps['register'];
48
48
  control?: FieldBaseProps['control'];
49
49
  error?: boolean;
50
50
  extra?: Record<string, never>;
@@ -55,21 +55,32 @@ export interface CalculatedField extends OmittedFieldSpec {
55
55
  name: string;
56
56
  component: any;
57
57
  defaultValue?: never;
58
- error?: FieldError;
58
+ error?: ErrorOption;
59
59
  wrapper?: FieldComponentItem['wrapper'];
60
+ multiplicity?: boolean;
60
61
  }
61
62
  export interface FieldBaseProps extends CalculatedField {
62
- control: UseFormMethods['control'];
63
- register: UseFormMethods['register'];
63
+ control: UseFormReturn['control'];
64
+ register: UseFormReturn['register'];
65
+ reset: UseFormReturn['reset'];
64
66
  }
65
67
  export interface FieldProps extends FieldSpec {
66
68
  name: string;
67
- children?: React.ElementType;
69
+ children?: React.ReactNode;
68
70
  }
69
71
  export interface UseFieldProps {
70
72
  field: FieldSpec;
71
73
  control: FieldBaseProps['control'];
72
74
  register: FieldBaseProps['register'];
73
- error: FieldError;
75
+ reset: FieldBaseProps['reset'];
76
+ watch: UseFormReturn['watch'];
77
+ formState: UseFormReturn['formState'];
78
+ getFieldState: UseFormReturn['getFieldState'];
79
+ setValue: UseFormReturn['setValue'];
80
+ getValues: UseFormReturn['getValues'];
81
+ unregister: UseFormReturn['unregister'];
82
+ trigger: UseFormReturn['trigger'];
83
+ clearErrors: UseFormReturn['clearErrors'];
84
+ error?: ErrorOption;
74
85
  componentRegistry?: FieldComponentRegistry;
75
86
  }
@@ -0,0 +1,8 @@
1
+ declare namespace _default {
2
+ export const title: string;
3
+ export { FieldArray as component };
4
+ }
5
+ export default _default;
6
+ export * from "@digigov/form/FieldArray/__stories__/Default";
7
+ export * from "@digigov/form/FieldArray/__stories__/WithExactLength";
8
+ import FieldArray from "@digigov/form/FieldArray";
@@ -0,0 +1 @@
1
+ export declare const Default: () => JSX.Element;
@@ -0,0 +1 @@
1
+ export declare const WithExactLength: () => JSX.Element;
@@ -0,0 +1,11 @@
1
+ import React from 'react';
2
+ import { ErrorOption, UseFormReturn } from 'react-hook-form';
3
+ import { FieldProps } from '@digigov/form/Field/types';
4
+ export interface FieldArrayProps extends FieldProps {
5
+ control: UseFormReturn['control'];
6
+ register: UseFormReturn['register'];
7
+ formState: UseFormReturn['formState'];
8
+ error?: ErrorOption;
9
+ }
10
+ export declare const FieldArray: React.FC<FieldArrayProps>;
11
+ export default FieldArray;
@@ -0,0 +1,22 @@
1
+ import React from 'react';
2
+ import { FieldProps } from '@digigov/form/Field/types';
3
+ import { ErrorOption, UseFormReturn } from 'react-hook-form';
4
+ import { FieldSpec } from '@digigov/form/types';
5
+ export interface FieldObjectProps extends Omit<FieldProps, 'key'> {
6
+ control: UseFormReturn['control'];
7
+ register: UseFormReturn['register'];
8
+ reset: UseFormReturn['reset'];
9
+ formState: UseFormReturn['formState'];
10
+ error?: ErrorOption;
11
+ }
12
+ export declare const FieldObject: React.FC<FieldObjectProps>;
13
+ export interface FieldObjectItemProps {
14
+ name: string;
15
+ field: FieldSpec;
16
+ control: UseFormReturn['control'];
17
+ register: UseFormReturn['register'];
18
+ reset: UseFormReturn['reset'];
19
+ formState: UseFormReturn['formState'];
20
+ error?: ErrorOption;
21
+ }
22
+ export default FieldObject;
@@ -0,0 +1,5 @@
1
+ declare namespace _default {
2
+ const title: string;
3
+ }
4
+ export default _default;
5
+ export * from "@digigov/form/__stories__/IntField";
@@ -0,0 +1,11 @@
1
+ declare namespace _default {
2
+ export const title: string;
3
+ export { MultiplicityField as component };
4
+ }
5
+ export default _default;
6
+ export * from "@digigov/form/MultiplicityField/__stories__/Default";
7
+ export * from "@digigov/form/MultiplicityField/__stories__/WithMinLength";
8
+ export * from "@digigov/form/MultiplicityField/__stories__/WithMaxLength";
9
+ export * from "@digigov/form/MultiplicityField/__stories__/WithMinAndMaxLength";
10
+ export * from "@digigov/form/MultiplicityField/__stories__/WithExactLength";
11
+ import MultiplicityField from "@digigov/form/MultiplicityField";
@@ -0,0 +1 @@
1
+ export declare const Default: () => JSX.Element;
@@ -0,0 +1 @@
1
+ export declare const WithExactLength: () => JSX.Element;
@@ -0,0 +1 @@
1
+ export declare const WithMaxLength: () => JSX.Element;
@@ -0,0 +1 @@
1
+ export declare const WithMinAndMaxLength: () => JSX.Element;
@@ -0,0 +1 @@
1
+ export declare const WithMinLength: () => JSX.Element;
@@ -0,0 +1,13 @@
1
+ import React from 'react';
2
+ import { ErrorOption, FieldArrayWithId, UseFieldArrayReturn } from 'react-hook-form';
3
+ import { MultiplicityProps, StashedObject } from '@digigov/form/MultiplicityField';
4
+ export interface AddObjectsProps extends Omit<MultiplicityProps, 'key' | 'formState' | 'component'> {
5
+ fields: FieldArrayWithId[];
6
+ error?: ErrorOption;
7
+ append: UseFieldArrayReturn['append'];
8
+ remove: UseFieldArrayReturn['remove'];
9
+ stashedObjects: StashedObject[];
10
+ onStash: (arg0: StashedObject) => void;
11
+ }
12
+ export declare const AddObjects: React.FC<AddObjectsProps>;
13
+ export default AddObjects;
@@ -0,0 +1,32 @@
1
+ import React from 'react';
2
+ import { ControlledFieldProps } from '@digigov/form/Field/types';
3
+ import { FieldSpec } from '@digigov/form';
4
+ import { ErrorOption, UseFormReturn } from 'react-hook-form';
5
+ export interface MultiplicityProps extends Omit<ControlledFieldProps, 'value' | 'onChange' | 'error' | 'extra'> {
6
+ name: string;
7
+ control: UseFormReturn['control'];
8
+ register: UseFormReturn['register'];
9
+ trigger: UseFormReturn['trigger'];
10
+ clearErrors: UseFormReturn['clearErrors'];
11
+ formState: UseFormReturn['formState'];
12
+ setValue: UseFormReturn['setValue'];
13
+ getValues: UseFormReturn['getValues'];
14
+ unregister: UseFormReturn['unregister'];
15
+ error?: ErrorOption;
16
+ extra?: Record<string, any>;
17
+ label?: FieldSpec['label'];
18
+ layout?: FieldSpec['layout'];
19
+ }
20
+ export declare type StashedObject = Record<string, any>;
21
+ export declare const Multiplicity: React.FC<MultiplicityProps>;
22
+ export default Multiplicity;
23
+ export interface ListObjectProps {
24
+ index: number;
25
+ name: string;
26
+ control: UseFormReturn['control'];
27
+ register: UseFormReturn['register'];
28
+ formState: UseFormReturn['formState'];
29
+ onDelete: (index: number) => void;
30
+ extra?: Record<string, any>;
31
+ }
32
+ export declare const ListObject: React.FC<ListObjectProps>;
@@ -0,0 +1 @@
1
+ export declare const IntField: () => JSX.Element;
@@ -0,0 +1,7 @@
1
+ declare namespace _default {
2
+ export const title: string;
3
+ export { FileInput as component };
4
+ }
5
+ export default _default;
6
+ export * from "@digigov/form/inputs/FileInput/__stories__/Default";
7
+ import FileInput from "@digigov/form/inputs/FileInput";
@@ -0,0 +1,2 @@
1
+ export declare const Default: () => JSX.Element;
2
+ export default Default;
@@ -4,6 +4,7 @@ export interface FieldOptionProps {
4
4
  label?: FieldLabelProps;
5
5
  value: string;
6
6
  disabled?: boolean;
7
+ selected?: () => React.FC;
7
8
  }
8
9
  export interface LabelProps {
9
10
  primary?: string;
@@ -1,5 +1,7 @@
1
1
  export { default as Field } from '@digigov/form/Field';
2
2
  export * from '@digigov/form/Field';
3
+ export { default as FieldArray } from '@digigov/form/FieldArray';
4
+ export * from '@digigov/form/FieldArray';
3
5
  export { default as FieldConditional } from '@digigov/form/Field/FieldConditional';
4
6
  export * from '@digigov/form/Field/FieldConditional';
5
7
  export { default as Fieldset } from '@digigov/form/Fieldset';
@@ -1,5 +1,5 @@
1
- import React from 'react';
2
- import { UseFormMethods, UseFormOptions } from 'react-hook-form';
1
+ /// <reference types="react" />
2
+ import { UseFormReturn, UseFormProps } from 'react-hook-form';
3
3
  import { GridProps } from '@digigov/ui/layouts/Grid';
4
4
  import { ValidatorSchema } from '@digigov/form/validators/types';
5
5
  import { FieldComponentRegistry } from '@digigov/form/Field/types';
@@ -17,7 +17,7 @@ export interface FieldCondition {
17
17
  }
18
18
  export interface FieldSpec {
19
19
  key: string;
20
- type?: 'int' | 'string' | 'boolean' | 'choice:multiple' | 'choice:single' | 'mobile_phone' | 'afm' | 'iban' | 'postal_code' | 'phone_number' | 'array' | 'object';
20
+ type?: 'int' | 'string' | 'boolean' | 'choice:multiple' | 'choice:single' | 'mobile_phone' | 'afm' | 'iban' | 'file' | 'postal_code' | 'phone_number' | 'array' | 'object';
21
21
  component?: any;
22
22
  condition?: Record<string, FieldCondition>;
23
23
  controlled?: boolean;
@@ -36,15 +36,23 @@ export interface FieldsetSpec {
36
36
  label?: FieldLabelProps;
37
37
  body?: React.ReactNode;
38
38
  }
39
- export declare type FormData = UseFormOptions['defaultValues'];
39
+ export declare type FormData = UseFormProps['defaultValues'];
40
40
  export interface FormContextProps {
41
41
  fieldsetsMap?: Record<string, FieldsetSpec>;
42
42
  fieldsMap: Record<string, FieldSpec>;
43
- control: UseFormMethods['control'];
44
- register: UseFormMethods['register'];
45
- reset: UseFormMethods['reset'];
43
+ control: UseFormReturn['control'];
44
+ register: UseFormReturn['register'];
45
+ trigger: UseFormReturn['trigger'];
46
+ clearErrors: UseFormReturn['clearErrors'];
47
+ watch: UseFormReturn['watch'];
48
+ getFieldState: UseFormReturn['getFieldState'];
49
+ setValue: UseFormReturn['setValue'];
50
+ getValues: UseFormReturn['getValues'];
51
+ unregister: UseFormReturn['unregister'];
52
+ formState: UseFormReturn['formState'];
53
+ reset: UseFormReturn['reset'];
46
54
  registerField: (field: FieldSpec) => void;
47
- errors: UseFormMethods['errors'];
55
+ errors: UseFormReturn['formState']['errors'];
48
56
  componentRegistry?: FieldComponentRegistry;
49
57
  }
50
58
  export interface FormBuilderProps {
@@ -52,13 +60,13 @@ export interface FormBuilderProps {
52
60
  fieldsets?: FieldsetSpec[];
53
61
  initial?: FormData;
54
62
  onSubmit?: (data: FormData) => void | null | FieldError[];
55
- mode?: UseFormOptions['mode'];
56
- reValidateMode?: UseFormOptions['reValidateMode'];
57
- criteriaMode?: UseFormOptions['criteriaMode'];
63
+ mode?: UseFormProps['mode'];
64
+ reValidateMode?: UseFormProps['reValidateMode'];
65
+ criteriaMode?: UseFormProps['criteriaMode'];
58
66
  children?: React.ReactNode;
59
67
  shouldFocusError?: boolean;
60
68
  auto?: boolean;
61
- validatorRegistry?: Record<string, ValidatorSchema>;
69
+ validatorRegistry?: Record<string, ValidatorSchema[]>;
62
70
  componentRegistry?: FieldComponentRegistry;
63
71
  grid?: boolean;
64
72
  }