@pinuts/bsr-uikit-relaunch 0.3.8 → 0.4.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/config-overrides.js +1 -0
- package/dist/hooks/useValidationMessage.d.ts.map +1 -1
- package/dist/hooks/useValidationMessage.js +8 -1
- package/dist/hooks/withFieldGroup.d.ts.map +1 -1
- package/dist/hooks/withFieldGroup.js +35 -1
- package/dist/index.d.ts +4 -0
- package/dist/index.js +1 -1
- package/dist/items/AbholdatumMaterialienField/AbholdatumMaterialienField.d.ts +25 -0
- package/dist/items/AbholdatumMaterialienField/AbholdatumMaterialienField.d.ts.map +1 -0
- package/dist/items/AbholdatumMaterialienField/AbholdatumMaterialienField.js +77 -0
- package/dist/items/AbholdatumMaterialienField/getAbholTermine.d.ts +7 -0
- package/dist/items/AbholdatumMaterialienField/getAbholTermine.d.ts.map +1 -0
- package/dist/items/AbholdatumMaterialienField/getAbholTermine.js +117 -0
- package/dist/items/AbholortMaterialienField/AbholortMaterialienField.d.ts +26 -0
- package/dist/items/AbholortMaterialienField/AbholortMaterialienField.d.ts.map +1 -0
- package/dist/items/AbholortMaterialienField/AbholortMaterialienField.js +73 -0
- package/dist/items/BSRAddressSelector/BSRAddressButtons.d.ts.map +1 -1
- package/dist/items/BSRAddressSelector/BSRAddressButtons.js +10 -0
- package/dist/items/BSRAddressSelector/BSRAddressSelector.d.ts +1 -0
- package/dist/items/BSRAddressSelector/BSRAddressSelector.d.ts.map +1 -1
- package/dist/items/BSRAddressSelector/BSRAddressSelector.js +21 -2
- package/dist/items/BSRAddressSelector/BSRAutocompleteField.d.ts.map +1 -1
- package/dist/items/BSRAddressSelector/BSRAutocompleteField.js +14 -3
- package/dist/items/BSRAddressSelector/BSRStreetPlzSelector.d.ts.map +1 -1
- package/dist/items/BSRAddressSelector/BSRStreetPlzSelector.js +6 -0
- package/dist/items/BSRAddressSelector/HouseNumberSelectField.d.ts.map +1 -1
- package/dist/items/BSRAddressSelector/HouseNumberSelectField.js +5 -0
- package/dist/items/BootstrapInputGroupField/BootstrapInputGroupField.d.ts.map +1 -1
- package/dist/items/BootstrapInputGroupField/BootstrapInputGroupField.js +2 -1
- package/dist/items/DateInputField/DateInputField.d.ts.map +1 -1
- package/dist/items/DateInputField/DateInputField.js +2 -1
- package/dist/items/FileUploadField/FileUploadField.d.ts +4 -0
- package/dist/items/FileUploadField/FileUploadField.d.ts.map +1 -0
- package/dist/items/FileUploadField/FileUploadField.js +271 -0
- package/dist/items/FileUploadField/uploadedFileStore.d.ts +4 -0
- package/dist/items/FileUploadField/uploadedFileStore.d.ts.map +1 -0
- package/dist/items/FileUploadField/uploadedFileStore.js +31 -0
- package/dist/items/FormFieldWrapper/FormFieldChildPropTypes.d.ts +1 -0
- package/dist/items/FormFieldWrapper/FormFieldChildPropTypes.d.ts.map +1 -1
- package/dist/items/FormFieldWrapper/FormFieldChildPropTypes.js +1 -0
- package/dist/items/GroupInputField/GroupInputField.d.ts.map +1 -1
- package/dist/items/GroupInputField/GroupInputField.js +41 -4
- package/dist/items/Modal/Modal.d.ts.map +1 -1
- package/dist/items/Modal/Modal.js +6 -1
- package/dist/items/MultiSelectField/MultiSelectField.d.ts.map +1 -1
- package/dist/items/MultiSelectField/MultiSelectField.js +15 -2
- package/dist/items/NumberInputField/NumberInputField.d.ts.map +1 -1
- package/dist/items/NumberInputField/NumberInputField.js +2 -1
- package/dist/items/ReviewValue/ReviewValueList.d.ts +17 -0
- package/dist/items/ReviewValue/ReviewValueList.d.ts.map +1 -0
- package/dist/items/ReviewValue/ReviewValueList.js +36 -0
- package/dist/items/SectionSpinner/SectionSpinner.d.ts +1 -0
- package/dist/items/SectionSpinner/SectionSpinner.d.ts.map +1 -1
- package/dist/items/SelectField/SelectField.d.ts.map +1 -1
- package/dist/items/SelectField/SelectField.js +3 -2
- package/dist/items/StaticAlert/StaticAlert.d.ts +1 -0
- package/dist/items/StaticAlert/StaticAlert.d.ts.map +1 -1
- package/dist/items/TextAreaField/TextAreaField.d.ts.map +1 -1
- package/dist/items/TextAreaField/TextAreaField.js +8 -0
- package/dist/items/TextBox/TextBox.d.ts +1 -0
- package/dist/items/TextBox/TextBox.d.ts.map +1 -1
- package/dist/items/TextBox/TextBox.js +11 -2
- package/dist/items/TextInputField/TextInputField.d.ts.map +1 -1
- package/dist/items/TextInputField/TextInputField.js +8 -1
- package/dist/items/Toast/Toast.d.ts +1 -0
- package/dist/items/Toast/Toast.d.ts.map +1 -1
- package/dist/items/ToggleSwitchField/ToggleSwitchField.d.ts.map +1 -1
- package/dist/items/ToggleSwitchField/ToggleSwitchField.js +2 -1
- package/dist/items/index.d.ts +4 -1
- package/dist/items/index.d.ts.map +1 -1
- package/dist/items/index.js +22 -1
- package/dist/items/validations.d.ts.map +1 -0
- package/dist/items/validations.js +27 -0
- package/dist/locales.d.ts +73 -2
- package/dist/locales.js +64 -0
- package/dist/shared/ErrorMessagesInfoBox/ErrorMessagesInfoBox.d.ts +16 -0
- package/dist/shared/ErrorMessagesInfoBox/ErrorMessagesInfoBox.d.ts.map +1 -0
- package/dist/shared/ErrorMessagesInfoBox/ErrorMessagesInfoBox.js +144 -0
- package/dist/shared/FormWidget/FormWidget.d.ts +30 -0
- package/dist/shared/FormWidget/FormWidget.d.ts.map +1 -0
- package/dist/shared/FormWidget/FormWidget.js +165 -0
- package/dist/shared/FormWidget/FormWidgetControlPage.d.ts +29 -0
- package/dist/shared/FormWidget/FormWidgetControlPage.d.ts.map +1 -0
- package/dist/shared/FormWidget/FormWidgetControlPage.js +84 -0
- package/dist/shared/FormWidget/FormWidgetFormPage.d.ts +26 -0
- package/dist/shared/FormWidget/FormWidgetFormPage.d.ts.map +1 -0
- package/dist/shared/FormWidget/FormWidgetFormPage.js +55 -0
- package/dist/shared/FormWidget/FormWidgetMessagePage.d.ts +20 -0
- package/dist/shared/FormWidget/FormWidgetMessagePage.d.ts.map +1 -0
- package/dist/shared/FormWidget/FormWidgetMessagePage.js +37 -0
- package/dist/shared/FormWidget/captions.d.ts +33 -0
- package/dist/shared/FormWidget/captions.d.ts.map +1 -0
- package/dist/shared/FormWidget/captions.js +43 -0
- package/dist/shared/KehrenbuergerForm/KehrenbuergerForm.d.ts +23 -0
- package/dist/shared/KehrenbuergerForm/KehrenbuergerForm.d.ts.map +1 -0
- package/dist/shared/KehrenbuergerForm/KehrenbuergerForm.js +173 -0
- package/dist/styles/_errorMessagesInfoBox.scss +42 -0
- package/dist/styles/_form.scss +9 -0
- package/dist/styles/_review.scss +29 -0
- package/dist/styles/main.scss +62 -49
- package/dist/styles/variables/_buttons.scss +4 -3
- package/dist/styles/variables/_variables.scss +15 -2
- package/dist/utils/files/convertFilesToUploadFiles.d.ts +8 -0
- package/dist/utils/files/convertFilesToUploadFiles.d.ts.map +1 -0
- package/dist/utils/files/convertFilesToUploadFiles.js +33 -0
- package/dist/utils/files/formatFileSize.d.ts +3 -0
- package/dist/utils/files/formatFileSize.d.ts.map +1 -0
- package/dist/utils/files/formatFileSize.js +44 -0
- package/dist/utils/files/generateUniqueFilename.d.ts +3 -0
- package/dist/utils/files/generateUniqueFilename.d.ts.map +1 -0
- package/dist/utils/files/generateUniqueFilename.js +32 -0
- package/dist/utils/files/index.d.ts +7 -0
- package/dist/utils/files/index.d.ts.map +1 -0
- package/dist/utils/files/index.js +71 -0
- package/dist/utils/files/validateFiles.d.ts +9 -0
- package/dist/utils/files/validateFiles.d.ts.map +1 -0
- package/dist/utils/files/validateFiles.js +28 -0
- package/dist/utils/files/validateFilesBySize.d.ts +6 -0
- package/dist/utils/files/validateFilesBySize.d.ts.map +1 -0
- package/dist/utils/files/validateFilesBySize.js +31 -0
- package/dist/utils/files/validateFilesByType.d.ts +9 -0
- package/dist/utils/files/validateFilesByType.d.ts.map +1 -0
- package/dist/utils/files/validateFilesByType.js +79 -0
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/index.js +11 -0
- package/dist/utils/reviewValue.d.ts +3 -0
- package/dist/utils/reviewValue.d.ts.map +1 -0
- package/dist/utils/reviewValue.js +16 -0
- package/package.json +1 -1
- package/webpack.config.js +3 -0
- package/dist/items/eventWizardItems/validations.d.ts.map +0 -1
- package/dist/items/eventWizardItems/validations.js +0 -7
- /package/dist/items/{eventWizardItems/validations.d.ts → validations.d.ts} +0 -0
|
@@ -28,6 +28,7 @@ const TextAreaField = _ref => {
|
|
|
28
28
|
readOnly,
|
|
29
29
|
disabled,
|
|
30
30
|
viewMode,
|
|
31
|
+
reviewMode,
|
|
31
32
|
value
|
|
32
33
|
} = _ref;
|
|
33
34
|
const handleChange = e => {
|
|
@@ -37,6 +38,13 @@ const TextAreaField = _ref => {
|
|
|
37
38
|
if (viewMode) {
|
|
38
39
|
return value;
|
|
39
40
|
}
|
|
41
|
+
|
|
42
|
+
// Zeilenumbrüche der Eingabe bleiben in der Review erhalten
|
|
43
|
+
if (reviewMode) {
|
|
44
|
+
return /*#__PURE__*/_react.default.createElement("span", {
|
|
45
|
+
className: "pi-review-multiline"
|
|
46
|
+
}, value);
|
|
47
|
+
}
|
|
40
48
|
const formControlClassNames = (0, _getUikitClassNames.getFormControlClassNames)(isInvalid, readOnly, disabled, className, ['textarea', field.className].filter(Boolean));
|
|
41
49
|
const maxCharId = `${inputProps.id}-maxCharactersText`;
|
|
42
50
|
return /*#__PURE__*/_react.default.createElement("textarea", _extends({
|
|
@@ -10,6 +10,7 @@ declare namespace TextBox {
|
|
|
10
10
|
text: PropTypes.Requireable<string>;
|
|
11
11
|
label: PropTypes.Requireable<string>;
|
|
12
12
|
dataKey: PropTypes.Requireable<string>;
|
|
13
|
+
html: PropTypes.Requireable<boolean>;
|
|
13
14
|
}>>;
|
|
14
15
|
let onClick: PropTypes.Requireable<(...args: any[]) => any>;
|
|
15
16
|
let customText: PropTypes.Requireable<string>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TextBox.d.ts","sourceRoot":"","sources":["../../../src/items/TextBox/TextBox.jsx"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"TextBox.d.ts","sourceRoot":"","sources":["../../../src/items/TextBox/TextBox.jsx"],"names":[],"mappings":";AASA;;sBA0BC;;;;;;;;;;;;;;;kBAnCiB,OAAO;sBACH,YAAY"}
|
|
@@ -9,6 +9,7 @@ var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
|
9
9
|
var _reactI18next = require("react-i18next");
|
|
10
10
|
var _formBuilder = require("@pinuts/form-builder");
|
|
11
11
|
var _FormFieldWrapper = _interopRequireDefault(require("../FormFieldWrapper/FormFieldWrapper.jsx"));
|
|
12
|
+
var _HTMLParserSanitized = require("../HTMLParserSanitized/HTMLParserSanitized.jsx");
|
|
12
13
|
var _withFieldGroup = _interopRequireDefault(require("../../hooks/withFieldGroup.jsx"));
|
|
13
14
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
14
15
|
const TextBox = _ref => {
|
|
@@ -19,12 +20,19 @@ const TextBox = _ref => {
|
|
|
19
20
|
const {
|
|
20
21
|
inputProps = {},
|
|
21
22
|
text,
|
|
22
|
-
dataKey
|
|
23
|
+
dataKey,
|
|
24
|
+
html
|
|
23
25
|
} = config;
|
|
24
26
|
const usedText = config[dataKey] || text;
|
|
25
27
|
if (!usedText) {
|
|
26
28
|
return null;
|
|
27
29
|
}
|
|
30
|
+
|
|
31
|
+
// Standard: Klartext (React escaped ihn). Nur mit html=true wird Markup
|
|
32
|
+
// interpretiert - dann als div, damit auch Block-Elemente gültig verschachtelt sind.
|
|
33
|
+
if (html) {
|
|
34
|
+
return /*#__PURE__*/_react.default.createElement("div", inputProps, /*#__PURE__*/_react.default.createElement(_HTMLParserSanitized.HTMLParserSanitized, null, t(usedText)));
|
|
35
|
+
}
|
|
28
36
|
return /*#__PURE__*/_react.default.createElement("span", inputProps, t(usedText));
|
|
29
37
|
};
|
|
30
38
|
TextBox.propTypes = {
|
|
@@ -33,7 +41,8 @@ TextBox.propTypes = {
|
|
|
33
41
|
inputProps: _propTypes.default.object,
|
|
34
42
|
text: _propTypes.default.string,
|
|
35
43
|
label: _propTypes.default.string,
|
|
36
|
-
dataKey: _propTypes.default.string
|
|
44
|
+
dataKey: _propTypes.default.string,
|
|
45
|
+
html: _propTypes.default.bool
|
|
37
46
|
}),
|
|
38
47
|
onClick: _propTypes.default.func,
|
|
39
48
|
customText: _propTypes.default.string
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TextInputField.d.ts","sourceRoot":"","sources":["../../../src/items/TextInputField/TextInputField.jsx"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"TextInputField.d.ts","sourceRoot":"","sources":["../../../src/items/TextInputField/TextInputField.jsx"],"names":[],"mappings":";AAmEA,2EAAiE;kBAlE/C,OAAO"}
|
|
@@ -5,6 +5,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
7
|
var _react = _interopRequireDefault(require("react"));
|
|
8
|
+
var _dayjs = _interopRequireDefault(require("dayjs"));
|
|
8
9
|
var _formBuilder = require("@pinuts/form-builder");
|
|
9
10
|
var _getUikitClassNames = require("../../utils/getUikitClassNames.js");
|
|
10
11
|
var _FormFieldChildPropTypes = _interopRequireDefault(require("../FormFieldWrapper/FormFieldChildPropTypes.jsx"));
|
|
@@ -13,6 +14,7 @@ var _withFieldGroup = _interopRequireDefault(require("../../hooks/withFieldGroup
|
|
|
13
14
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
14
15
|
function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); } // import PropTypes from 'prop-types';
|
|
15
16
|
// form-builder
|
|
17
|
+
const REVIEW_DATE_FORMAT = 'DD.MM.YYYY';
|
|
16
18
|
const TextInputField = _ref => {
|
|
17
19
|
let {
|
|
18
20
|
className,
|
|
@@ -24,13 +26,18 @@ const TextInputField = _ref => {
|
|
|
24
26
|
isInvalid,
|
|
25
27
|
readOnly,
|
|
26
28
|
disabled,
|
|
27
|
-
viewMode
|
|
29
|
+
viewMode,
|
|
30
|
+
reviewMode
|
|
28
31
|
// formGroupClassName = 'text-input',
|
|
29
32
|
} = _ref;
|
|
30
33
|
const handleChange = e => onChange(e.target.value);
|
|
31
34
|
if (viewMode) {
|
|
32
35
|
return value;
|
|
33
36
|
}
|
|
37
|
+
if (reviewMode) {
|
|
38
|
+
// Ein Datumsfeld liefert ISO (2026-09-15), in der Review deutsch anzeigen
|
|
39
|
+
return inputProps.type === 'date' && value ? (0, _dayjs.default)(value).format(REVIEW_DATE_FORMAT) : value;
|
|
40
|
+
}
|
|
34
41
|
const formControlClassNames = (0, _getUikitClassNames.getFormControlClassNames)(isInvalid, readOnly, disabled, className, ['input', field.className].filter(Boolean));
|
|
35
42
|
return /*#__PURE__*/_react.default.createElement("input", _extends({
|
|
36
43
|
type: "text"
|
|
@@ -53,6 +53,7 @@ declare namespace Toast {
|
|
|
53
53
|
readOnly: PropTypes.Requireable<boolean>;
|
|
54
54
|
disabled: PropTypes.Requireable<boolean>;
|
|
55
55
|
viewMode: PropTypes.Requireable<boolean>;
|
|
56
|
+
reviewMode: PropTypes.Requireable<boolean>;
|
|
56
57
|
stepId: PropTypes.Requireable<string>;
|
|
57
58
|
hideEmptyValues: PropTypes.Requireable<boolean>;
|
|
58
59
|
key: PropTypes.Requireable<string>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Toast.d.ts","sourceRoot":"","sources":["../../../src/items/Toast/Toast.jsx"],"names":[],"mappings":";AAMA;;;;;;;;;;sBAgDC
|
|
1
|
+
{"version":3,"file":"Toast.d.ts","sourceRoot":"","sources":["../../../src/items/Toast/Toast.jsx"],"names":[],"mappings":";AAMA;;;;;;;;;;sBAgDC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAtDiB,OAAO;sBACH,YAAY"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ToggleSwitchField.d.ts","sourceRoot":"","sources":["../../../src/items/ToggleSwitchField/ToggleSwitchField.jsx"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"ToggleSwitchField.d.ts","sourceRoot":"","sources":["../../../src/items/ToggleSwitchField/ToggleSwitchField.jsx"],"names":[],"mappings":";AAmGA,8EAAuE;kBAnGxC,OAAO"}
|
|
@@ -27,6 +27,7 @@ const ToggleSwitchField = _ref => {
|
|
|
27
27
|
readOnly,
|
|
28
28
|
disabled,
|
|
29
29
|
viewMode,
|
|
30
|
+
reviewMode,
|
|
30
31
|
className,
|
|
31
32
|
ariaAttributes,
|
|
32
33
|
value,
|
|
@@ -47,7 +48,7 @@ const ToggleSwitchField = _ref => {
|
|
|
47
48
|
}
|
|
48
49
|
return value ? activeText || t('bsrItems.ToggleSwitchField.yes') : inActiveText || t('bsrItems.ToggleSwitchField.no');
|
|
49
50
|
}, [value, text, activeText, inActiveText, t]);
|
|
50
|
-
if (viewMode) {
|
|
51
|
+
if (viewMode || reviewMode) {
|
|
51
52
|
return contentText;
|
|
52
53
|
}
|
|
53
54
|
return /*#__PURE__*/_react.default.createElement("div", {
|
package/dist/items/index.d.ts
CHANGED
|
@@ -1,9 +1,12 @@
|
|
|
1
|
+
import AbholdatumMaterialienField from './AbholdatumMaterialienField/AbholdatumMaterialienField.jsx';
|
|
2
|
+
import AbholortMaterialienField from './AbholortMaterialienField/AbholortMaterialienField.jsx';
|
|
1
3
|
import Button from './Button/Button.jsx';
|
|
2
4
|
import BSRAddressSelector from './BSRAddressSelector/BSRAddressSelector.jsx';
|
|
3
5
|
import SubmitButton from './Button/SubmitButton.jsx';
|
|
4
6
|
import DateInputField from './DateInputField/DateInputField.jsx';
|
|
5
7
|
import DropDownButton from './DropDownButton/DropDownButton.jsx';
|
|
6
8
|
import FieldLabel from './FieldLabel/FieldLabel.jsx';
|
|
9
|
+
import FileUploadField from './FileUploadField/FileUploadField.jsx';
|
|
7
10
|
import FormFieldChildPropTypes from './FormFieldWrapper/FormFieldChildPropTypes.jsx';
|
|
8
11
|
import FormFieldWrapper from './FormFieldWrapper/FormFieldWrapper.jsx';
|
|
9
12
|
import GroupInputField from './GroupInputField/GroupInputField.jsx';
|
|
@@ -32,5 +35,5 @@ import EventDatePicker from './eventWizardItems/EventDatePicker/EventDatePicker.
|
|
|
32
35
|
import FormTitle from './eventWizardItems/FormTitle/FormTitle.jsx';
|
|
33
36
|
import Intro from './eventWizardItems/Intro/Intro.jsx';
|
|
34
37
|
import Required from './eventWizardItems/Required/Required.jsx';
|
|
35
|
-
export { Button, BSRAddressSelector, SubmitButton, DateInputField, DropDownButton, FieldLabel, FormFieldChildPropTypes, FormFieldWrapper, GroupInputField, Icon, FormBuilderIcon, MultiSelectField, NumberInputField, SelectField, StaticAlert, Tag, TextBox, TextAreaField, TextInputField, Toast, Title, ToggleSwitchField, SectionSpinner, ArrayFieldset, FieldsetWrapper, BootstrapInputGroupField, BSRGridRow, BSRGridColumn, BSRGridRowCols, EventPicker, EventDatePicker, FormTitle, Intro, Required };
|
|
38
|
+
export { AbholdatumMaterialienField, AbholortMaterialienField, Button, BSRAddressSelector, SubmitButton, DateInputField, DropDownButton, FieldLabel, FileUploadField, FormFieldChildPropTypes, FormFieldWrapper, GroupInputField, Icon, FormBuilderIcon, MultiSelectField, NumberInputField, SelectField, StaticAlert, Tag, TextBox, TextAreaField, TextInputField, Toast, Title, ToggleSwitchField, SectionSpinner, ArrayFieldset, FieldsetWrapper, BootstrapInputGroupField, BSRGridRow, BSRGridColumn, BSRGridRowCols, EventPicker, EventDatePicker, FormTitle, Intro, Required };
|
|
36
39
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/items/index.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/items/index.js"],"names":[],"mappings":"uCAEuC,6DAA6D;qCAC/D,yDAAyD;mBAI3E,qBAAqB;+BAHT,6CAA6C;yBAInD,2BAA2B;2BACzB,qCAAqC;2BACrC,qCAAqC;uBACzC,6BAA6B;4BACxB,uCAAuC;oCAC/B,gDAAgD;6BACvD,yCAAyC;4BAC1C,uCAAuC;iBAClD,oBAAoB;4BACT,iBAAiB;6BAGhB,yCAAyC;6BACzC,yCAAyC;wBAC9C,+BAA+B;wBAC/B,+BAA+B;gBAjBvC,eAAe;oBAoBX,uBAAuB;0BACjB,mCAAmC;2BAClC,qCAAqC;kBAG9C,mBAAmB;kBADnB,mBAAmB;8BAEP,2CAA2C;2BAP9C,qCAAqC;0BAStC,mCAAmC;4BACjC,uCAAuC;qCAN9B,yDAAyD;uBAOvE,uBAAuB;0BACpB,0BAA0B;2BACzB,2BAA2B;wBAC9B,gDAAgD;4BAC5C,wDAAwD;sBAC9D,4CAA4C;kBAChD,oCAAoC;qBACjC,0CAA0C"}
|
package/dist/items/index.js
CHANGED
|
@@ -3,6 +3,18 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
+
Object.defineProperty(exports, "AbholdatumMaterialienField", {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: function () {
|
|
9
|
+
return _AbholdatumMaterialienField.default;
|
|
10
|
+
}
|
|
11
|
+
});
|
|
12
|
+
Object.defineProperty(exports, "AbholortMaterialienField", {
|
|
13
|
+
enumerable: true,
|
|
14
|
+
get: function () {
|
|
15
|
+
return _AbholortMaterialienField.default;
|
|
16
|
+
}
|
|
17
|
+
});
|
|
6
18
|
Object.defineProperty(exports, "ArrayFieldset", {
|
|
7
19
|
enumerable: true,
|
|
8
20
|
get: function () {
|
|
@@ -81,6 +93,12 @@ Object.defineProperty(exports, "FieldsetWrapper", {
|
|
|
81
93
|
return _FieldsetWrapper.default;
|
|
82
94
|
}
|
|
83
95
|
});
|
|
96
|
+
Object.defineProperty(exports, "FileUploadField", {
|
|
97
|
+
enumerable: true,
|
|
98
|
+
get: function () {
|
|
99
|
+
return _FileUploadField.default;
|
|
100
|
+
}
|
|
101
|
+
});
|
|
84
102
|
Object.defineProperty(exports, "FormBuilderIcon", {
|
|
85
103
|
enumerable: true,
|
|
86
104
|
get: function () {
|
|
@@ -207,6 +225,8 @@ Object.defineProperty(exports, "ToggleSwitchField", {
|
|
|
207
225
|
return _ToggleSwitchField.default;
|
|
208
226
|
}
|
|
209
227
|
});
|
|
228
|
+
var _AbholdatumMaterialienField = _interopRequireDefault(require("./AbholdatumMaterialienField/AbholdatumMaterialienField.jsx"));
|
|
229
|
+
var _AbholortMaterialienField = _interopRequireDefault(require("./AbholortMaterialienField/AbholortMaterialienField.jsx"));
|
|
210
230
|
var _BSRAddressSelector = _interopRequireDefault(require("./BSRAddressSelector/BSRAddressSelector.jsx"));
|
|
211
231
|
var _Tag = _interopRequireDefault(require("./Tag/Tag.jsx"));
|
|
212
232
|
var _Button = _interopRequireDefault(require("./Button/Button.jsx"));
|
|
@@ -214,6 +234,7 @@ var _SubmitButton = _interopRequireDefault(require("./Button/SubmitButton.jsx"))
|
|
|
214
234
|
var _DateInputField = _interopRequireDefault(require("./DateInputField/DateInputField.jsx"));
|
|
215
235
|
var _DropDownButton = _interopRequireDefault(require("./DropDownButton/DropDownButton.jsx"));
|
|
216
236
|
var _FieldLabel = _interopRequireDefault(require("./FieldLabel/FieldLabel.jsx"));
|
|
237
|
+
var _FileUploadField = _interopRequireDefault(require("./FileUploadField/FileUploadField.jsx"));
|
|
217
238
|
var _FormFieldChildPropTypes = _interopRequireDefault(require("./FormFieldWrapper/FormFieldChildPropTypes.jsx"));
|
|
218
239
|
var _FormFieldWrapper = _interopRequireDefault(require("./FormFieldWrapper/FormFieldWrapper.jsx"));
|
|
219
240
|
var _GroupInputField = _interopRequireDefault(require("./GroupInputField/GroupInputField.jsx"));
|
|
@@ -241,6 +262,6 @@ var _EventDatePicker = _interopRequireDefault(require("./eventWizardItems/EventD
|
|
|
241
262
|
var _FormTitle = _interopRequireDefault(require("./eventWizardItems/FormTitle/FormTitle.jsx"));
|
|
242
263
|
var _Intro = _interopRequireDefault(require("./eventWizardItems/Intro/Intro.jsx"));
|
|
243
264
|
var _Required = _interopRequireDefault(require("./eventWizardItems/Required/Required.jsx"));
|
|
244
|
-
require("./
|
|
265
|
+
require("./validations.js");
|
|
245
266
|
require("../styles/main.scss");
|
|
246
267
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validations.d.ts","sourceRoot":"","sources":["../../src/items/validations.js"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _formBuilder = require("@pinuts/form-builder");
|
|
4
|
+
_formBuilder.jsonLogic.add_operation('isSet', (value, errorMsg) => {
|
|
5
|
+
// eslint-disable-next-line no-extra-boolean-cast
|
|
6
|
+
return !!value ? true : errorMsg;
|
|
7
|
+
});
|
|
8
|
+
|
|
9
|
+
// Übernommen aus de.bsr.kehrenbuerger/shared/validations.mjs.
|
|
10
|
+
// Die dortige url-Operation fehlt hier bewusst: der form-builder registriert sie
|
|
11
|
+
// bereits identisch (gleiche Regex, gleicher Fehlercode 'invalidUrl').
|
|
12
|
+
_formBuilder.jsonLogic.add_operation('maxNumber', (value, maxNumber) => {
|
|
13
|
+
if (!value && value !== 0 || Number.isNaN(Number(value))) {
|
|
14
|
+
return true;
|
|
15
|
+
}
|
|
16
|
+
return Number(value) <= Number(maxNumber) || ['maxNumber', {
|
|
17
|
+
maxNumber
|
|
18
|
+
}];
|
|
19
|
+
});
|
|
20
|
+
_formBuilder.jsonLogic.add_operation('minNumber', (value, minNumber) => {
|
|
21
|
+
if (!value && value !== 0 || Number.isNaN(Number(value))) {
|
|
22
|
+
return true;
|
|
23
|
+
}
|
|
24
|
+
return Number(value) >= Number(minNumber) || ['minNumber', {
|
|
25
|
+
minNumber
|
|
26
|
+
}];
|
|
27
|
+
});
|
package/dist/locales.d.ts
CHANGED
|
@@ -19,6 +19,34 @@ export namespace resources {
|
|
|
19
19
|
let okButton_1: string;
|
|
20
20
|
export { okButton_1 as okButton };
|
|
21
21
|
}
|
|
22
|
+
export namespace formWidget {
|
|
23
|
+
namespace formPage {
|
|
24
|
+
let header: string;
|
|
25
|
+
let submitBtn: string;
|
|
26
|
+
}
|
|
27
|
+
namespace controlPage {
|
|
28
|
+
let header_1: string;
|
|
29
|
+
export { header_1 as header };
|
|
30
|
+
export let text: string;
|
|
31
|
+
export let backBtn: string;
|
|
32
|
+
let submitBtn_1: string;
|
|
33
|
+
export { submitBtn_1 as submitBtn };
|
|
34
|
+
}
|
|
35
|
+
namespace successPage {
|
|
36
|
+
let header_2: string;
|
|
37
|
+
export { header_2 as header };
|
|
38
|
+
let text_1: string;
|
|
39
|
+
export { text_1 as text };
|
|
40
|
+
}
|
|
41
|
+
namespace errorPage {
|
|
42
|
+
let header_3: string;
|
|
43
|
+
export { header_3 as header };
|
|
44
|
+
let text_2: string;
|
|
45
|
+
export { text_2 as text };
|
|
46
|
+
let backBtn_1: string;
|
|
47
|
+
export { backBtn_1 as backBtn };
|
|
48
|
+
}
|
|
49
|
+
}
|
|
22
50
|
export namespace general {
|
|
23
51
|
export let client: string;
|
|
24
52
|
export let altLogo: string;
|
|
@@ -44,6 +72,9 @@ export namespace resources {
|
|
|
44
72
|
let minDate: string;
|
|
45
73
|
let invalidEmail: string;
|
|
46
74
|
let invalidPlz: string;
|
|
75
|
+
let invalidUrl: string;
|
|
76
|
+
let minNumber: string;
|
|
77
|
+
let maxNumber: string;
|
|
47
78
|
let wrongFormat: string;
|
|
48
79
|
let mail: string;
|
|
49
80
|
}
|
|
@@ -66,19 +97,59 @@ export namespace resources {
|
|
|
66
97
|
}
|
|
67
98
|
}
|
|
68
99
|
export namespace bsrItems {
|
|
100
|
+
namespace review {
|
|
101
|
+
let empty: string;
|
|
102
|
+
let yes: string;
|
|
103
|
+
let no: string;
|
|
104
|
+
}
|
|
105
|
+
namespace kehrenbuerger {
|
|
106
|
+
let waitDoi: string;
|
|
107
|
+
let loadError: string;
|
|
108
|
+
}
|
|
69
109
|
let noOptionsGiven: string;
|
|
70
110
|
let lockedField: string;
|
|
71
111
|
let errorMsgPrefix: string;
|
|
72
112
|
let pleaseChoose: string;
|
|
73
113
|
namespace ToggleSwitchField {
|
|
74
|
-
let
|
|
75
|
-
|
|
114
|
+
let yes_1: string;
|
|
115
|
+
export { yes_1 as yes };
|
|
116
|
+
let no_1: string;
|
|
117
|
+
export { no_1 as no };
|
|
76
118
|
}
|
|
77
119
|
let maxCharacters: string;
|
|
78
120
|
let DropzoneUploadField: {
|
|
79
121
|
'file-invalid-type': string;
|
|
80
122
|
'too-many-files': string;
|
|
81
123
|
};
|
|
124
|
+
namespace abholdatumMaterialienField {
|
|
125
|
+
let emptyList: string;
|
|
126
|
+
}
|
|
127
|
+
namespace errorMessagesInfoBox {
|
|
128
|
+
let caption: string;
|
|
129
|
+
}
|
|
130
|
+
namespace fileUploadField {
|
|
131
|
+
let buttonText: string;
|
|
132
|
+
let uploadBtn: string;
|
|
133
|
+
let placeholder: string;
|
|
134
|
+
let groupLabel: string;
|
|
135
|
+
let fileListLabel: string;
|
|
136
|
+
let removeFile: string;
|
|
137
|
+
let removeFileAria: string;
|
|
138
|
+
let fileRemoved: string;
|
|
139
|
+
let readyForUpload: string;
|
|
140
|
+
let isUploading: string;
|
|
141
|
+
let uploadSuccessful: string;
|
|
142
|
+
namespace errors {
|
|
143
|
+
let uploadFileTooLarge: string;
|
|
144
|
+
let uploadFileTooLargeNoLimit: string;
|
|
145
|
+
let uploadInvalidType: string;
|
|
146
|
+
let uploadExtensionMismatch: string;
|
|
147
|
+
let uploadVirusFound: string;
|
|
148
|
+
let uploadError: string;
|
|
149
|
+
let uploadNumFiles: string;
|
|
150
|
+
let uploadDuplicateFilename: string;
|
|
151
|
+
}
|
|
152
|
+
}
|
|
82
153
|
namespace arrayFieldset {
|
|
83
154
|
let singularItemForList: string;
|
|
84
155
|
let addButtonLabel: string;
|
package/dist/locales.js
CHANGED
|
@@ -24,6 +24,27 @@ const resources = exports.resources = {
|
|
|
24
24
|
btnLabel: 'Erklärung',
|
|
25
25
|
okButton: 'Verstanden'
|
|
26
26
|
},
|
|
27
|
+
formWidget: {
|
|
28
|
+
formPage: {
|
|
29
|
+
header: 'Ihre Angaben',
|
|
30
|
+
submitBtn: 'Weiter'
|
|
31
|
+
},
|
|
32
|
+
controlPage: {
|
|
33
|
+
header: 'Bitte prüfen Sie Ihre Angaben',
|
|
34
|
+
text: '<p>Bitte kontrollieren Sie Ihre Angaben und senden Sie das Formular anschließend ab.</p>',
|
|
35
|
+
backBtn: 'Zurück',
|
|
36
|
+
submitBtn: 'Absenden'
|
|
37
|
+
},
|
|
38
|
+
successPage: {
|
|
39
|
+
header: 'Vielen Dank für Ihre Eingabe!',
|
|
40
|
+
text: '<p>Vielen Dank für die bereitgestellten Informationen.</p>'
|
|
41
|
+
},
|
|
42
|
+
errorPage: {
|
|
43
|
+
header: 'Es ist ein Fehler aufgetreten',
|
|
44
|
+
text: '<p>Ihre Angaben konnten leider nicht gesendet werden. Bitte versuchen Sie es später erneut.</p>',
|
|
45
|
+
backBtn: 'Zurück zum Formular'
|
|
46
|
+
}
|
|
47
|
+
},
|
|
27
48
|
general: {
|
|
28
49
|
client: 'BSR',
|
|
29
50
|
altLogo: 'BSR Logo',
|
|
@@ -45,6 +66,9 @@ const resources = exports.resources = {
|
|
|
45
66
|
minDate: 'Frühstes Datum: {{minDate}}.',
|
|
46
67
|
invalidEmail: 'Ungültige E-Mail-Adresse',
|
|
47
68
|
invalidPlz: 'Ungültige Postleitzahl',
|
|
69
|
+
invalidUrl: 'Ungültige URL',
|
|
70
|
+
minNumber: 'Der Wert muss mindestens {{minNumber}} betragen.',
|
|
71
|
+
maxNumber: 'Der Wert darf höchstens {{maxNumber}} betragen.',
|
|
48
72
|
wrongFormat: 'Bitte verwenden Sie das richtige Fromage.',
|
|
49
73
|
// ...
|
|
50
74
|
mail: 'Bitte geben Sie eine gültige E-Mail-Adresse an.'
|
|
@@ -68,6 +92,15 @@ const resources = exports.resources = {
|
|
|
68
92
|
}
|
|
69
93
|
},
|
|
70
94
|
bsrItems: {
|
|
95
|
+
review: {
|
|
96
|
+
empty: 'Keine Angabe',
|
|
97
|
+
yes: 'Ja',
|
|
98
|
+
no: 'Nein'
|
|
99
|
+
},
|
|
100
|
+
kehrenbuerger: {
|
|
101
|
+
waitDoi: 'Bitte warten, Ihr Link wird überprüft.',
|
|
102
|
+
loadError: 'Das Formular konnte nicht geladen werden.'
|
|
103
|
+
},
|
|
71
104
|
noOptionsGiven: 'Es werden befüllte "options" benötigt',
|
|
72
105
|
lockedField: 'Dieses Feld kann nicht bearbeitet werden.',
|
|
73
106
|
errorMsgPrefix: 'Fehler: ',
|
|
@@ -81,6 +114,37 @@ const resources = exports.resources = {
|
|
|
81
114
|
'file-invalid-type': 'Dateityp nicht unterstützt: {{filename}}',
|
|
82
115
|
'too-many-files': 'Es können maximal {{maxFiles}} Dateien hochgeladen werden.'
|
|
83
116
|
},
|
|
117
|
+
abholdatumMaterialienField: {
|
|
118
|
+
emptyList: 'Bitte wählen Sie zuerst das Datum der Aktion.'
|
|
119
|
+
},
|
|
120
|
+
errorMessagesInfoBox: {
|
|
121
|
+
caption: 'Bitte korrigieren Sie Ihre Eingaben.'
|
|
122
|
+
},
|
|
123
|
+
fileUploadField: {
|
|
124
|
+
buttonText: 'Datei auswählen',
|
|
125
|
+
uploadBtn: 'Hochladen',
|
|
126
|
+
placeholder: 'Keine Datei hochgeladen',
|
|
127
|
+
groupLabel: 'Datei-Upload',
|
|
128
|
+
fileListLabel: 'Hochgeladene Dateien',
|
|
129
|
+
removeFile: 'Datei entfernen',
|
|
130
|
+
removeFileAria: '{{filename}} entfernen',
|
|
131
|
+
fileRemoved: '{{filename}} entfernt',
|
|
132
|
+
readyForUpload: 'Bereit zum Hochladen: {{filename}}',
|
|
133
|
+
isUploading: '{{filename}} wird hochgeladen ...',
|
|
134
|
+
uploadSuccessful: '{{filename}} wurde hochgeladen.',
|
|
135
|
+
errors: {
|
|
136
|
+
// Fehlercodes des Servers
|
|
137
|
+
uploadFileTooLarge: '{{filename}} ist zu groß. Erlaubt sind maximal {{maxSize}}.',
|
|
138
|
+
uploadFileTooLargeNoLimit: '{{filename}} ist zu groß.',
|
|
139
|
+
uploadInvalidType: '{{filename}}: Dieser Dateityp wird nicht unterstützt.',
|
|
140
|
+
uploadExtensionMismatch: '{{filename}}: Dateiendung und Dateiinhalt passen nicht zusammen.',
|
|
141
|
+
uploadVirusFound: '{{filename}} wurde abgelehnt, die Datei ist nicht sicher.',
|
|
142
|
+
uploadError: 'Die Datei konnte nicht hochgeladen werden. Bitte versuchen Sie es später erneut.',
|
|
143
|
+
// Prüfungen im Feld selbst
|
|
144
|
+
uploadNumFiles: 'Es können maximal {{numFiles}} Datei(en) hochgeladen werden.',
|
|
145
|
+
uploadDuplicateFilename: '{{filename}} wurde bereits hochgeladen.'
|
|
146
|
+
}
|
|
147
|
+
},
|
|
84
148
|
arrayFieldset: {
|
|
85
149
|
singularItemForList: 'Eintrag',
|
|
86
150
|
addButtonLabel: 'Eintrag hinzufügen',
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export default ErrorMessagesInfoBox;
|
|
2
|
+
declare function ErrorMessagesInfoBox({ formConfig, formId, caption, }: {
|
|
3
|
+
formConfig: any;
|
|
4
|
+
formId: any;
|
|
5
|
+
caption?: string;
|
|
6
|
+
}): React.JSX.Element;
|
|
7
|
+
declare namespace ErrorMessagesInfoBox {
|
|
8
|
+
namespace propTypes {
|
|
9
|
+
let formConfig: PropTypes.Validator<Object>;
|
|
10
|
+
let formId: PropTypes.Requireable<string>;
|
|
11
|
+
let caption: PropTypes.Requireable<string>;
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
import React from 'react';
|
|
15
|
+
import PropTypes from 'prop-types';
|
|
16
|
+
//# sourceMappingURL=ErrorMessagesInfoBox.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ErrorMessagesInfoBox.d.ts","sourceRoot":"","sources":["../../../src/shared/ErrorMessagesInfoBox/ErrorMessagesInfoBox.jsx"],"names":[],"mappings":";AAgEA;;;;sBAmEC;;;;;;;;kBAnI8D,OAAO;sBAChD,YAAY"}
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
8
|
+
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
9
|
+
var _formBuilder = require("@pinuts/form-builder");
|
|
10
|
+
var _reactI18next = require("react-i18next");
|
|
11
|
+
var _useValidationMessage = _interopRequireDefault(require("../../hooks/useValidationMessage.js"));
|
|
12
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
13
|
+
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
|
14
|
+
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
15
|
+
const {
|
|
16
|
+
useFormikContext
|
|
17
|
+
} = _formBuilder.formik;
|
|
18
|
+
const focusFieldByName = (formId, name) => {
|
|
19
|
+
const form = formId ? document.getElementById(formId) : document;
|
|
20
|
+
const field = form?.querySelector(`[name="${name}"]`);
|
|
21
|
+
if (field) {
|
|
22
|
+
field.scrollIntoView({
|
|
23
|
+
behavior: 'smooth',
|
|
24
|
+
block: 'center'
|
|
25
|
+
});
|
|
26
|
+
field.focus();
|
|
27
|
+
}
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
// key -> label aus der formConfig, inklusive verschachtelter Komponenten
|
|
31
|
+
const extractLabels = components => {
|
|
32
|
+
const labels = {};
|
|
33
|
+
const traverse = items => items.forEach(item => {
|
|
34
|
+
if (item.config?.key && item.config?.label) {
|
|
35
|
+
labels[item.config.key] = item.config.label;
|
|
36
|
+
}
|
|
37
|
+
if (item.components?.length) {
|
|
38
|
+
traverse(item.components);
|
|
39
|
+
}
|
|
40
|
+
});
|
|
41
|
+
if (components) {
|
|
42
|
+
traverse(components);
|
|
43
|
+
}
|
|
44
|
+
return labels;
|
|
45
|
+
};
|
|
46
|
+
const ErrorItem = _ref => {
|
|
47
|
+
let {
|
|
48
|
+
formId,
|
|
49
|
+
fieldName,
|
|
50
|
+
label,
|
|
51
|
+
msg
|
|
52
|
+
} = _ref;
|
|
53
|
+
const [t] = (0, _reactI18next.useTranslation)();
|
|
54
|
+
const errorMsg = (0, _useValidationMessage.default)(t, msg);
|
|
55
|
+
const handleClick = (0, _react.useCallback)(event => {
|
|
56
|
+
event.preventDefault();
|
|
57
|
+
focusFieldByName(formId, fieldName);
|
|
58
|
+
}, [formId, fieldName]);
|
|
59
|
+
return /*#__PURE__*/_react.default.createElement("li", null, /*#__PURE__*/_react.default.createElement("a", {
|
|
60
|
+
href: `#${fieldName}`,
|
|
61
|
+
onClick: handleClick
|
|
62
|
+
}, label), ': ', errorMsg);
|
|
63
|
+
};
|
|
64
|
+
ErrorItem.propTypes = {
|
|
65
|
+
formId: _propTypes.default.string,
|
|
66
|
+
fieldName: _propTypes.default.string.isRequired,
|
|
67
|
+
label: _propTypes.default.string.isRequired,
|
|
68
|
+
msg: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.array])
|
|
69
|
+
};
|
|
70
|
+
const ErrorMessagesInfoBox = _ref2 => {
|
|
71
|
+
let {
|
|
72
|
+
formConfig,
|
|
73
|
+
formId,
|
|
74
|
+
caption = 'bsrItems.errorMessagesInfoBox.caption'
|
|
75
|
+
} = _ref2;
|
|
76
|
+
const [t] = (0, _reactI18next.useTranslation)();
|
|
77
|
+
const {
|
|
78
|
+
errors,
|
|
79
|
+
submitCount,
|
|
80
|
+
isSubmitting,
|
|
81
|
+
initialErrors,
|
|
82
|
+
values,
|
|
83
|
+
initialValues
|
|
84
|
+
} = useFormikContext();
|
|
85
|
+
const scrollToRef = (0, _react.useRef)(null);
|
|
86
|
+
const labels = (0, _react.useMemo)(() => extractLabels(formConfig?.components), [formConfig]);
|
|
87
|
+
(0, _react.useEffect)(() => {
|
|
88
|
+
if (isSubmitting && Object.keys(errors).length > 0) {
|
|
89
|
+
if (scrollToRef.current) {
|
|
90
|
+
scrollToRef.current.scrollIntoView();
|
|
91
|
+
scrollToRef.current.focus();
|
|
92
|
+
} else {
|
|
93
|
+
window.scrollTo(0, 0);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
}, [isSubmitting, errors]);
|
|
97
|
+
|
|
98
|
+
// Serverseitige Fehler bleiben stehen, solange das Feld unverändert ist
|
|
99
|
+
const mergedErrors = (0, _react.useMemo)(() => {
|
|
100
|
+
const merged = {
|
|
101
|
+
...errors
|
|
102
|
+
};
|
|
103
|
+
Object.keys(initialErrors).forEach(key => {
|
|
104
|
+
if (values[key] === initialValues[key]) {
|
|
105
|
+
merged[key] = initialErrors[key];
|
|
106
|
+
}
|
|
107
|
+
});
|
|
108
|
+
return merged;
|
|
109
|
+
}, [errors, initialErrors, values, initialValues]);
|
|
110
|
+
const errorEntries = (0, _react.useMemo)(() => Object.entries(mergedErrors).filter(_ref3 => {
|
|
111
|
+
let [key] = _ref3;
|
|
112
|
+
return labels[key];
|
|
113
|
+
}), [mergedErrors, labels]);
|
|
114
|
+
|
|
115
|
+
// Nichts anzeigen, wenn es keine auflistbaren Fehler gibt (sonst leere rote Box);
|
|
116
|
+
// und nicht vor dem ersten Absenden, außer der Server hat schon Fehler geliefert.
|
|
117
|
+
const hasInitialErrors = Object.keys(initialErrors).length > 0;
|
|
118
|
+
if (!errorEntries.length || !submitCount && !hasInitialErrors) {
|
|
119
|
+
return null;
|
|
120
|
+
}
|
|
121
|
+
return /*#__PURE__*/_react.default.createElement("div", {
|
|
122
|
+
className: "pi-form-control__has-error",
|
|
123
|
+
role: "alert",
|
|
124
|
+
tabIndex: "-1",
|
|
125
|
+
ref: scrollToRef
|
|
126
|
+
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
127
|
+
className: "pi-message-text"
|
|
128
|
+
}, /*#__PURE__*/_react.default.createElement("p", null, t(caption)), /*#__PURE__*/_react.default.createElement("ul", null, errorEntries.map(_ref4 => {
|
|
129
|
+
let [key, msg] = _ref4;
|
|
130
|
+
return /*#__PURE__*/_react.default.createElement(ErrorItem, {
|
|
131
|
+
key: key,
|
|
132
|
+
formId: formId,
|
|
133
|
+
fieldName: key,
|
|
134
|
+
label: t(labels[key]),
|
|
135
|
+
msg: msg
|
|
136
|
+
});
|
|
137
|
+
}))));
|
|
138
|
+
};
|
|
139
|
+
ErrorMessagesInfoBox.propTypes = {
|
|
140
|
+
formConfig: _propTypes.default.instanceOf(Object).isRequired,
|
|
141
|
+
formId: _propTypes.default.string,
|
|
142
|
+
caption: _propTypes.default.string
|
|
143
|
+
};
|
|
144
|
+
var _default = exports.default = ErrorMessagesInfoBox;
|