@digigov/form 0.6.7 → 0.6.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +22 -1
- package/Field/index.js +129 -39
- package/Field/types.js +5 -0
- package/Fieldset/FieldsetWithContext.js +63 -0
- package/Fieldset/index.js +5 -64
- package/Fieldset/types.js +5 -0
- package/FormBuilder.js +178 -0
- package/FormContext.js +14 -0
- package/Questions/Questions.js +105 -0
- package/Questions/QuestionsContext.js +20 -0
- package/Questions/Step/ReviewStep.js +11 -7
- package/Questions/Step/Step.js +93 -0
- package/Questions/Step/StepArrayReview.js +79 -0
- package/Questions/Step/StepContext.js +37 -0
- package/Questions/Step/StepDescription.js +2 -2
- package/Questions/Step/StepForm.js +10 -6
- package/Questions/Step/StepTitle.js +2 -2
- package/Questions/Step/getAddMoreFields.js +31 -0
- package/Questions/Step/index.js +81 -200
- package/Questions/Step/types.js +5 -0
- package/Questions/getNextStep.js +30 -0
- package/Questions/index.js +4 -150
- package/Questions/types.js +5 -0
- package/es/Field/index.js +124 -35
- package/es/Field/types.js +1 -0
- package/es/Fieldset/FieldsetWithContext.js +41 -0
- package/es/Fieldset/index.js +4 -52
- package/es/Fieldset/types.js +1 -0
- package/es/FormBuilder.js +148 -0
- package/es/FormContext.js +5 -0
- package/es/Questions/Questions.js +84 -0
- package/es/Questions/QuestionsContext.js +11 -0
- package/es/Questions/Step/ReviewStep.js +5 -3
- package/es/Questions/Step/Step.js +69 -0
- package/es/Questions/Step/StepArrayReview.js +50 -0
- package/es/Questions/Step/StepContext.js +27 -0
- package/es/Questions/Step/StepDescription.js +1 -1
- package/es/Questions/Step/StepForm.js +4 -2
- package/es/Questions/Step/StepTitle.js +1 -1
- package/es/Questions/Step/getAddMoreFields.js +22 -0
- package/es/Questions/Step/index.js +13 -165
- package/es/Questions/Step/types.js +1 -0
- package/es/Questions/getNextStep.js +23 -0
- package/es/Questions/index.js +2 -119
- package/es/Questions/index.spec.js +2 -1
- package/es/Questions/types.js +1 -0
- package/es/index.js +2 -153
- package/es/inputs/Checkboxes/index.js +12 -2
- package/es/inputs/DateInput/index.js +6 -3
- package/es/inputs/FileInput/index.js +10 -3
- package/es/inputs/Input/index.js +7 -2
- package/es/inputs/Radio/index.js +12 -3
- package/es/inputs/Select/index.js +10 -3
- package/es/inputs/index.js +5 -4
- package/es/internal.js +29 -0
- package/es/types.js +1 -0
- package/esm/Field/index.js +124 -35
- package/esm/Field/types.js +1 -0
- package/esm/Fieldset/FieldsetWithContext.js +41 -0
- package/esm/Fieldset/index.js +4 -52
- package/esm/Fieldset/types.js +1 -0
- package/esm/FormBuilder.js +148 -0
- package/esm/FormContext.js +5 -0
- package/esm/Questions/Questions.js +84 -0
- package/esm/Questions/QuestionsContext.js +11 -0
- package/esm/Questions/Step/ReviewStep.js +5 -3
- package/esm/Questions/Step/Step.js +69 -0
- package/esm/Questions/Step/StepArrayReview.js +50 -0
- package/esm/Questions/Step/StepContext.js +27 -0
- package/esm/Questions/Step/StepDescription.js +1 -1
- package/esm/Questions/Step/StepForm.js +4 -2
- package/esm/Questions/Step/StepTitle.js +1 -1
- package/esm/Questions/Step/getAddMoreFields.js +22 -0
- package/esm/Questions/Step/index.js +13 -165
- package/esm/Questions/Step/types.js +1 -0
- package/esm/Questions/getNextStep.js +23 -0
- package/esm/Questions/index.js +2 -119
- package/esm/Questions/index.spec.js +2 -1
- package/esm/Questions/types.js +1 -0
- package/esm/index.js +3 -154
- package/esm/inputs/Checkboxes/index.js +12 -2
- package/esm/inputs/DateInput/index.js +6 -3
- package/esm/inputs/FileInput/index.js +10 -3
- package/esm/inputs/Input/index.js +7 -2
- package/esm/inputs/Radio/index.js +12 -3
- package/esm/inputs/Select/index.js +10 -3
- package/esm/inputs/index.js +5 -4
- package/esm/internal.js +29 -0
- package/esm/types.js +1 -0
- package/index.js +8 -191
- package/inputs/Checkboxes/index.js +13 -2
- package/inputs/DateInput/index.js +6 -3
- package/inputs/FileInput/index.js +13 -3
- package/inputs/Input/index.js +7 -2
- package/inputs/Radio/index.js +14 -3
- package/inputs/Select/index.js +12 -3
- package/inputs/index.js +13 -5
- package/internal.js +335 -0
- package/libs/form/src/Field/index.d.ts +2 -59
- package/libs/form/src/Field/types.d.ts +75 -0
- package/libs/form/src/Fieldset/FieldsetWithContext.d.ts +4 -0
- package/libs/form/src/Fieldset/index.d.ts +2 -12
- package/libs/form/src/Fieldset/types.d.ts +6 -0
- package/libs/form/src/FormBuilder.d.ts +5 -0
- package/libs/form/src/FormContext.d.ts +3 -0
- package/libs/form/src/Questions/Questions.d.ts +8 -0
- package/libs/form/src/Questions/QuestionsContext.d.ts +3 -0
- package/libs/form/src/Questions/Step/ReviewStep.d.ts +1 -0
- package/libs/form/src/Questions/Step/Step.d.ts +9 -0
- package/libs/form/src/Questions/Step/StepArrayReview.d.ts +4 -0
- package/libs/form/src/Questions/Step/StepContext.d.ts +4 -0
- package/libs/form/src/Questions/Step/StepForm.d.ts +2 -1
- package/libs/form/src/Questions/Step/getAddMoreFields.d.ts +3 -0
- package/libs/form/src/Questions/Step/index.d.ts +12 -47
- package/libs/form/src/Questions/Step/types.d.ts +31 -0
- package/libs/form/src/Questions/getNextStep.d.ts +2 -0
- package/libs/form/src/Questions/index.d.ts +1 -28
- package/libs/form/src/Questions/types.d.ts +19 -0
- package/libs/form/src/index.d.ts +2 -73
- package/libs/form/src/inputs/Checkboxes/index.d.ts +1 -1
- package/libs/form/src/inputs/DateInput/index.d.ts +1 -1
- package/libs/form/src/inputs/FileInput/index.d.ts +1 -1
- package/libs/form/src/inputs/Input/index.d.ts +1 -1
- package/libs/form/src/inputs/Label/index.d.ts +2 -1
- package/libs/form/src/inputs/Radio/index.d.ts +1 -1
- package/libs/form/src/inputs/Select/index.d.ts +1 -1
- package/libs/form/src/inputs/index.d.ts +4 -3
- package/libs/form/src/internal.d.ts +29 -0
- package/libs/form/src/types.d.ts +69 -0
- package/libs/form/src/validators.d.ts +1 -1
- package/libs/ui/src/core/Accordion/index.d.ts +3 -3
- package/libs/ui/src/core/BackLink/index.d.ts +3 -0
- package/libs/ui/src/core/Blockquote/index.d.ts +1 -1
- package/libs/ui/src/core/Breadcrumbs/index.d.ts +2 -0
- package/libs/ui/src/core/Button/BackButton.d.ts +1 -1
- package/libs/ui/src/core/Button/ButtonLink.d.ts +1 -1
- package/libs/ui/src/core/Button/index.d.ts +1 -1
- package/libs/ui/src/core/Confirmation/index.d.ts +5 -0
- package/libs/ui/src/core/Divider/index.d.ts +1 -1
- package/libs/ui/src/core/NavList/NavList.d.ts +1 -14
- package/libs/ui/src/core/NavList/NavListBase.d.ts +4 -0
- package/libs/ui/src/core/NavList/NavListItem.d.ts +1 -1
- package/libs/ui/src/core/NavList/NavListItemBase.d.ts +1 -1
- package/libs/ui/src/core/NavList/NavListSubMenu.d.ts +1 -1
- package/libs/ui/src/core/NavList/types.d.ts +13 -0
- package/libs/ui/src/core/NotificationBanner/index.d.ts +1 -1
- package/libs/ui/src/core/PhaseBanner/index.d.ts +6 -0
- package/libs/ui/src/core/Table/TableFloatingScroll.d.ts +3 -0
- package/libs/ui/src/core/Table/index.d.ts +1 -0
- package/libs/ui/src/core/TextArea/index.d.ts +3 -0
- package/libs/ui/src/core/TextInput/index.d.ts +3 -0
- package/libs/ui/src/core/VisuallyHidden/index.d.ts +2 -0
- package/libs/ui/src/core/index.d.ts +8 -2
- package/libs/ui/src/hooks/useTogglableSections.d.ts +3 -2
- package/libs/ui/src/layouts/Grid/index.d.ts +4 -0
- package/libs/ui/src/locales/el.d.ts +1 -0
- package/libs/ui/src/typography/{Caption.d.ts → Caption/index.d.ts} +1 -1
- package/libs/ui/src/typography/{NormalText.d.ts → NormalText/index.d.ts} +0 -0
- package/libs/ui/src/typography/{Paragraph.d.ts → Paragraph/index.d.ts} +0 -0
- package/libs/ui/src/typography/{Title.d.ts → Title/index.d.ts} +0 -0
- package/libs-ui/react-core/src/Accordion/index.d.ts +1 -1
- package/libs-ui/react-core/src/AccordionControls/index.d.ts +1 -1
- package/libs-ui/react-core/src/AccordionSection/index.d.ts +1 -1
- package/libs-ui/react-core/src/AccordionSectionContent/index.d.ts +1 -1
- package/libs-ui/react-core/src/AccordionSectionHeader/index.d.ts +1 -1
- package/libs-ui/react-core/src/AccordionSectionSummary/index.d.ts +1 -1
- package/libs-ui/react-core/src/AccordionSectionSummaryHeading/index.d.ts +1 -1
- package/libs-ui/react-core/src/BackLink/index.d.ts +1 -1
- package/libs-ui/react-core/src/Blockquote/index.d.ts +1 -1
- package/libs-ui/react-core/src/Breadcrumbs/index.d.ts +1 -1
- package/libs-ui/react-core/src/BreadcrumbsList/index.d.ts +1 -1
- package/libs-ui/react-core/src/BreadcrumbsListItem/index.d.ts +1 -1
- package/libs-ui/react-core/src/Button/index.d.ts +1 -1
- package/libs-ui/react-core/src/ButtonGroup/index.d.ts +1 -1
- package/libs-ui/react-core/src/ButtonLink/index.d.ts +1 -1
- package/libs-ui/react-core/src/CallToAction/index.d.ts +1 -1
- package/libs-ui/react-core/src/Card/index.d.ts +1 -1
- package/libs-ui/react-core/src/CardAction/index.d.ts +1 -1
- package/libs-ui/react-core/src/CardHeading/index.d.ts +1 -1
- package/libs-ui/react-core/src/CardText/index.d.ts +1 -1
- package/libs-ui/react-core/src/Checkbox/index.d.ts +1 -1
- package/libs-ui/react-core/src/CheckboxItem/index.d.ts +1 -1
- package/libs-ui/react-core/src/Confirmation/index.d.ts +9 -0
- package/libs-ui/react-core/src/ConfirmationBody/index.d.ts +9 -0
- package/libs-ui/react-core/src/ConfirmationTitle/index.d.ts +9 -0
- package/libs-ui/react-core/src/DateInput/index.d.ts +1 -1
- package/libs-ui/react-core/src/DateInputItem/index.d.ts +1 -1
- package/libs-ui/react-core/src/Details/index.d.ts +1 -1
- package/libs-ui/react-core/src/DetailsContent/index.d.ts +1 -1
- package/libs-ui/react-core/src/DetailsSummary/index.d.ts +1 -1
- package/libs-ui/react-core/src/ErrorMessage/index.d.ts +1 -1
- package/libs-ui/react-core/src/ErrorSummary/index.d.ts +1 -1
- package/libs-ui/react-core/src/Field/index.d.ts +1 -1
- package/libs-ui/react-core/src/Fieldset/index.d.ts +1 -1
- package/libs-ui/react-core/src/FieldsetLegend/index.d.ts +1 -1
- package/libs-ui/react-core/src/FileUpload/index.d.ts +1 -1
- package/libs-ui/react-core/src/Grid/index.d.ts +20 -0
- package/libs-ui/react-core/src/Heading/index.d.ts +1 -1
- package/libs-ui/react-core/src/HeadingCaption/index.d.ts +1 -1
- package/libs-ui/react-core/src/Hidden/index.d.ts +1 -1
- package/libs-ui/react-core/src/Hint/index.d.ts +1 -1
- package/libs-ui/react-core/src/Label/index.d.ts +1 -1
- package/libs-ui/react-core/src/LabelTitle/index.d.ts +1 -1
- package/libs-ui/react-core/src/Link/index.d.ts +1 -1
- package/libs-ui/react-core/src/List/index.d.ts +1 -1
- package/libs-ui/react-core/src/ListItem/index.d.ts +1 -1
- package/libs-ui/react-core/src/NormalText/index.d.ts +1 -1
- package/libs-ui/react-core/src/NotificationBanner/index.d.ts +1 -1
- package/libs-ui/react-core/src/NotificationBannerContent/index.d.ts +1 -1
- package/libs-ui/react-core/src/NotificationBannerHeader/index.d.ts +1 -1
- package/libs-ui/react-core/src/NotificationBannerHeading/index.d.ts +1 -1
- package/libs-ui/react-core/src/NotificationBannerLink/index.d.ts +1 -1
- package/libs-ui/react-core/src/Paragraph/index.d.ts +1 -1
- package/libs-ui/react-core/src/PhaseBanner/index.d.ts +1 -1
- package/libs-ui/react-core/src/PhaseBannerHeaderContainer/index.d.ts +8 -0
- package/libs-ui/react-core/src/PhaseBannerTag/index.d.ts +1 -1
- package/libs-ui/react-core/src/PhaseBannerText/index.d.ts +1 -1
- package/libs-ui/react-core/src/Radio/index.d.ts +5 -1
- package/libs-ui/react-core/src/RadioItem/index.d.ts +1 -1
- package/libs-ui/react-core/src/SectionBreak/index.d.ts +1 -1
- package/libs-ui/react-core/src/Select/index.d.ts +1 -1
- package/libs-ui/react-core/src/SelectOption/index.d.ts +1 -1
- package/libs-ui/react-core/src/SummaryList/index.d.ts +7 -1
- package/libs-ui/react-core/src/SummaryListItem/index.d.ts +1 -1
- package/libs-ui/react-core/src/SummaryListItemAction/index.d.ts +1 -1
- package/libs-ui/react-core/src/SummaryListItemKey/index.d.ts +1 -1
- package/libs-ui/react-core/src/SummaryListItemValue/index.d.ts +1 -1
- package/libs-ui/react-core/src/SvgIcon/index.d.ts +1 -1
- package/libs-ui/react-core/src/Table/index.d.ts +1 -1
- package/libs-ui/react-core/src/TableBody/index.d.ts +1 -1
- package/libs-ui/react-core/src/TableCaption/index.d.ts +1 -1
- package/libs-ui/react-core/src/TableContainer/index.d.ts +1 -1
- package/libs-ui/react-core/src/TableDataCell/index.d.ts +1 -1
- package/libs-ui/react-core/src/TableHead/index.d.ts +1 -1
- package/libs-ui/react-core/src/TableHeadCell/index.d.ts +1 -1
- package/libs-ui/react-core/src/TableNoDataRow/index.d.ts +1 -1
- package/libs-ui/react-core/src/TableRow/index.d.ts +1 -1
- package/libs-ui/react-core/src/Tabs/index.d.ts +1 -1
- package/libs-ui/react-core/src/TabsHeading/index.d.ts +1 -1
- package/libs-ui/react-core/src/TabsList/index.d.ts +1 -1
- package/libs-ui/react-core/src/TabsListItem/index.d.ts +1 -1
- package/libs-ui/react-core/src/TabsPanel/index.d.ts +1 -1
- package/libs-ui/react-core/src/TextArea/index.d.ts +1 -1
- package/libs-ui/react-core/src/TextInput/index.d.ts +1 -1
- package/libs-ui/react-core/src/VisuallyHidden/index.d.ts +1 -1
- package/libs-ui/react-core/src/WarningText/index.d.ts +1 -1
- package/package.json +2 -4
- package/types.js +5 -0
- package/Field/ConditionalField.js +0 -92
- package/es/Field/ConditionalField.js +0 -77
- package/esm/Field/ConditionalField.js +0 -77
- package/libs/form/src/Field/ConditionalField.d.ts +0 -17
package/CHANGELOG.md
CHANGED
|
@@ -1,6 +1,27 @@
|
|
|
1
1
|
# Change Log - @digigov/form
|
|
2
2
|
|
|
3
|
-
This log was last generated on
|
|
3
|
+
This log was last generated on Thu, 07 Jul 2022 13:01:18 GMT and should not be manually modified.
|
|
4
|
+
|
|
5
|
+
## 0.6.10
|
|
6
|
+
Thu, 07 Jul 2022 13:01:18 GMT
|
|
7
|
+
|
|
8
|
+
### Patches
|
|
9
|
+
|
|
10
|
+
- refactor code to resolve circular dependencies
|
|
11
|
+
|
|
12
|
+
## 0.6.9
|
|
13
|
+
Thu, 23 Jun 2022 11:49:45 GMT
|
|
14
|
+
|
|
15
|
+
### Patches
|
|
16
|
+
|
|
17
|
+
- change material ui Grid with digigov ui Grid
|
|
18
|
+
|
|
19
|
+
## 0.6.8
|
|
20
|
+
Tue, 14 Jun 2022 14:49:36 GMT
|
|
21
|
+
|
|
22
|
+
### Patches
|
|
23
|
+
|
|
24
|
+
- 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",
|
|
4
25
|
|
|
5
26
|
## 0.6.7
|
|
6
27
|
Wed, 08 Jun 2022 12:26:07 GMT
|
package/Field/index.js
CHANGED
|
@@ -7,19 +7,17 @@ var _typeof = require("@babel/runtime/helpers/typeof");
|
|
|
7
7
|
Object.defineProperty(exports, "__esModule", {
|
|
8
8
|
value: true
|
|
9
9
|
});
|
|
10
|
-
exports["default"] = exports.FieldBase = exports.Field = void 0;
|
|
11
|
-
|
|
12
|
-
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
10
|
+
exports["default"] = exports.FieldBase = exports.Field = exports.ConditionalField = void 0;
|
|
13
11
|
|
|
14
12
|
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
|
|
15
13
|
|
|
16
|
-
var
|
|
14
|
+
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
17
15
|
|
|
18
|
-
var
|
|
16
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
19
17
|
|
|
20
18
|
var _reactHookForm = require("react-hook-form");
|
|
21
19
|
|
|
22
|
-
var
|
|
20
|
+
var _FormContext = require("@digigov/form/FormContext");
|
|
23
21
|
|
|
24
22
|
var _Field = _interopRequireDefault(require("@digigov/react-core/Field"));
|
|
25
23
|
|
|
@@ -49,13 +47,88 @@ var _Label2 = _interopRequireDefault(require("@digigov/form/inputs/Label"));
|
|
|
49
47
|
|
|
50
48
|
var _i18n = require("@digigov/ui/app/i18n");
|
|
51
49
|
|
|
52
|
-
var _excluded = ["name", "component", "wrapper", "control", "type", "controlled", "enabled", "editable", "defaultValue", "label", "extra", "layout", "error", "register"],
|
|
50
|
+
var _excluded = ["required", "name", "component", "wrapper", "control", "type", "controlled", "enabled", "editable", "defaultValue", "label", "extra", "layout", "error", "register"],
|
|
53
51
|
_excluded2 = ["name", "children"];
|
|
54
52
|
|
|
55
53
|
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); }
|
|
56
54
|
|
|
57
55
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
58
56
|
|
|
57
|
+
function evaluateFieldWithConditions(field, variables) {
|
|
58
|
+
var newField = (0, _extends2["default"])({}, field);
|
|
59
|
+
|
|
60
|
+
if (variables) {
|
|
61
|
+
for (var key in variables) {
|
|
62
|
+
if (field.condition[key] && field.condition[key].is === variables[key]) {
|
|
63
|
+
var then = field.condition[key].then || {};
|
|
64
|
+
|
|
65
|
+
for (var attr in then) {
|
|
66
|
+
newField[attr] = then[attr];
|
|
67
|
+
}
|
|
68
|
+
} else if (field.condition[key]) {
|
|
69
|
+
var otherwise = field.condition[key]["else"] || {};
|
|
70
|
+
|
|
71
|
+
for (var _attr in otherwise) {
|
|
72
|
+
newField[_attr] = otherwise[_attr];
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
return newField;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
var ChildFieldMemo = /*#__PURE__*/_react["default"].memo(function ChildField(_ref) {
|
|
82
|
+
var dependencies = _ref.dependencies,
|
|
83
|
+
field = _ref.field,
|
|
84
|
+
control = _ref.control,
|
|
85
|
+
register = _ref.register,
|
|
86
|
+
error = _ref.error;
|
|
87
|
+
var newField = evaluateFieldWithConditions(field, dependencies);
|
|
88
|
+
return /*#__PURE__*/_react["default"].createElement(FieldBase, (0, _extends2["default"])({}, newField, {
|
|
89
|
+
name: newField.key,
|
|
90
|
+
control: control,
|
|
91
|
+
register: register,
|
|
92
|
+
error: error
|
|
93
|
+
}));
|
|
94
|
+
}, function (prev, next) {
|
|
95
|
+
if (!prev || !prev.dependencies) {
|
|
96
|
+
return false;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
if (prev.error !== next.error) {
|
|
100
|
+
return false;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
for (var dep in next.dependencies) {
|
|
104
|
+
if (next.dependencies[dep] !== prev.dependencies[dep]) {
|
|
105
|
+
return false;
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
return true;
|
|
110
|
+
});
|
|
111
|
+
|
|
112
|
+
var ConditionalField = function ConditionalField(_ref2) {
|
|
113
|
+
var control = _ref2.control,
|
|
114
|
+
field = _ref2.field,
|
|
115
|
+
register = _ref2.register,
|
|
116
|
+
error = _ref2.error;
|
|
117
|
+
var dependencyKeys = Object.keys(field.condition);
|
|
118
|
+
var variables = (0, _reactHookForm.useWatch)({
|
|
119
|
+
name: dependencyKeys,
|
|
120
|
+
control: control
|
|
121
|
+
});
|
|
122
|
+
return /*#__PURE__*/_react["default"].createElement(ChildFieldMemo, {
|
|
123
|
+
dependencies: variables,
|
|
124
|
+
field: field,
|
|
125
|
+
control: control,
|
|
126
|
+
register: register,
|
|
127
|
+
error: error
|
|
128
|
+
});
|
|
129
|
+
};
|
|
130
|
+
|
|
131
|
+
exports.ConditionalField = ConditionalField;
|
|
59
132
|
var FIELD_COMPONENTS = {
|
|
60
133
|
text: {
|
|
61
134
|
component: _Input["default"]
|
|
@@ -90,11 +163,12 @@ var ALTERNATIVE_COMPONENTS = {
|
|
|
90
163
|
}
|
|
91
164
|
};
|
|
92
165
|
|
|
93
|
-
var FieldContainer = function FieldContainer(
|
|
94
|
-
var
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
166
|
+
var FieldContainer = function FieldContainer(_ref3) {
|
|
167
|
+
var name = _ref3.name,
|
|
168
|
+
wrapper = _ref3.wrapper,
|
|
169
|
+
label = _ref3.label,
|
|
170
|
+
children = _ref3.children,
|
|
171
|
+
error = _ref3.error;
|
|
98
172
|
|
|
99
173
|
var _useTranslation = (0, _i18n.useTranslation)(),
|
|
100
174
|
t = _useTranslation.t;
|
|
@@ -104,18 +178,23 @@ var FieldContainer = function FieldContainer(_ref) {
|
|
|
104
178
|
error: !!error
|
|
105
179
|
}, /*#__PURE__*/_react["default"].createElement(_Fieldset["default"], null, /*#__PURE__*/_react["default"].createElement(_FieldsetLegend["default"], {
|
|
106
180
|
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"],
|
|
181
|
+
}, label && label.primary, label && label.secondary && /*#__PURE__*/_react["default"].createElement(_Hint["default"], null, t(label.secondary)), error && /*#__PURE__*/_react["default"].createElement(_ErrorMessage["default"], {
|
|
182
|
+
id: "".concat(name, "-error")
|
|
183
|
+
}, t((error === null || error === void 0 ? void 0 : error.message) || ''))), children));
|
|
108
184
|
} else {
|
|
109
185
|
return /*#__PURE__*/_react["default"].createElement(_Field["default"], {
|
|
110
186
|
error: !!error
|
|
111
187
|
}, /*#__PURE__*/_react["default"].createElement(_Label["default"], null, label && /*#__PURE__*/_react["default"].createElement(_Label2["default"], {
|
|
112
188
|
label: label
|
|
113
|
-
}), error && /*#__PURE__*/_react["default"].createElement(_ErrorMessage["default"],
|
|
189
|
+
}), error && /*#__PURE__*/_react["default"].createElement(_ErrorMessage["default"], {
|
|
190
|
+
id: "".concat(name, "-error")
|
|
191
|
+
}, t((error === null || error === void 0 ? void 0 : error.message) || '')), children));
|
|
114
192
|
}
|
|
115
193
|
};
|
|
116
194
|
|
|
117
195
|
var FieldBase = function FieldBase(props) {
|
|
118
|
-
var
|
|
196
|
+
var required = props.required,
|
|
197
|
+
name = props.name,
|
|
119
198
|
Component = props.component,
|
|
120
199
|
wrapper = props.wrapper,
|
|
121
200
|
control = props.control,
|
|
@@ -143,14 +222,15 @@ var FieldBase = function FieldBase(props) {
|
|
|
143
222
|
label: label,
|
|
144
223
|
layout: layout,
|
|
145
224
|
error: error,
|
|
146
|
-
wrapper: wrapper
|
|
225
|
+
wrapper: wrapper,
|
|
226
|
+
name: name
|
|
147
227
|
}, /*#__PURE__*/_react["default"].createElement(_reactHookForm.Controller, {
|
|
148
228
|
control: control,
|
|
149
229
|
name: name,
|
|
150
|
-
render: function render(
|
|
151
|
-
var onChange =
|
|
152
|
-
onBlur =
|
|
153
|
-
value =
|
|
230
|
+
render: function render(_ref4) {
|
|
231
|
+
var onChange = _ref4.onChange,
|
|
232
|
+
onBlur = _ref4.onBlur,
|
|
233
|
+
value = _ref4.value;
|
|
154
234
|
return /*#__PURE__*/_react["default"].createElement(Component, (0, _extends2["default"])({
|
|
155
235
|
name: name,
|
|
156
236
|
onChange: onChange,
|
|
@@ -160,6 +240,9 @@ var FieldBase = function FieldBase(props) {
|
|
|
160
240
|
extra: extra,
|
|
161
241
|
error: !!error,
|
|
162
242
|
type: type,
|
|
243
|
+
"aria-required": !!required,
|
|
244
|
+
"aria-describedby": error && "".concat(name, "-error"),
|
|
245
|
+
required: required,
|
|
163
246
|
disabled: editable === false
|
|
164
247
|
}, componentProps));
|
|
165
248
|
}
|
|
@@ -170,7 +253,8 @@ var FieldBase = function FieldBase(props) {
|
|
|
170
253
|
label: label,
|
|
171
254
|
layout: layout,
|
|
172
255
|
error: error,
|
|
173
|
-
wrapper: wrapper
|
|
256
|
+
wrapper: wrapper,
|
|
257
|
+
name: name
|
|
174
258
|
}, Component !== null && Component !== void 0 && Component.render ? /*#__PURE__*/_react["default"].createElement(Component, (0, _extends2["default"])({
|
|
175
259
|
name: name,
|
|
176
260
|
ref: register,
|
|
@@ -178,6 +262,9 @@ var FieldBase = function FieldBase(props) {
|
|
|
178
262
|
error: !!error,
|
|
179
263
|
extra: extra,
|
|
180
264
|
type: type,
|
|
265
|
+
"aria-required": !!required,
|
|
266
|
+
"aria-describedby": error && "".concat(name, "-error"),
|
|
267
|
+
required: required,
|
|
181
268
|
disabled: editable === false
|
|
182
269
|
}, componentProps)) : /*#__PURE__*/_react["default"].createElement(Component, (0, _extends2["default"])({
|
|
183
270
|
name: name,
|
|
@@ -186,6 +273,9 @@ var FieldBase = function FieldBase(props) {
|
|
|
186
273
|
error: !!error,
|
|
187
274
|
extra: extra,
|
|
188
275
|
type: type,
|
|
276
|
+
"aria-required": !!required,
|
|
277
|
+
"aria-describedby": error && "".concat(name, "-error"),
|
|
278
|
+
required: required,
|
|
189
279
|
disabled: editable === false
|
|
190
280
|
}, componentProps)));
|
|
191
281
|
};
|
|
@@ -193,7 +283,7 @@ var FieldBase = function FieldBase(props) {
|
|
|
193
283
|
exports.FieldBase = FieldBase;
|
|
194
284
|
|
|
195
285
|
var useField = function useField(name, customField) {
|
|
196
|
-
var _useContext = (0, _react.useContext)(
|
|
286
|
+
var _useContext = (0, _react.useContext)(_FormContext.FormContext),
|
|
197
287
|
fieldsMap = _useContext.fieldsMap,
|
|
198
288
|
control = _useContext.control,
|
|
199
289
|
register = _useContext.register,
|
|
@@ -219,41 +309,41 @@ function calculateField(children, field, componentRegistry) {
|
|
|
219
309
|
var _field$extra;
|
|
220
310
|
|
|
221
311
|
var calculatedField = (0, _extends2["default"])({}, field);
|
|
222
|
-
var
|
|
312
|
+
var fieldComponentRegistry = (0, _extends2["default"])({}, FIELD_COMPONENTS, componentRegistry);
|
|
223
313
|
|
|
224
314
|
if (children) {
|
|
225
315
|
calculatedField.component = children;
|
|
226
316
|
} else if (typeof field.component === 'function') {// leave as is
|
|
227
317
|
} else if (!field.component && !field.type) {
|
|
228
|
-
var
|
|
318
|
+
var _fieldComponentRegist;
|
|
229
319
|
|
|
230
|
-
calculatedField.component =
|
|
231
|
-
calculatedField.controlled = ((
|
|
320
|
+
calculatedField.component = fieldComponentRegistry.string.component;
|
|
321
|
+
calculatedField.controlled = ((_fieldComponentRegist = fieldComponentRegistry.string) === null || _fieldComponentRegist === void 0 ? void 0 : _fieldComponentRegist.controlled) || false;
|
|
232
322
|
} else if (typeof (field === null || field === void 0 ? void 0 : (_field$extra = field.extra) === null || _field$extra === void 0 ? void 0 : _field$extra.component) === 'string' && ALTERNATIVE_COMPONENTS[field.extra.component]) {
|
|
233
323
|
var _ALTERNATIVE_COMPONEN;
|
|
234
324
|
|
|
235
325
|
calculatedField.controlled = ((_ALTERNATIVE_COMPONEN = ALTERNATIVE_COMPONENTS[field.extra.component]) === null || _ALTERNATIVE_COMPONEN === void 0 ? void 0 : _ALTERNATIVE_COMPONEN.controlled) || false;
|
|
236
326
|
calculatedField.component = ALTERNATIVE_COMPONENTS[field.extra.component].component;
|
|
237
|
-
} else if (!field.component && field.type &&
|
|
238
|
-
var
|
|
327
|
+
} else if (!field.component && field.type && fieldComponentRegistry[field.type]) {
|
|
328
|
+
var _fieldComponentRegist2;
|
|
239
329
|
|
|
240
|
-
calculatedField.component =
|
|
241
|
-
calculatedField.wrapper =
|
|
242
|
-
calculatedField.controlled = ((
|
|
330
|
+
calculatedField.component = fieldComponentRegistry[field.type].component;
|
|
331
|
+
calculatedField.wrapper = fieldComponentRegistry[field.type].wrapper;
|
|
332
|
+
calculatedField.controlled = ((_fieldComponentRegist2 = fieldComponentRegistry[field.type]) === null || _fieldComponentRegist2 === void 0 ? void 0 : _fieldComponentRegist2.controlled) || false;
|
|
243
333
|
} else {
|
|
244
|
-
var
|
|
334
|
+
var _fieldComponentRegist3;
|
|
245
335
|
|
|
246
|
-
calculatedField.component =
|
|
247
|
-
calculatedField.controlled = ((
|
|
336
|
+
calculatedField.component = fieldComponentRegistry.string.component;
|
|
337
|
+
calculatedField.controlled = ((_fieldComponentRegist3 = fieldComponentRegistry.string) === null || _fieldComponentRegist3 === void 0 ? void 0 : _fieldComponentRegist3.controlled) || false;
|
|
248
338
|
}
|
|
249
339
|
|
|
250
340
|
return calculatedField;
|
|
251
341
|
}
|
|
252
342
|
|
|
253
|
-
var Field = function Field(
|
|
254
|
-
var name =
|
|
255
|
-
children =
|
|
256
|
-
customField = (0, _objectWithoutProperties2["default"])(
|
|
343
|
+
var Field = function Field(_ref5) {
|
|
344
|
+
var name = _ref5.name,
|
|
345
|
+
children = _ref5.children,
|
|
346
|
+
customField = (0, _objectWithoutProperties2["default"])(_ref5, _excluded2);
|
|
257
347
|
|
|
258
348
|
var _useField = useField(name, customField !== null && customField !== void 0 && customField.type ? customField : null),
|
|
259
349
|
field = _useField.field,
|
|
@@ -267,7 +357,7 @@ var Field = function Field(_ref3) {
|
|
|
267
357
|
}, [field]);
|
|
268
358
|
|
|
269
359
|
if (calculatedField.condition) {
|
|
270
|
-
return /*#__PURE__*/_react["default"].createElement(
|
|
360
|
+
return /*#__PURE__*/_react["default"].createElement(ConditionalField, {
|
|
271
361
|
control: control,
|
|
272
362
|
register: register,
|
|
273
363
|
field: calculatedField,
|
package/Field/types.js
ADDED
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
6
|
+
|
|
7
|
+
Object.defineProperty(exports, "__esModule", {
|
|
8
|
+
value: true
|
|
9
|
+
});
|
|
10
|
+
exports.FieldsetWithContext = void 0;
|
|
11
|
+
|
|
12
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
13
|
+
|
|
14
|
+
var _FormContext = require("@digigov/form/FormContext");
|
|
15
|
+
|
|
16
|
+
var _Field = _interopRequireDefault(require("@digigov/form/Field"));
|
|
17
|
+
|
|
18
|
+
var _i18n = require("@digigov/ui/app/i18n");
|
|
19
|
+
|
|
20
|
+
var _Fieldset = require("@digigov/form/Fieldset/");
|
|
21
|
+
|
|
22
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
23
|
+
|
|
24
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
25
|
+
|
|
26
|
+
var FieldsetWithContext = function FieldsetWithContext(_ref) {
|
|
27
|
+
var name = _ref.name;
|
|
28
|
+
|
|
29
|
+
var _useFieldset = useFieldset(name),
|
|
30
|
+
label = _useFieldset.label,
|
|
31
|
+
body = _useFieldset.body,
|
|
32
|
+
fields = _useFieldset.fields;
|
|
33
|
+
|
|
34
|
+
var _useTranslation = (0, _i18n.useTranslation)(),
|
|
35
|
+
t = _useTranslation.t;
|
|
36
|
+
|
|
37
|
+
var _ref2 = /*#__PURE__*/_react["default"].createElement(_Fieldset.FieldsetBody, null, body);
|
|
38
|
+
|
|
39
|
+
return (0, _react.useMemo)(function () {
|
|
40
|
+
return /*#__PURE__*/_react["default"].createElement(_Fieldset.Fieldset, null, (label === null || label === void 0 ? void 0 : label.primary) && /*#__PURE__*/_react["default"].createElement(_Fieldset.FieldsetLabel, null, t(label.primary)), (label === null || label === void 0 ? void 0 : label.secondary) && /*#__PURE__*/_react["default"].createElement(_Fieldset.FieldsetCaption, null, t(label.secondary)), body && _ref2, fields.map(function (field) {
|
|
41
|
+
return /*#__PURE__*/_react["default"].createElement(_Field["default"], {
|
|
42
|
+
key: field,
|
|
43
|
+
name: field
|
|
44
|
+
});
|
|
45
|
+
}));
|
|
46
|
+
}, [label === null || label === void 0 ? void 0 : label.primary, label === null || label === void 0 ? void 0 : label.secondary, body, fields]);
|
|
47
|
+
};
|
|
48
|
+
|
|
49
|
+
exports.FieldsetWithContext = FieldsetWithContext;
|
|
50
|
+
|
|
51
|
+
var useFieldset = function useFieldset(name) {
|
|
52
|
+
var _useContext = (0, _react.useContext)(_FormContext.FormContext),
|
|
53
|
+
fieldsetsMap = _useContext.fieldsetsMap;
|
|
54
|
+
|
|
55
|
+
if (fieldsetsMap && fieldsetsMap[name]) {
|
|
56
|
+
return (0, _react.useMemo)(function () {
|
|
57
|
+
return fieldsetsMap[name];
|
|
58
|
+
}, [name]);
|
|
59
|
+
} else {
|
|
60
|
+
if (!fieldsetsMap) throw new Error("Fieldsets is not defined");
|
|
61
|
+
throw new Error("No fieldset with name ".concat(name, " found"));
|
|
62
|
+
}
|
|
63
|
+
};
|
package/Fieldset/index.js
CHANGED
|
@@ -2,16 +2,14 @@
|
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
4
|
|
|
5
|
-
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
6
|
-
|
|
7
5
|
Object.defineProperty(exports, "__esModule", {
|
|
8
6
|
value: true
|
|
9
7
|
});
|
|
10
|
-
exports["default"] = exports.
|
|
8
|
+
exports["default"] = exports.FieldsetLabel = exports.FieldsetCaption = exports.FieldsetBody = exports.Fieldset = void 0;
|
|
11
9
|
|
|
12
|
-
var _react =
|
|
10
|
+
var _react = _interopRequireDefault(require("react"));
|
|
13
11
|
|
|
14
|
-
var _Grid = _interopRequireDefault(require("@
|
|
12
|
+
var _Grid = _interopRequireDefault(require("@digigov/ui/layouts/Grid"));
|
|
15
13
|
|
|
16
14
|
var _Fieldset = _interopRequireDefault(require("@digigov/react-core/Fieldset"));
|
|
17
15
|
|
|
@@ -19,18 +17,8 @@ var _FieldsetLegend = _interopRequireDefault(require("@digigov/react-core/Fields
|
|
|
19
17
|
|
|
20
18
|
var _Hint = _interopRequireDefault(require("@digigov/react-core/Hint"));
|
|
21
19
|
|
|
22
|
-
var _form = require("@digigov/form");
|
|
23
|
-
|
|
24
|
-
var _Field = _interopRequireDefault(require("@digigov/form/Field"));
|
|
25
|
-
|
|
26
20
|
var _NormalText = _interopRequireDefault(require("@digigov/ui/typography/NormalText"));
|
|
27
21
|
|
|
28
|
-
var _i18n = require("@digigov/ui/app/i18n");
|
|
29
|
-
|
|
30
|
-
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
31
|
-
|
|
32
|
-
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
33
|
-
|
|
34
22
|
var FieldsetLabel = function FieldsetLabel(_ref) {
|
|
35
23
|
var children = _ref.children;
|
|
36
24
|
return /*#__PURE__*/_react["default"].createElement(_FieldsetLegend["default"], {
|
|
@@ -58,55 +46,8 @@ var FieldsetBody = function FieldsetBody(_ref3) {
|
|
|
58
46
|
|
|
59
47
|
exports.FieldsetBody = FieldsetBody;
|
|
60
48
|
|
|
61
|
-
var
|
|
62
|
-
var
|
|
63
|
-
fieldsetsMap = _useContext.fieldsetsMap;
|
|
64
|
-
|
|
65
|
-
if (fieldsetsMap && fieldsetsMap[name]) {
|
|
66
|
-
return (0, _react.useMemo)(function () {
|
|
67
|
-
return fieldsetsMap[name];
|
|
68
|
-
}, [name]);
|
|
69
|
-
} else {
|
|
70
|
-
if (!fieldsetsMap) throw new Error("Fieldsets is not defined");
|
|
71
|
-
throw new Error("No fieldset with name ".concat(name, " found"));
|
|
72
|
-
}
|
|
73
|
-
};
|
|
74
|
-
|
|
75
|
-
var FieldsetWithContext = function FieldsetWithContext(_ref4) {
|
|
76
|
-
var name = _ref4.name;
|
|
77
|
-
|
|
78
|
-
var _useFieldset = useFieldset(name),
|
|
79
|
-
label = _useFieldset.label,
|
|
80
|
-
body = _useFieldset.body,
|
|
81
|
-
fields = _useFieldset.fields;
|
|
82
|
-
|
|
83
|
-
var _useTranslation = (0, _i18n.useTranslation)(),
|
|
84
|
-
t = _useTranslation.t;
|
|
85
|
-
|
|
86
|
-
var _ref5 = /*#__PURE__*/_react["default"].createElement(FieldsetBody, null, body);
|
|
87
|
-
|
|
88
|
-
return (0, _react.useMemo)(function () {
|
|
89
|
-
return /*#__PURE__*/_react["default"].createElement(Fieldset, null, (label === null || label === void 0 ? void 0 : label.primary) && /*#__PURE__*/_react["default"].createElement(FieldsetLabel, null, t(label.primary)), (label === null || label === void 0 ? void 0 : label.secondary) && /*#__PURE__*/_react["default"].createElement(FieldsetCaption, null, t(label.secondary)), body && _ref5, fields.map(function (field) {
|
|
90
|
-
return /*#__PURE__*/_react["default"].createElement(_Field["default"], {
|
|
91
|
-
key: field,
|
|
92
|
-
name: field
|
|
93
|
-
});
|
|
94
|
-
}));
|
|
95
|
-
}, [label === null || label === void 0 ? void 0 : label.primary, label === null || label === void 0 ? void 0 : label.secondary, body, fields]);
|
|
96
|
-
};
|
|
97
|
-
|
|
98
|
-
exports.FieldsetWithContext = FieldsetWithContext;
|
|
99
|
-
|
|
100
|
-
var Fieldset = function Fieldset(_ref6) {
|
|
101
|
-
var name = _ref6.name,
|
|
102
|
-
children = _ref6.children;
|
|
103
|
-
|
|
104
|
-
if (name && !children) {
|
|
105
|
-
return /*#__PURE__*/_react["default"].createElement(FieldsetWithContext, {
|
|
106
|
-
name: name
|
|
107
|
-
});
|
|
108
|
-
}
|
|
109
|
-
|
|
49
|
+
var Fieldset = function Fieldset(_ref4) {
|
|
50
|
+
var children = _ref4.children;
|
|
110
51
|
return /*#__PURE__*/_react["default"].createElement(_Fieldset["default"], null, children);
|
|
111
52
|
};
|
|
112
53
|
|