@digigov/form 0.12.5 → 0.13.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 (95) hide show
  1. package/CHANGELOG.md +19 -1
  2. package/Field/FieldConditional.js +8 -3
  3. package/Field/utils.js +8 -4
  4. package/es/Field/FieldConditional.js +5 -1
  5. package/es/Field/utils.js +8 -4
  6. package/es/inputs/Checkboxes/Checkboxes.stories.js +3 -1
  7. package/es/inputs/Checkboxes/Checkboxes.stories.playwright.json +16 -0
  8. package/es/inputs/Checkboxes/__stories__/Conditional.js +95 -0
  9. package/es/inputs/Checkboxes/__stories__/WithDivider.js +43 -0
  10. package/es/inputs/Checkboxes/index.js +44 -12
  11. package/es/inputs/Input/Input.stories.js +2 -1
  12. package/es/inputs/Input/__stories__/TextWithCharacterLimit.js +31 -0
  13. package/es/inputs/Input/index.js +22 -4
  14. package/es/inputs/Radio/Radio.stories.js +3 -1
  15. package/es/inputs/Radio/Radio.stories.playwright.json +16 -0
  16. package/es/inputs/Radio/__stories__/Conditional.js +95 -0
  17. package/es/inputs/Radio/__stories__/WithDivider.js +48 -0
  18. package/es/inputs/Radio/index.js +15 -4
  19. package/es/registry.js +3 -0
  20. package/es/validators/index.js +10 -2
  21. package/es/validators/utils/index.js +16 -2
  22. package/es/validators/utils/text_limit.js +54 -0
  23. package/esm/Field/FieldConditional.js +5 -1
  24. package/esm/Field/utils.js +8 -4
  25. package/esm/index.js +1 -1
  26. package/esm/inputs/Checkboxes/Checkboxes.stories.js +3 -1
  27. package/esm/inputs/Checkboxes/Checkboxes.stories.playwright.json +16 -0
  28. package/esm/inputs/Checkboxes/__stories__/Conditional.js +95 -0
  29. package/esm/inputs/Checkboxes/__stories__/WithDivider.js +43 -0
  30. package/esm/inputs/Checkboxes/index.js +44 -12
  31. package/esm/inputs/Input/Input.stories.js +2 -1
  32. package/esm/inputs/Input/__stories__/TextWithCharacterLimit.js +31 -0
  33. package/esm/inputs/Input/index.js +22 -4
  34. package/esm/inputs/Radio/Radio.stories.js +3 -1
  35. package/esm/inputs/Radio/Radio.stories.playwright.json +16 -0
  36. package/esm/inputs/Radio/__stories__/Conditional.js +95 -0
  37. package/esm/inputs/Radio/__stories__/WithDivider.js +48 -0
  38. package/esm/inputs/Radio/index.js +15 -4
  39. package/esm/registry.js +3 -0
  40. package/esm/validators/index.js +10 -2
  41. package/esm/validators/utils/index.js +16 -2
  42. package/esm/validators/utils/text_limit.js +54 -0
  43. package/inputs/Checkboxes/Checkboxes.stories.d.ts +2 -0
  44. package/inputs/Checkboxes/Checkboxes.stories.js +28 -0
  45. package/inputs/Checkboxes/Checkboxes.stories.playwright.json +16 -0
  46. package/inputs/Checkboxes/__stories__/Conditional.d.ts +1 -0
  47. package/inputs/Checkboxes/__stories__/Conditional.js +115 -0
  48. package/inputs/Checkboxes/__stories__/WithDivider.d.ts +2 -0
  49. package/inputs/Checkboxes/__stories__/WithDivider.js +63 -0
  50. package/inputs/Checkboxes/index.js +52 -12
  51. package/inputs/Input/Input.stories.d.ts +1 -0
  52. package/inputs/Input/Input.stories.js +14 -0
  53. package/inputs/Input/__stories__/TextWithCharacterLimit.d.ts +2 -0
  54. package/inputs/Input/__stories__/TextWithCharacterLimit.js +51 -0
  55. package/inputs/Input/index.d.ts +4 -0
  56. package/inputs/Input/index.js +25 -4
  57. package/inputs/Label/index.d.ts +2 -0
  58. package/inputs/Radio/Radio.stories.d.ts +2 -0
  59. package/inputs/Radio/Radio.stories.js +28 -0
  60. package/inputs/Radio/Radio.stories.playwright.json +16 -0
  61. package/inputs/Radio/__stories__/Conditional.d.ts +1 -0
  62. package/inputs/Radio/__stories__/Conditional.js +115 -0
  63. package/inputs/Radio/__stories__/WithDivider.d.ts +2 -0
  64. package/inputs/Radio/__stories__/WithDivider.js +68 -0
  65. package/inputs/Radio/index.js +16 -4
  66. package/package.json +4 -4
  67. package/registry.d.ts +1 -0
  68. package/registry.js +4 -0
  69. package/src/Field/FieldConditional.tsx +8 -2
  70. package/src/Field/utils.ts +10 -4
  71. package/src/inputs/Checkboxes/Checkboxes.stories.js +2 -0
  72. package/src/inputs/Checkboxes/Checkboxes.stories.playwright.json +16 -0
  73. package/src/inputs/Checkboxes/__stories__/Conditional.tsx +100 -0
  74. package/src/inputs/Checkboxes/__stories__/WithDivider.tsx +39 -0
  75. package/src/inputs/Checkboxes/index.tsx +59 -29
  76. package/src/inputs/Input/Input.stories.js +2 -1
  77. package/src/inputs/Input/__stories__/TextWithCharacterLimit.tsx +24 -0
  78. package/src/inputs/Input/index.tsx +55 -14
  79. package/src/inputs/Label/index.tsx +2 -0
  80. package/src/inputs/Radio/Radio.stories.js +3 -0
  81. package/src/inputs/Radio/Radio.stories.playwright.json +16 -0
  82. package/src/inputs/Radio/__stories__/Conditional.tsx +97 -0
  83. package/src/inputs/Radio/__stories__/WithDivider.tsx +42 -0
  84. package/src/inputs/Radio/index.tsx +18 -1
  85. package/src/registry.js +3 -0
  86. package/src/types.tsx +4 -2
  87. package/src/validators/index.ts +8 -1
  88. package/src/validators/utils/index.ts +10 -1
  89. package/src/validators/utils/text_limit.ts +44 -0
  90. package/types.d.ts +4 -2
  91. package/validators/index.js +9 -1
  92. package/validators/utils/index.d.ts +1 -0
  93. package/validators/utils/index.js +29 -2
  94. package/validators/utils/text_limit.d.ts +4 -0
  95. package/validators/utils/text_limit.js +65 -0
@@ -2,6 +2,8 @@
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
4
 
5
+ var _typeof = require("@babel/runtime/helpers/typeof");
6
+
5
7
  Object.defineProperty(exports, "__esModule", {
6
8
  value: true
7
9
  });
@@ -9,9 +11,11 @@ exports["default"] = exports.Checkboxes = void 0;
9
11
 
10
12
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
11
13
 
14
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
15
+
12
16
  var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
13
17
 
14
- var _react = _interopRequireDefault(require("react"));
18
+ var _react = _interopRequireWildcard(require("react"));
15
19
 
16
20
  var _i18n = require("@digigov/ui/app/i18n");
17
21
 
@@ -21,7 +25,16 @@ var _CheckboxItem = _interopRequireDefault(require("@digigov/react-core/Checkbox
21
25
 
22
26
  var _Hint = _interopRequireDefault(require("@digigov/react-core/Hint"));
23
27
 
24
- var _excluded = ["name", "onChange", "value", "extra", "disabled"];
28
+ var _form = require("@digigov/form");
29
+
30
+ var _reactCore = require("@digigov/react-core");
31
+
32
+ var _excluded = ["name", "onChange", "value", "extra", "disabled"],
33
+ _excluded2 = ["label", "value", "show", "disabled", "selected"];
34
+
35
+ 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); }
36
+
37
+ 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
38
 
26
39
  var Checkboxes = function Checkboxes(_ref) {
27
40
  var name = _ref.name,
@@ -34,7 +47,7 @@ var Checkboxes = function Checkboxes(_ref) {
34
47
  props = (0, _objectWithoutProperties2["default"])(_ref, _excluded);
35
48
  if (!value) value = [];
36
49
 
37
- var handleChange = function handleChange(optionValue) {
50
+ var handleChange = function handleChange(optionValue, idx, show) {
38
51
  return function (evt) {
39
52
  var newValue;
40
53
 
@@ -48,6 +61,14 @@ var Checkboxes = function Checkboxes(_ref) {
48
61
  newValue = value.filter(function (val) {
49
62
  return val !== optionValue;
50
63
  });
64
+ }
65
+
66
+ if (show && show.length > 0) {
67
+ setChecked(function (items) {
68
+ return items.map(function (item, index) {
69
+ return index === idx ? !item : item;
70
+ });
71
+ });
51
72
  } // reset value to undefined instead of an empty array
52
73
  // so the error state mechanism can throw validation errors
53
74
 
@@ -60,17 +81,31 @@ var Checkboxes = function Checkboxes(_ref) {
60
81
  var _useTranslation = (0, _i18n.useTranslation)(),
61
82
  t = _useTranslation.t;
62
83
 
84
+ var _useState = (0, _react.useState)(Array(options.length).fill(false)),
85
+ _useState2 = (0, _slicedToArray2["default"])(_useState, 2),
86
+ checked = _useState2[0],
87
+ setChecked = _useState2[1];
88
+
63
89
  return /*#__PURE__*/_react["default"].createElement(_Checkbox["default"], {
64
90
  className: className
65
- }, options.map(function (option, key) {
66
- return /*#__PURE__*/_react["default"].createElement(_CheckboxItem["default"], (0, _extends2["default"])({
91
+ }, options.map(function (_ref2, index) {
92
+ var _value;
93
+
94
+ var label = _ref2.label,
95
+ v = _ref2.value,
96
+ show = _ref2.show,
97
+ optionDisabled = _ref2.disabled,
98
+ selected = _ref2.selected,
99
+ option = (0, _objectWithoutProperties2["default"])(_ref2, _excluded2);
100
+ return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, {
101
+ key: index
102
+ }, /*#__PURE__*/_react["default"].createElement(_CheckboxItem["default"], (0, _extends2["default"])({
103
+ key: "".concat(name, ".").concat(index),
67
104
  name: name,
68
- disabled: disabled,
69
- key: key // eslint-disable-next-line @typescript-eslint/ban-ts-comment
70
- // @ts-ignore
71
- ,
72
- checked: value.includes(option.value),
73
- onChange: handleChange(option.value)
105
+ value: v,
106
+ disabled: disabled || optionDisabled,
107
+ checked: (_value = value) === null || _value === void 0 ? void 0 : _value.includes(v),
108
+ onChange: handleChange(v, index, show)
74
109
  }, option, (0, _extends2["default"])({}, props, {
75
110
  reset: undefined,
76
111
  defaultValue: undefined,
@@ -78,7 +113,12 @@ var Checkboxes = function Checkboxes(_ref) {
78
113
  required: undefined,
79
114
  'aria-describedby': undefined,
80
115
  type: 'checkbox'
81
- })), option.label && option.label.primary && t(option.label.primary) || value, option.label && option.label.secondary && /*#__PURE__*/_react["default"].createElement(_Hint["default"], null, t(option.label.secondary)));
116
+ })), label && label.primary && t(label.primary) || value, label && label.secondary && /*#__PURE__*/_react["default"].createElement(_Hint["default"], null, t(label.secondary))), !!checked[index] && show && /*#__PURE__*/_react["default"].createElement(_reactCore.CheckboxConditional, null, show.map(function (fieldName) {
117
+ return /*#__PURE__*/_react["default"].createElement(_form.Field, {
118
+ name: fieldName,
119
+ key: fieldName
120
+ });
121
+ })), selected && selected());
82
122
  }));
83
123
  };
84
124
 
@@ -12,4 +12,5 @@ export * from "@digigov/form/inputs/Input/__stories__/MobilePhone";
12
12
  export * from "@digigov/form/inputs/Input/__stories__/AFM";
13
13
  export * from "@digigov/form/inputs/Input/__stories__/IBAN";
14
14
  export * from "@digigov/form/inputs/Input/__stories__/PostalCode";
15
+ export * from "@digigov/form/inputs/Input/__stories__/TextWithCharacterLimit";
15
16
  import Input from "@digigov/form/inputs/Input";
@@ -121,6 +121,20 @@ Object.keys(_PostalCode).forEach(function (key) {
121
121
  }
122
122
  });
123
123
  });
124
+
125
+ var _TextWithCharacterLimit = require("@digigov/form/inputs/Input/__stories__/TextWithCharacterLimit");
126
+
127
+ Object.keys(_TextWithCharacterLimit).forEach(function (key) {
128
+ if (key === "default" || key === "__esModule") return;
129
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
130
+ if (key in exports && exports[key] === _TextWithCharacterLimit[key]) return;
131
+ Object.defineProperty(exports, key, {
132
+ enumerable: true,
133
+ get: function get() {
134
+ return _TextWithCharacterLimit[key];
135
+ }
136
+ });
137
+ });
124
138
  var _default = {
125
139
  title: 'Digigov Form/inputs/Input',
126
140
  component: _Input["default"],
@@ -0,0 +1,2 @@
1
+ export declare const TextWithCharacterLimit: () => JSX.Element;
2
+ export default TextWithCharacterLimit;
@@ -0,0 +1,51 @@
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.TextWithCharacterLimit = 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, {
23
+ type: "submit"
24
+ }, "\u03A3\u03C5\u03BD\u03AD\u03C7\u03B5\u03B9\u03B1");
25
+
26
+ var TextWithCharacterLimit = function TextWithCharacterLimit() {
27
+ return /*#__PURE__*/_react["default"].createElement(_form["default"], {
28
+ onSubmit: function onSubmit(data) {
29
+ console.log(data);
30
+ }
31
+ }, /*#__PURE__*/_react["default"].createElement(_form.Field, {
32
+ key: "text",
33
+ name: "text",
34
+ type: "text",
35
+ label: {
36
+ primary: 'Μπορείτε να δώσετε περισσότερες πληροφορίες;'
37
+ },
38
+ required: true,
39
+ extra: {
40
+ limit: {
41
+ min: 3,
42
+ max: 10
43
+ },
44
+ multiline: true
45
+ }
46
+ }), _ref);
47
+ };
48
+
49
+ exports.TextWithCharacterLimit = TextWithCharacterLimit;
50
+ var _default = TextWithCharacterLimit;
51
+ exports["default"] = _default;
@@ -6,6 +6,10 @@ export interface InputProps extends Omit<UncontrolledFieldProps, 'extra'> {
6
6
  multiline?: boolean;
7
7
  className?: string;
8
8
  rows?: any;
9
+ limit: {
10
+ min?: number;
11
+ max?: number;
12
+ };
9
13
  };
10
14
  }
11
15
  export declare const Input: React.ExoticComponent<InputProps>;
@@ -17,7 +17,13 @@ var _TextInput = _interopRequireDefault(require("@digigov/react-core/TextInput")
17
17
 
18
18
  var _TextArea = _interopRequireDefault(require("@digigov/react-core/TextArea"));
19
19
 
20
- var _excluded = ["name", "type", "extra"];
20
+ var _reactCore = require("@digigov/react-core");
21
+
22
+ var _reactHookForm = require("react-hook-form");
23
+
24
+ var _i18n = require("@digigov/ui/app/i18n");
25
+
26
+ var _excluded = ["name", "control", "type", "extra"];
21
27
  var TYPES_MAP = {
22
28
  string: 'text',
23
29
  "int": 'text',
@@ -27,14 +33,17 @@ var TYPES_MAP = {
27
33
 
28
34
  var Input = /*#__PURE__*/_react["default"].forwardRef(function WrappedInput(_ref, ref) {
29
35
  var name = _ref.name,
36
+ control = _ref.control,
30
37
  type = _ref.type,
31
38
  extra = _ref.extra,
32
39
  props = (0, _objectWithoutProperties2["default"])(_ref, _excluded);
33
40
 
41
+ // eslint-disable-next-line prefer-const
34
42
  var _ref2 = extra || {},
35
43
  _ref2$multiline = _ref2.multiline,
36
44
  multiline = _ref2$multiline === void 0 ? false : _ref2$multiline,
37
- rows = _ref2.rows;
45
+ rows = _ref2.rows,
46
+ limit = _ref2.limit;
38
47
 
39
48
  var _ref3 = extra || {},
40
49
  className = _ref3.className; // if enforced to multiline use true. Derive from type otherwise.
@@ -46,8 +55,16 @@ var Input = /*#__PURE__*/_react["default"].forwardRef(function WrappedInput(_ref
46
55
 
47
56
  var fieldType = TYPES_MAP[type || 'text'] || 'text';
48
57
 
58
+ var _useTranslation = (0, _i18n.useTranslation)(),
59
+ t = _useTranslation.t;
60
+
61
+ var currentValue = (0, _reactHookForm.useWatch)({
62
+ control: control,
63
+ name: name
64
+ });
65
+
49
66
  if (multiline === true) {
50
- return /*#__PURE__*/_react["default"].createElement(_TextArea["default"], (0, _extends2["default"])({
67
+ return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement(_TextArea["default"], (0, _extends2["default"])({
51
68
  name: name,
52
69
  className: className,
53
70
  rows: rows,
@@ -56,7 +73,11 @@ var Input = /*#__PURE__*/_react["default"].forwardRef(function WrappedInput(_ref
56
73
  reset: undefined,
57
74
  required: undefined,
58
75
  type: fieldType
59
- })));
76
+ }))), (limit === null || limit === void 0 ? void 0 : limit.max) && /*#__PURE__*/_react["default"].createElement(_reactCore.Hint, null, currentValue === undefined || (currentValue === null || currentValue === void 0 ? void 0 : currentValue.length) >= 0 && (currentValue === null || currentValue === void 0 ? void 0 : currentValue.length) <= (limit === null || limit === void 0 ? void 0 : limit.max) ? /*#__PURE__*/_react["default"].createElement("span", null, t('form.info.text.you_have'), ' ', /*#__PURE__*/_react["default"].createElement("b", null, !currentValue ? limit.max : (limit === null || limit === void 0 ? void 0 : limit.max) - (currentValue === null || currentValue === void 0 ? void 0 : currentValue.length)), ' ', currentValue && (limit === null || limit === void 0 ? void 0 : limit.max) - (currentValue === null || currentValue === void 0 ? void 0 : currentValue.length) === 1 ? "".concat(t('form.info.text.character')) : "".concat(t('form.info.text.characters')), ' ', t('form.info.text.remaining'), ".") : /*#__PURE__*/_react["default"].createElement("span", {
77
+ style: {
78
+ color: '#b60202'
79
+ }
80
+ }, t('form.info.text.you_have'), ' ', /*#__PURE__*/_react["default"].createElement("b", null, currentValue && (currentValue === null || currentValue === void 0 ? void 0 : currentValue.length) - (limit === null || limit === void 0 ? void 0 : limit.max)), ' ', (currentValue === null || currentValue === void 0 ? void 0 : currentValue.length) - (limit === null || limit === void 0 ? void 0 : limit.max) === 1 ? "".concat(t('form.info.text.character')) : "".concat(t('form.info.text.characters')), ' ', t('form.info.text.too_many'), ".")));
60
81
  } else {
61
82
  return /*#__PURE__*/_react["default"].createElement(_TextInput["default"], (0, _extends2["default"])({
62
83
  name: name,
@@ -3,8 +3,10 @@ import { FieldLabelProps } from '@digigov/form/types';
3
3
  export interface FieldOptionProps {
4
4
  label?: FieldLabelProps;
5
5
  value: string;
6
+ show?: string[];
6
7
  disabled?: boolean;
7
8
  selected?: () => React.FC;
9
+ divider?: string;
8
10
  }
9
11
  export interface LabelProps {
10
12
  primary?: string;
@@ -5,4 +5,6 @@ declare namespace _default {
5
5
  }
6
6
  export default _default;
7
7
  export * from "@digigov/form/inputs/Radio/__stories__/Default";
8
+ export * from "@digigov/form/inputs/Radio/__stories__/WithDivider";
9
+ export * from "@digigov/form/inputs/Radio/__stories__/Conditional";
8
10
  import Radio from "@digigov/form/inputs/Radio";
@@ -23,6 +23,34 @@ Object.keys(_Default).forEach(function (key) {
23
23
  }
24
24
  });
25
25
  });
26
+
27
+ var _WithDivider = require("@digigov/form/inputs/Radio/__stories__/WithDivider");
28
+
29
+ Object.keys(_WithDivider).forEach(function (key) {
30
+ if (key === "default" || key === "__esModule") return;
31
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
32
+ if (key in exports && exports[key] === _WithDivider[key]) return;
33
+ Object.defineProperty(exports, key, {
34
+ enumerable: true,
35
+ get: function get() {
36
+ return _WithDivider[key];
37
+ }
38
+ });
39
+ });
40
+
41
+ var _Conditional = require("@digigov/form/inputs/Radio/__stories__/Conditional");
42
+
43
+ Object.keys(_Conditional).forEach(function (key) {
44
+ if (key === "default" || key === "__esModule") return;
45
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
46
+ if (key in exports && exports[key] === _Conditional[key]) return;
47
+ Object.defineProperty(exports, key, {
48
+ enumerable: true,
49
+ get: function get() {
50
+ return _Conditional[key];
51
+ }
52
+ });
53
+ });
26
54
  var _default = {
27
55
  title: 'Digigov Form/inputs/Radio',
28
56
  component: _Radio["default"],
@@ -52,6 +52,22 @@
52
52
  "title": "select option with keyboard and submit"
53
53
  }
54
54
  ]
55
+ },
56
+ "digigov-form-inputs-radio--conditional": {
57
+ "actionSets": [
58
+ {
59
+ "actions": [
60
+ {
61
+ "name": "click",
62
+ "args": {
63
+ "selector": "html>body>div:nth-child(5)>form>div>fieldset>div>div:nth-child(1)>div>label>input"
64
+ }
65
+ }
66
+ ],
67
+ "id": "LAUEuHh58XiI",
68
+ "title": "Radio conditional action"
69
+ }
70
+ ]
55
71
  }
56
72
  }
57
73
  }
@@ -0,0 +1 @@
1
+ export declare const Conditional: () => JSX.Element;
@@ -0,0 +1,115 @@
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.Conditional = 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 fields = [{
23
+ key: 'landline',
24
+ type: 'phone_number',
25
+ label: {
26
+ secondary: 'Εισάγετε το νούμερο του σταθερού σας τηλεφώνου.'
27
+ },
28
+ enabled: false,
29
+ condition: {
30
+ auth_form: {
31
+ is: 'via_mobile_phone',
32
+ then: {
33
+ enabled: true,
34
+ required: true
35
+ }
36
+ }
37
+ }
38
+ }, {
39
+ key: 'mobile_phone',
40
+ type: 'mobile_phone',
41
+ label: {
42
+ secondary: 'Εισάγετε το νούμερο του κινητού σας τηλεφώνου.'
43
+ },
44
+ enabled: false,
45
+ condition: {
46
+ auth_form: {
47
+ is: 'via_mobile_phone',
48
+ then: {
49
+ enabled: true,
50
+ required: true
51
+ }
52
+ }
53
+ }
54
+ }, {
55
+ key: 'email',
56
+ type: 'email',
57
+ label: {
58
+ secondary: 'Εισάγετε την διεύθυνση του ηλεκτρονικού σας ταχυδρομείου.'
59
+ },
60
+ enabled: false,
61
+ condition: {
62
+ auth_form: {
63
+ is: 'via_email',
64
+ then: {
65
+ enabled: true,
66
+ required: true
67
+ }
68
+ }
69
+ }
70
+ }, {
71
+ key: 'auth_form',
72
+ type: 'choice:single',
73
+ required: true,
74
+ label: {
75
+ primary: 'Επιλέξτε μέθοδο πιστοποίησης',
76
+ secondary: 'Για την ολοκλήρωση της δήλωσης σας, θα χρειαστεί επιπλέον πιστοποίηση. Θα σας στείλουμε ένα κωδικό μιας χρήσης είτε στο τηλέφωνο είτε στην ηλεκτρονική σας διεύθυνση.'
77
+ },
78
+ extra: {
79
+ options: [{
80
+ key: 'via_mobile_phone',
81
+ label: {
82
+ primary: 'Mέσω κινητού τηλεφώνου'
83
+ },
84
+ value: 'via_mobile_phone',
85
+ show: ['mobile_phone', 'landline']
86
+ }, {
87
+ key: 'via_email',
88
+ label: {
89
+ primary: 'Μέσω διεύθυνσης ηλεκτρονικού ταχυδρομείου (e-mail)'
90
+ },
91
+ value: 'via_email',
92
+ show: ['email']
93
+ }]
94
+ }
95
+ }];
96
+
97
+ var _ref = /*#__PURE__*/_react["default"].createElement(_form.Field, {
98
+ key: "auth_form",
99
+ name: "auth_form"
100
+ });
101
+
102
+ var _ref2 = /*#__PURE__*/_react["default"].createElement(_core.Button, {
103
+ type: "submit"
104
+ }, "\u03A3\u03C5\u03BD\u03AD\u03C7\u03B5\u03B9\u03B1");
105
+
106
+ var Conditional = function Conditional() {
107
+ return /*#__PURE__*/_react["default"].createElement(_form["default"], {
108
+ onSubmit: function onSubmit(data) {
109
+ console.log(data);
110
+ },
111
+ fields: fields
112
+ }, _ref, _ref2);
113
+ };
114
+
115
+ exports.Conditional = Conditional;
@@ -0,0 +1,2 @@
1
+ export declare const WithDivider: () => JSX.Element;
2
+ export default WithDivider;
@@ -0,0 +1,68 @@
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.WithDivider = 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, {
23
+ type: "submit"
24
+ }, "\u03A3\u03C5\u03BD\u03AD\u03C7\u03B5\u03B9\u03B1");
25
+
26
+ var WithDivider = function WithDivider() {
27
+ return /*#__PURE__*/_react["default"].createElement(_form["default"], {
28
+ onSubmit: function onSubmit(data) {
29
+ console.log(data);
30
+ }
31
+ }, /*#__PURE__*/_react["default"].createElement(_form.Field, {
32
+ key: 'string',
33
+ name: "string",
34
+ type: "choice:single",
35
+ required: true,
36
+ label: {
37
+ primary: 'Ποια ειναι η χώρα της διαμονής σας;'
38
+ },
39
+ extra: {
40
+ options: [{
41
+ label: {
42
+ primary: 'Ελλάδα'
43
+ },
44
+ value: 'greece'
45
+ }, {
46
+ label: {
47
+ primary: 'Κύπρος'
48
+ },
49
+ value: 'cyprus'
50
+ }, {
51
+ label: {
52
+ primary: 'Χώρα της Ευρωπαϊκής Ένωσης'
53
+ },
54
+ value: 'eu'
55
+ }, {
56
+ label: {
57
+ primary: 'Ηνωμένες Πολιτείες της Αμερικής'
58
+ },
59
+ value: 'usa',
60
+ divider: 'ή'
61
+ }]
62
+ }
63
+ }), _ref);
64
+ };
65
+
66
+ exports.WithDivider = WithDivider;
67
+ var _default = WithDivider;
68
+ exports["default"] = _default;
@@ -23,7 +23,12 @@ var _reactHookForm = require("react-hook-form");
23
23
 
24
24
  var _Hint = _interopRequireDefault(require("@digigov/react-core/Hint"));
25
25
 
26
- var _excluded = ["name", "control", "register", "extra", "disabled"];
26
+ var _form = require("@digigov/form");
27
+
28
+ var _reactCore = require("@digigov/react-core");
29
+
30
+ var _excluded = ["name", "control", "register", "extra", "disabled"],
31
+ _excluded2 = ["label", "value", "show", "disabled", "selected"];
27
32
 
28
33
  var RadioButtonsGroup = function RadioButtonsGroup(_ref) {
29
34
  var name = _ref.name,
@@ -49,19 +54,26 @@ var RadioButtonsGroup = function RadioButtonsGroup(_ref) {
49
54
  }, options.map(function (_ref2) {
50
55
  var label = _ref2.label,
51
56
  v = _ref2.value,
57
+ show = _ref2.show,
52
58
  optionDisabled = _ref2.disabled,
53
- selected = _ref2.selected;
59
+ selected = _ref2.selected,
60
+ option = (0, _objectWithoutProperties2["default"])(_ref2, _excluded2);
54
61
  return /*#__PURE__*/_react["default"].createElement("div", {
55
62
  key: "".concat(name, ".").concat(v)
56
63
  }, /*#__PURE__*/_react["default"].createElement(_RadioItem["default"], (0, _extends2["default"])({}, register(name), {
57
64
  value: v,
58
65
  disabled: disabled || optionDisabled
59
- }, (0, _extends2["default"])({}, props, {
66
+ }, option, (0, _extends2["default"])({}, props, {
60
67
  reset: undefined,
61
68
  required: undefined,
62
69
  'aria-describedby': undefined,
63
70
  type: 'radio'
64
- })), label && label.primary && t(label.primary) || v, label && label.secondary && /*#__PURE__*/_react["default"].createElement(_Hint["default"], null, t(label.secondary))), selected && selected());
71
+ })), label && label.primary && t(label.primary) || v, label && label.secondary && /*#__PURE__*/_react["default"].createElement(_Hint["default"], null, t(label.secondary))), selected && selected(), currentValue === v && show && /*#__PURE__*/_react["default"].createElement(_reactCore.RadioConditional, null, show.map(function (fieldName) {
72
+ return /*#__PURE__*/_react["default"].createElement(_form.Field, {
73
+ name: fieldName,
74
+ key: fieldName
75
+ });
76
+ })));
65
77
  }));
66
78
  };
67
79
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@digigov/form",
3
- "version": "0.12.5",
3
+ "version": "0.13.0",
4
4
  "description": "@digigov form builder",
5
5
  "author": "GRNET Developers <devs@lists.grnet.gr>",
6
6
  "license": "BSD-2-Clause",
@@ -19,9 +19,9 @@
19
19
  "publint": "0.1.8"
20
20
  },
21
21
  "peerDependencies": {
22
- "@digigov/ui": "0.35.2",
23
- "@digigov/react-core": "0.25.3",
24
- "@digigov/react-extensions": "0.23.2",
22
+ "@digigov/ui": "0.35.3",
23
+ "@digigov/react-core": "0.26.0",
24
+ "@digigov/react-extensions": "0.23.4",
25
25
  "clsx": "1.1.1",
26
26
  "react": "^16.8.0 || ^17.0.0",
27
27
  "react-dom": "^16.8.0 || ^17.0.0"
package/registry.d.ts CHANGED
@@ -56,6 +56,7 @@ declare var _default: {
56
56
  '@digigov/form/validators/utils/otp': {};
57
57
  '@digigov/form/validators/utils/phone': {};
58
58
  '@digigov/form/validators/utils/postal_code': {};
59
+ '@digigov/form/validators/utils/text_limit': {};
59
60
  '@digigov/form/validators/utils/uuid4': {};
60
61
  };
61
62
  export default _default;
package/registry.js CHANGED
@@ -121,6 +121,8 @@ var _digigov_form_validators_utils_phone = _interopRequireWildcard(require("@dig
121
121
 
122
122
  var _digigov_form_validators_utils_postal_code = _interopRequireWildcard(require("@digigov/form/validators/utils/postal_code"));
123
123
 
124
+ var _digigov_form_validators_utils_text_limit = _interopRequireWildcard(require("@digigov/form/validators/utils/text_limit"));
125
+
124
126
  var _digigov_form_validators_utils_uuid4 = _interopRequireWildcard(require("@digigov/form/validators/utils/uuid4"));
125
127
 
126
128
  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); }
@@ -128,6 +130,7 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "functio
128
130
  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; }
129
131
 
130
132
  function lazyImport(pkgImport) {
133
+ // eslint-disable-next-line no-undef
131
134
  return new Proxy({}, {
132
135
  get: function get(_target, name) {
133
136
  if (name === '__esModule' || name === 'default') {
@@ -199,6 +202,7 @@ var _default = {
199
202
  '@digigov/form/validators/utils/otp': lazyImport(_digigov_form_validators_utils_otp),
200
203
  '@digigov/form/validators/utils/phone': lazyImport(_digigov_form_validators_utils_phone),
201
204
  '@digigov/form/validators/utils/postal_code': lazyImport(_digigov_form_validators_utils_postal_code),
205
+ '@digigov/form/validators/utils/text_limit': lazyImport(_digigov_form_validators_utils_text_limit),
202
206
  '@digigov/form/validators/utils/uuid4': lazyImport(_digigov_form_validators_utils_uuid4)
203
207
  };
204
208
  exports["default"] = _default;