@digigov/form 0.6.5 → 0.6.8

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 (61) hide show
  1. package/CHANGELOG.md +24 -1
  2. package/Field/index.js +24 -7
  3. package/Questions/index.mdx +0 -2
  4. package/es/Field/index.js +24 -7
  5. package/es/Questions/index.mdx +0 -2
  6. package/es/index.js +1 -1
  7. package/es/inputs/Checkboxes/index.js +12 -2
  8. package/es/inputs/DateInput/index.js +6 -3
  9. package/es/inputs/FileInput/index.js +10 -3
  10. package/es/inputs/Input/index.js +7 -2
  11. package/es/inputs/Radio/index.js +12 -3
  12. package/es/inputs/Select/index.js +10 -3
  13. package/es/validators.js +120 -3
  14. package/es/validators.spec.js +52 -1
  15. package/esm/Field/index.js +24 -7
  16. package/esm/Questions/index.mdx +0 -2
  17. package/esm/index.js +2 -2
  18. package/esm/inputs/Checkboxes/index.js +12 -2
  19. package/esm/inputs/DateInput/index.js +6 -3
  20. package/esm/inputs/FileInput/index.js +10 -3
  21. package/esm/inputs/Input/index.js +7 -2
  22. package/esm/inputs/Radio/index.js +12 -3
  23. package/esm/inputs/Select/index.js +10 -3
  24. package/esm/validators.js +120 -3
  25. package/esm/validators.spec.js +52 -1
  26. package/index.js +1 -1
  27. package/inputs/Checkboxes/index.js +13 -2
  28. package/inputs/DateInput/index.js +6 -3
  29. package/inputs/FileInput/index.js +13 -3
  30. package/inputs/Input/index.js +7 -2
  31. package/inputs/Radio/index.js +14 -3
  32. package/inputs/Select/index.js +12 -3
  33. package/libs/form/src/Field/index.d.ts +2 -0
  34. package/libs/form/src/index.d.ts +1 -1
  35. package/libs/form/src/validators.d.ts +4 -0
  36. package/libs/ui/src/core/index.d.ts +0 -1
  37. package/libs/ui/src/locales/el.d.ts +4 -0
  38. package/package.json +2 -2
  39. package/validators.js +127 -3
  40. package/validators.spec.js +51 -0
  41. package/libs/ui/src/app/App.d.ts +0 -14
  42. package/libs/ui/src/app/CopyToClipboard.d.ts +0 -8
  43. package/libs/ui/src/app/Header/HeaderLogo.d.ts +0 -3
  44. package/libs/ui/src/app/Header/HeaderSection.d.ts +0 -5
  45. package/libs/ui/src/app/Header/HeaderTitle.d.ts +0 -5
  46. package/libs/ui/src/app/Header/index.d.ts +0 -11
  47. package/libs/ui/src/app/I18nText.d.ts +0 -10
  48. package/libs/ui/src/app/PhaseBannerHeader.d.ts +0 -8
  49. package/libs/ui/src/app/QrCodeScanner/index.d.ts +0 -29
  50. package/libs/ui/src/app/index.d.ts +0 -8
  51. package/libs/ui/src/core/PaginationLabel/index.d.ts +0 -21
  52. package/libs-ui/react-core/src/Header/index.d.ts +0 -10
  53. package/libs-ui/react-core/src/HeaderContent/index.d.ts +0 -9
  54. package/libs-ui/react-core/src/HeaderLogo/index.d.ts +0 -17
  55. package/libs-ui/react-core/src/HeaderSecondaryLogo/index.d.ts +0 -17
  56. package/libs-ui/react-core/src/HeaderSection/index.d.ts +0 -9
  57. package/libs-ui/react-core/src/HeaderSubtitle/index.d.ts +0 -9
  58. package/libs-ui/react-core/src/HeaderTitle/index.d.ts +0 -13
  59. package/libs-ui/react-core/src/PhaseBannerHeaderContainer/index.d.ts +0 -8
  60. package/libs-ui/react-extensions/src/admin/CopyToClipboardMessage/index.d.ts +0 -21
  61. package/libs-ui/react-extensions/src/admin/PaginationLabel/index.d.ts +0 -9
package/CHANGELOG.md CHANGED
@@ -1,6 +1,29 @@
1
1
  # Change Log - @digigov/form
2
2
 
3
- This log was last generated on Tue, 17 May 2022 11:04:22 GMT and should not be manually modified.
3
+ This log was last generated on Tue, 14 Jun 2022 14:49:36 GMT and should not be manually modified.
4
+
5
+ ## 0.6.8
6
+ Tue, 14 Jun 2022 14:49:36 GMT
7
+
8
+ ### Patches
9
+
10
+ - add aria-required and aria-describedby in Field components, add id to ErrorMessage component, add and destructure props in CheckBoxes FileInput Input Radio and Select components",
11
+
12
+ ## 0.6.7
13
+ Wed, 08 Jun 2022 12:26:07 GMT
14
+
15
+ ### Patches
16
+
17
+ - create phone_number validation rule which accepts country and type of phone
18
+ - Add missing dependency in handleSubmit
19
+
20
+ ## 0.6.6
21
+ Tue, 24 May 2022 09:13:18 GMT
22
+
23
+ ### Patches
24
+
25
+ - Update MDX examples
26
+ - create postal code validator
4
27
 
5
28
  ## 0.6.5
6
29
  Tue, 17 May 2022 11:04:22 GMT
package/Field/index.js CHANGED
@@ -49,7 +49,7 @@ var _Label2 = _interopRequireDefault(require("@digigov/form/inputs/Label"));
49
49
 
50
50
  var _i18n = require("@digigov/ui/app/i18n");
51
51
 
52
- var _excluded = ["name", "component", "wrapper", "control", "type", "controlled", "enabled", "editable", "defaultValue", "label", "extra", "layout", "error", "register"],
52
+ var _excluded = ["required", "name", "component", "wrapper", "control", "type", "controlled", "enabled", "editable", "defaultValue", "label", "extra", "layout", "error", "register"],
53
53
  _excluded2 = ["name", "children"];
54
54
 
55
55
  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); }
@@ -91,7 +91,8 @@ var ALTERNATIVE_COMPONENTS = {
91
91
  };
92
92
 
93
93
  var FieldContainer = function FieldContainer(_ref) {
94
- var wrapper = _ref.wrapper,
94
+ var name = _ref.name,
95
+ wrapper = _ref.wrapper,
95
96
  label = _ref.label,
96
97
  children = _ref.children,
97
98
  error = _ref.error;
@@ -104,18 +105,23 @@ var FieldContainer = function FieldContainer(_ref) {
104
105
  error: !!error
105
106
  }, /*#__PURE__*/_react["default"].createElement(_Fieldset["default"], null, /*#__PURE__*/_react["default"].createElement(_FieldsetLegend["default"], {
106
107
  size: "s"
107
- }, label && label.primary, label && label.secondary && /*#__PURE__*/_react["default"].createElement(_Hint["default"], null, t(label.secondary)), error && /*#__PURE__*/_react["default"].createElement(_ErrorMessage["default"], null, t((error === null || error === void 0 ? void 0 : error.message) || ''))), children));
108
+ }, label && label.primary, label && label.secondary && /*#__PURE__*/_react["default"].createElement(_Hint["default"], null, t(label.secondary)), error && /*#__PURE__*/_react["default"].createElement(_ErrorMessage["default"], {
109
+ id: "".concat(name, "-error")
110
+ }, t((error === null || error === void 0 ? void 0 : error.message) || ''))), children));
108
111
  } else {
109
112
  return /*#__PURE__*/_react["default"].createElement(_Field["default"], {
110
113
  error: !!error
111
114
  }, /*#__PURE__*/_react["default"].createElement(_Label["default"], null, label && /*#__PURE__*/_react["default"].createElement(_Label2["default"], {
112
115
  label: label
113
- }), error && /*#__PURE__*/_react["default"].createElement(_ErrorMessage["default"], null, t((error === null || error === void 0 ? void 0 : error.message) || '')), children));
116
+ }), error && /*#__PURE__*/_react["default"].createElement(_ErrorMessage["default"], {
117
+ id: "".concat(name, "-error")
118
+ }, t((error === null || error === void 0 ? void 0 : error.message) || '')), children));
114
119
  }
115
120
  };
116
121
 
117
122
  var FieldBase = function FieldBase(props) {
118
- var name = props.name,
123
+ var required = props.required,
124
+ name = props.name,
119
125
  Component = props.component,
120
126
  wrapper = props.wrapper,
121
127
  control = props.control,
@@ -143,7 +149,8 @@ var FieldBase = function FieldBase(props) {
143
149
  label: label,
144
150
  layout: layout,
145
151
  error: error,
146
- wrapper: wrapper
152
+ wrapper: wrapper,
153
+ name: name
147
154
  }, /*#__PURE__*/_react["default"].createElement(_reactHookForm.Controller, {
148
155
  control: control,
149
156
  name: name,
@@ -160,6 +167,9 @@ var FieldBase = function FieldBase(props) {
160
167
  extra: extra,
161
168
  error: !!error,
162
169
  type: type,
170
+ "aria-required": !!required,
171
+ "aria-describedby": error && "".concat(name, "-error"),
172
+ required: required,
163
173
  disabled: editable === false
164
174
  }, componentProps));
165
175
  }
@@ -170,7 +180,8 @@ var FieldBase = function FieldBase(props) {
170
180
  label: label,
171
181
  layout: layout,
172
182
  error: error,
173
- wrapper: wrapper
183
+ wrapper: wrapper,
184
+ name: name
174
185
  }, Component !== null && Component !== void 0 && Component.render ? /*#__PURE__*/_react["default"].createElement(Component, (0, _extends2["default"])({
175
186
  name: name,
176
187
  ref: register,
@@ -178,6 +189,9 @@ var FieldBase = function FieldBase(props) {
178
189
  error: !!error,
179
190
  extra: extra,
180
191
  type: type,
192
+ "aria-required": !!required,
193
+ "aria-describedby": error && "".concat(name, "-error"),
194
+ required: required,
181
195
  disabled: editable === false
182
196
  }, componentProps)) : /*#__PURE__*/_react["default"].createElement(Component, (0, _extends2["default"])({
183
197
  name: name,
@@ -186,6 +200,9 @@ var FieldBase = function FieldBase(props) {
186
200
  error: !!error,
187
201
  extra: extra,
188
202
  type: type,
203
+ "aria-required": !!required,
204
+ "aria-describedby": error && "".concat(name, "-error"),
205
+ required: required,
189
206
  disabled: editable === false
190
207
  }, componentProps)));
191
208
  };
@@ -10,8 +10,6 @@ import Questions, {
10
10
  StepTitle,
11
11
  } from '@digigov/form/Questions';
12
12
  import { Field } from '@digigov/form';
13
- import PropsDoc from '@docs-components/propsDoc';
14
- import StylesDoc from '@docs-components/stylesDoc';
15
13
  const steps = [
16
14
  {
17
15
  name: 'intro',
package/es/Field/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import _extends from "@babel/runtime/helpers/extends";
2
2
  import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
3
- var _excluded = ["name", "component", "wrapper", "control", "type", "controlled", "enabled", "editable", "defaultValue", "label", "extra", "layout", "error", "register"],
3
+ var _excluded = ["required", "name", "component", "wrapper", "control", "type", "controlled", "enabled", "editable", "defaultValue", "label", "extra", "layout", "error", "register"],
4
4
  _excluded2 = ["name", "children"];
5
5
  import React, { useContext, useMemo } from 'react';
6
6
  import { ConditionalField } from '@digigov/form/Field/ConditionalField';
@@ -55,7 +55,8 @@ var ALTERNATIVE_COMPONENTS = {
55
55
  };
56
56
 
57
57
  var FieldContainer = function FieldContainer(_ref) {
58
- var wrapper = _ref.wrapper,
58
+ var name = _ref.name,
59
+ wrapper = _ref.wrapper,
59
60
  label = _ref.label,
60
61
  children = _ref.children,
61
62
  error = _ref.error;
@@ -68,18 +69,23 @@ var FieldContainer = function FieldContainer(_ref) {
68
69
  error: !!error
69
70
  }, /*#__PURE__*/React.createElement(CoreFieldset, null, /*#__PURE__*/React.createElement(FieldsetLegend, {
70
71
  size: "s"
71
- }, label && label.primary, label && label.secondary && /*#__PURE__*/React.createElement(Hint, null, t(label.secondary)), error && /*#__PURE__*/React.createElement(ErrorMessage, null, t((error === null || error === void 0 ? void 0 : error.message) || ''))), children));
72
+ }, label && label.primary, label && label.secondary && /*#__PURE__*/React.createElement(Hint, null, t(label.secondary)), error && /*#__PURE__*/React.createElement(ErrorMessage, {
73
+ id: "".concat(name, "-error")
74
+ }, t((error === null || error === void 0 ? void 0 : error.message) || ''))), children));
72
75
  } else {
73
76
  return /*#__PURE__*/React.createElement(CoreField, {
74
77
  error: !!error
75
78
  }, /*#__PURE__*/React.createElement(CoreLabel, null, label && /*#__PURE__*/React.createElement(Label, {
76
79
  label: label
77
- }), error && /*#__PURE__*/React.createElement(ErrorMessage, null, t((error === null || error === void 0 ? void 0 : error.message) || '')), children));
80
+ }), error && /*#__PURE__*/React.createElement(ErrorMessage, {
81
+ id: "".concat(name, "-error")
82
+ }, t((error === null || error === void 0 ? void 0 : error.message) || '')), children));
78
83
  }
79
84
  };
80
85
 
81
86
  export var FieldBase = function FieldBase(props) {
82
- var name = props.name,
87
+ var required = props.required,
88
+ name = props.name,
83
89
  Component = props.component,
84
90
  wrapper = props.wrapper,
85
91
  control = props.control,
@@ -107,7 +113,8 @@ export var FieldBase = function FieldBase(props) {
107
113
  label: label,
108
114
  layout: layout,
109
115
  error: error,
110
- wrapper: wrapper
116
+ wrapper: wrapper,
117
+ name: name
111
118
  }, /*#__PURE__*/React.createElement(Controller, {
112
119
  control: control,
113
120
  name: name,
@@ -124,6 +131,9 @@ export var FieldBase = function FieldBase(props) {
124
131
  extra: extra,
125
132
  error: !!error,
126
133
  type: type,
134
+ "aria-required": !!required,
135
+ "aria-describedby": error && "".concat(name, "-error"),
136
+ required: required,
127
137
  disabled: editable === false
128
138
  }, componentProps));
129
139
  }
@@ -134,7 +144,8 @@ export var FieldBase = function FieldBase(props) {
134
144
  label: label,
135
145
  layout: layout,
136
146
  error: error,
137
- wrapper: wrapper
147
+ wrapper: wrapper,
148
+ name: name
138
149
  }, Component !== null && Component !== void 0 && Component.render ? /*#__PURE__*/React.createElement(Component, _extends({
139
150
  name: name,
140
151
  ref: register,
@@ -142,6 +153,9 @@ export var FieldBase = function FieldBase(props) {
142
153
  error: !!error,
143
154
  extra: extra,
144
155
  type: type,
156
+ "aria-required": !!required,
157
+ "aria-describedby": error && "".concat(name, "-error"),
158
+ required: required,
145
159
  disabled: editable === false
146
160
  }, componentProps)) : /*#__PURE__*/React.createElement(Component, _extends({
147
161
  name: name,
@@ -150,6 +164,9 @@ export var FieldBase = function FieldBase(props) {
150
164
  error: !!error,
151
165
  extra: extra,
152
166
  type: type,
167
+ "aria-required": !!required,
168
+ "aria-describedby": error && "".concat(name, "-error"),
169
+ required: required,
153
170
  disabled: editable === false
154
171
  }, componentProps)));
155
172
  };
@@ -10,8 +10,6 @@ import Questions, {
10
10
  StepTitle,
11
11
  } from '@digigov/form/Questions';
12
12
  import { Field } from '@digigov/form';
13
- import PropsDoc from '@docs-components/propsDoc';
14
- import StylesDoc from '@docs-components/stylesDoc';
15
13
  const steps = [
16
14
  {
17
15
  name: 'intro',
package/es/index.js CHANGED
@@ -50,7 +50,7 @@ export var FormBase = /*#__PURE__*/React.forwardRef(function FormBase(_ref, ref)
50
50
  form.setError(key, errors[key]);
51
51
  }
52
52
  }
53
- }, []);
53
+ }, [onSubmit]);
54
54
  var ctx = {
55
55
  fieldsMap: fieldsMap,
56
56
  fieldsetsMap: fieldsetsMap,
@@ -1,4 +1,6 @@
1
1
  import _extends from "@babel/runtime/helpers/extends";
2
+ import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
3
+ var _excluded = ["name", "onChange", "value", "extra", "disabled"];
2
4
  import React from 'react';
3
5
  import { useTranslation } from '@digigov/ui/app/i18n';
4
6
  import CoreCheckboxes from '@digigov/react-core/Checkbox';
@@ -11,7 +13,9 @@ export var Checkboxes = function Checkboxes(_ref) {
11
13
  _ref$extra = _ref.extra,
12
14
  options = _ref$extra.options,
13
15
  className = _ref$extra.className,
14
- disabled = _ref.disabled;
16
+ disabled = _ref.disabled,
17
+ props = _objectWithoutProperties(_ref, _excluded);
18
+
15
19
  if (!value) value = [];
16
20
 
17
21
  var handleChange = function handleChange(optionValue) {
@@ -48,7 +52,13 @@ export var Checkboxes = function Checkboxes(_ref) {
48
52
  ,
49
53
  checked: value.includes(option.value),
50
54
  onChange: handleChange(option.value)
51
- }, option), option.label && option.label.primary && t(option.label.primary) || value, option.label && option.label.secondary && /*#__PURE__*/React.createElement(Hint, null, t(option.label.secondary)));
55
+ }, option, _extends({}, props, {
56
+ defaultValue: undefined,
57
+ onBlur: undefined,
58
+ required: undefined,
59
+ 'aria-describedby': undefined,
60
+ type: 'checkbox'
61
+ })), option.label && option.label.primary && t(option.label.primary) || value, option.label && option.label.secondary && /*#__PURE__*/React.createElement(Hint, null, t(option.label.secondary)));
52
62
  }));
53
63
  };
54
64
  export default Checkboxes;
@@ -123,7 +123,8 @@ export var DateInput = function DateInput(_ref2) {
123
123
  width: 2,
124
124
  name: "".concat(name, "-day"),
125
125
  maxlength: "2",
126
- disabled: props.disabled
126
+ disabled: props.disabled,
127
+ "aria-required": props['aria-required']
127
128
  }), /*#__PURE__*/React.createElement(DatePart, {
128
129
  label: t('form.label.month'),
129
130
  onChange: date.setMonth,
@@ -134,7 +135,8 @@ export var DateInput = function DateInput(_ref2) {
134
135
  width: 2,
135
136
  name: "".concat(props.name, "-month"),
136
137
  maxlength: "2",
137
- disabled: props.disabled
138
+ disabled: props.disabled,
139
+ "aria-required": props['aria-required']
138
140
  }), /*#__PURE__*/React.createElement(DatePart, {
139
141
  label: t('form.label.year'),
140
142
  onChange: date.setYear,
@@ -142,7 +144,8 @@ export var DateInput = function DateInput(_ref2) {
142
144
  width: 4,
143
145
  name: "".concat(props.name, "-year"),
144
146
  maxlength: "4",
145
- disabled: props.disabled
147
+ disabled: props.disabled,
148
+ "aria-required": props['aria-required']
146
149
  }));
147
150
  };
148
151
  export default DateInput;
@@ -1,4 +1,7 @@
1
+ import _extends from "@babel/runtime/helpers/extends";
1
2
  import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
3
+ import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
4
+ var _excluded = ["name", "extra", "disabled", "type"];
2
5
  import React, { useState } from 'react';
3
6
  import clsx from 'clsx';
4
7
  import { useTranslation } from '@digigov/ui/app/i18n';
@@ -9,7 +12,9 @@ export var FileInput = /*#__PURE__*/React.forwardRef(function FileInput(_ref, re
9
12
  var name = _ref.name,
10
13
  _ref$extra = _ref.extra,
11
14
  extra = _ref$extra === void 0 ? {} : _ref$extra,
12
- disabled = _ref.disabled;
15
+ disabled = _ref.disabled,
16
+ type = _ref.type,
17
+ props = _objectWithoutProperties(_ref, _excluded);
13
18
 
14
19
  var _useTranslation = useTranslation(),
15
20
  t = _useTranslation.t;
@@ -25,7 +30,7 @@ export var FileInput = /*#__PURE__*/React.forwardRef(function FileInput(_ref, re
25
30
  tabIndex: 0,
26
31
  role: "button",
27
32
  className: clsx(extra.className, files.length === 0 && ['govgr-btn', 'govgr-btn-primary'], files.length > 0 && 'govgr-link', true && 'govgr-label-file')
28
- }, /*#__PURE__*/React.createElement("input", {
33
+ }, /*#__PURE__*/React.createElement("input", _extends({
29
34
  ref: ref,
30
35
  type: "file",
31
36
  name: name,
@@ -42,6 +47,8 @@ export var FileInput = /*#__PURE__*/React.forwardRef(function FileInput(_ref, re
42
47
  });
43
48
  setFiles(selectedFiles);
44
49
  }
45
- }), files.length ? t('upload.change_file') : t('upload.choose_file')));
50
+ }, _extends({}, props, {
51
+ required: undefined
52
+ }))), files.length ? t('upload.change_file') : t('upload.choose_file')));
46
53
  });
47
54
  export default FileInput;
@@ -37,14 +37,19 @@ export var Input = /*#__PURE__*/React.forwardRef(function WrappedInput(_ref, ref
37
37
  className: className,
38
38
  rows: rows,
39
39
  ref: ref
40
- }, props));
40
+ }, _extends({}, props, {
41
+ required: undefined,
42
+ type: fieldType
43
+ })));
41
44
  } else {
42
45
  return /*#__PURE__*/React.createElement(TextInput, _extends({
43
46
  name: name,
44
47
  type: fieldType,
45
48
  className: className,
46
49
  ref: ref
47
- }, props));
50
+ }, _extends({}, props, {
51
+ required: undefined
52
+ })));
48
53
  }
49
54
  });
50
55
  export default Input;
@@ -1,4 +1,7 @@
1
+ import _extends from "@babel/runtime/helpers/extends";
1
2
  import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
3
+ import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
4
+ var _excluded = ["register", "name", "control", "extra", "disabled"];
2
5
  import React, { useState } from 'react';
3
6
  import Radio from '@digigov/react-core/Radio';
4
7
  import RadioItem from '@digigov/react-core/RadioItem';
@@ -12,7 +15,9 @@ export var RadioButtonsGroup = function RadioButtonsGroup(_ref) {
12
15
  _ref$extra = _ref.extra,
13
16
  options = _ref$extra.options,
14
17
  className = _ref$extra.className,
15
- disabled = _ref.disabled;
18
+ disabled = _ref.disabled,
19
+ props = _objectWithoutProperties(_ref, _excluded);
20
+
16
21
  var currentValue = useWatch({
17
22
  control: control,
18
23
  name: name
@@ -33,13 +38,17 @@ export var RadioButtonsGroup = function RadioButtonsGroup(_ref) {
33
38
  var label = _ref2.label,
34
39
  v = _ref2.value,
35
40
  optionDisabled = _ref2.disabled;
36
- return /*#__PURE__*/React.createElement(RadioItem, {
41
+ return /*#__PURE__*/React.createElement(RadioItem, _extends({
37
42
  ref: register,
38
43
  key: v,
39
44
  name: name,
40
45
  value: v,
41
46
  disabled: disabled || optionDisabled
42
- }, label && label.primary && t(label.primary) || v, label && label.secondary && /*#__PURE__*/React.createElement(Hint, null, t(label.secondary)));
47
+ }, _extends({}, props, {
48
+ required: undefined,
49
+ 'aria-describedby': undefined,
50
+ type: 'radio'
51
+ })), label && label.primary && t(label.primary) || v, label && label.secondary && /*#__PURE__*/React.createElement(Hint, null, t(label.secondary)));
43
52
  }));
44
53
  };
45
54
  export default RadioButtonsGroup;
@@ -1,3 +1,6 @@
1
+ import _extends from "@babel/runtime/helpers/extends";
2
+ import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
3
+ var _excluded = ["name", "extra", "disabled"];
1
4
  import React from 'react';
2
5
  import CoreSelect from '@digigov/react-core/Select';
3
6
  import SelectOption from '@digigov/react-core/SelectOption';
@@ -6,13 +9,17 @@ export var Select = /*#__PURE__*/React.forwardRef(function WrappedSelect(_ref, r
6
9
  _ref$extra = _ref.extra,
7
10
  options = _ref$extra.options,
8
11
  className = _ref$extra.className,
9
- disabled = _ref.disabled;
10
- return /*#__PURE__*/React.createElement(CoreSelect, {
12
+ disabled = _ref.disabled,
13
+ props = _objectWithoutProperties(_ref, _excluded);
14
+
15
+ return /*#__PURE__*/React.createElement(CoreSelect, _extends({
11
16
  className: className,
12
17
  ref: ref,
13
18
  name: name,
14
19
  disabled: disabled
15
- }, options.map(function (_ref2) {
20
+ }, _extends({}, props, {
21
+ required: undefined
22
+ })), options.map(function (_ref2) {
16
23
  var value = _ref2.value,
17
24
  label = _ref2.label;
18
25
  return /*#__PURE__*/React.createElement(SelectOption, {
package/es/validators.js CHANGED
@@ -14,6 +14,19 @@ import dayjs from 'dayjs';
14
14
  import customParseFormat from 'dayjs/plugin/customParseFormat';
15
15
  dayjs.extend(customParseFormat);
16
16
  var DEFAULT_FILE_MAX_SIZE = 10000000;
17
+ export function validatePostalCode(number, countries) {
18
+ if (!countries) {
19
+ return false;
20
+ } else {
21
+ if (countries.length === 1 && countries[0].toUpperCase() === 'GR') {
22
+ // Greek postal code must be 5 digits long and shouldn't start with 0 or 9.
23
+ var CODE_REGEX = /^[12345678][0-9]{4}$/;
24
+ return CODE_REGEX.test(number);
25
+ } else {
26
+ return true;
27
+ }
28
+ }
29
+ }
17
30
  export function validateAFM(afm) {
18
31
  if (afm.length !== 9) {
19
32
  // "afm should be 9 digits"
@@ -38,6 +51,58 @@ export function validateAFM(afm) {
38
51
  var valid = calc % 10 === d9;
39
52
  return valid;
40
53
  }
54
+ export function validatePhoneNumber(phoneNumber) {
55
+ var countries = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ['gr'];
56
+ var typeOfPhoneNumber = arguments.length > 2 ? arguments[2] : undefined;
57
+ var phoneUtil = gPhoneNumber.PhoneNumberUtil.getInstance();
58
+
59
+ if (!countries || countries.length === 0) {
60
+ return true;
61
+ }
62
+
63
+ return countries.some(function (country) {
64
+ try {
65
+ var phone = phoneUtil.parse(phoneNumber, country.toUpperCase());
66
+
67
+ if (phoneUtil.isValidNumber(phone)) {
68
+ if (typeOfPhoneNumber) {
69
+ if (matchTypeOfPhoneNumber(phone, typeOfPhoneNumber, phoneUtil)) {
70
+ return true;
71
+ } else {
72
+ return false;
73
+ }
74
+ } else {
75
+ return true;
76
+ }
77
+ }
78
+
79
+ return false;
80
+ } catch (error) {
81
+ console.error(error);
82
+ return false;
83
+ }
84
+ });
85
+ }
86
+ var phoneNumberTypes = {
87
+ 0: 'landline',
88
+ 1: 'mobile',
89
+ 2: 'landline_or_mobile'
90
+ };
91
+ export function matchTypeOfPhoneNumber(phone, type, phoneUtil) {
92
+ try {
93
+ var phoneNumberType = phoneUtil.getNumberType(phone);
94
+ var numberType = phoneNumberTypes[phoneNumberType];
95
+
96
+ if (numberType === 'landline_or_mobile' || numberType === type) {
97
+ return true;
98
+ } else {
99
+ return false;
100
+ }
101
+ } catch (error) {
102
+ console.error(error);
103
+ return false;
104
+ }
105
+ }
41
106
 
42
107
  function validateMobile(value) {
43
108
  var phoneUtil = gPhoneNumber.PhoneNumberUtil.getInstance();
@@ -69,6 +134,23 @@ function validateMobile(value) {
69
134
  }
70
135
  }
71
136
 
137
+ var POSTALCODE_VALIDATOR = function POSTALCODE_VALIDATOR(field) {
138
+ var _field$extra;
139
+
140
+ var countryCode = field === null || field === void 0 ? void 0 : (_field$extra = field.extra) === null || _field$extra === void 0 ? void 0 : _field$extra.countries;
141
+ return {
142
+ name: 'postal-code-validator',
143
+ message: 'form.error.postalCode',
144
+ test: function test(value) {
145
+ if (!value) {
146
+ return true;
147
+ }
148
+
149
+ return validatePostalCode(value, countryCode);
150
+ }
151
+ };
152
+ };
153
+
72
154
  var MOBILE_PHONE_VALIDATOR = {
73
155
  name: 'mobile-phone-validator',
74
156
  message: 'form.error.mobile_phone',
@@ -80,6 +162,35 @@ var MOBILE_PHONE_VALIDATOR = {
80
162
  return true;
81
163
  }
82
164
  };
165
+
166
+ var PHONE_NUMBER_VALIDATOR = function PHONE_NUMBER_VALIDATOR(field) {
167
+ var _field$extra2, _field$extra3;
168
+
169
+ var countryCode = field === null || field === void 0 ? void 0 : (_field$extra2 = field.extra) === null || _field$extra2 === void 0 ? void 0 : _field$extra2.countries;
170
+ var typeOfPhone = field === null || field === void 0 ? void 0 : (_field$extra3 = field.extra) === null || _field$extra3 === void 0 ? void 0 : _field$extra3.phoneType;
171
+ return {
172
+ name: 'phone-number-validator',
173
+ message: function message() {
174
+ if (typeOfPhone === 'mobile') {
175
+ return 'form.error.mobile_phone';
176
+ }
177
+
178
+ if (typeOfPhone === 'landline') {
179
+ return 'form.error.landline';
180
+ } else {
181
+ return 'form.error.phone_number';
182
+ }
183
+ },
184
+ test: function test(value) {
185
+ if (!value) {
186
+ return true;
187
+ }
188
+
189
+ return validatePhoneNumber(value, countryCode, typeOfPhone);
190
+ }
191
+ };
192
+ };
193
+
83
194
  var AFM_VALIDATOR = {
84
195
  name: 'afm-validator',
85
196
  message: 'form.error.afm',
@@ -267,14 +378,14 @@ export function validateIban(value, countryCode) {
267
378
  }
268
379
 
269
380
  var IBAN_VALIDATOR = function IBAN_VALIDATOR(field) {
270
- var _field$extra;
381
+ var _field$extra4;
271
382
 
272
- var countryCode = field === null || field === void 0 ? void 0 : (_field$extra = field.extra) === null || _field$extra === void 0 ? void 0 : _field$extra.country;
383
+ var countryCode = field === null || field === void 0 ? void 0 : (_field$extra4 = field.extra) === null || _field$extra4 === void 0 ? void 0 : _field$extra4.country;
273
384
  return {
274
385
  name: 'iban-validator',
275
386
  message: 'form.error.iban',
276
387
  test: function test(value) {
277
- if (!value || value.length === 0) {
388
+ if (!value) {
278
389
  return true;
279
390
  }
280
391
 
@@ -418,9 +529,15 @@ var getYUPTypeMap = function getYUPTypeMap() {
418
529
  iban: function iban(field) {
419
530
  return yup.string().test(IBAN_VALIDATOR(field));
420
531
  },
532
+ postal_code: function postal_code(field) {
533
+ return yup.string().test(POSTALCODE_VALIDATOR(field));
534
+ },
421
535
  mobile_phone: function mobile_phone() {
422
536
  return yup.string().test(MOBILE_PHONE_VALIDATOR);
423
537
  },
538
+ phone_number: function phone_number(field) {
539
+ return yup.string().test(PHONE_NUMBER_VALIDATOR(field));
540
+ },
424
541
  'choice:multiple': function choiceMultiple() {
425
542
  return yup.array().of(yup.string()).nullable();
426
543
  },