@pinuts/bsr-uikit-relaunch 0.4.2 → 0.4.4
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/dist/hooks/withFieldGroup.d.ts.map +1 -1
- package/dist/hooks/withFieldGroup.js +46 -18
- package/dist/index.js +1 -1
- package/dist/items/AbholortMaterialienField/AbholortMaterialienField.d.ts.map +1 -1
- package/dist/items/AbholortMaterialienField/AbholortMaterialienField.js +7 -3
- package/dist/items/BSRAddressSelector/BSRAddressContext.d.ts +1 -0
- package/dist/items/BSRAddressSelector/BSRAddressContext.d.ts.map +1 -1
- package/dist/items/BSRAddressSelector/BSRAddressContext.js +4 -1
- package/dist/items/BSRAddressSelector/BSRAddressSelector.d.ts.map +1 -1
- package/dist/items/BSRAddressSelector/BSRAddressSelector.js +41 -2
- package/dist/items/BSRAddressSelector/BSRAutocompleteField.d.ts +9 -1
- package/dist/items/BSRAddressSelector/BSRAutocompleteField.d.ts.map +1 -1
- package/dist/items/BSRAddressSelector/BSRAutocompleteField.js +29 -7
- package/dist/items/BSRAddressSelector/BSRStreetPlzSelector.js +6 -1
- package/dist/items/BSRAddressSelector/HouseNumberSelectField.d.ts.map +1 -1
- package/dist/items/BSRAddressSelector/HouseNumberSelectField.js +7 -3
- package/dist/items/BSRAddressSelector/withAddressGroupValidation.d.ts +12 -0
- package/dist/items/BSRAddressSelector/withAddressGroupValidation.d.ts.map +1 -0
- package/dist/items/BSRAddressSelector/withAddressGroupValidation.js +57 -0
- package/dist/items/FieldsetWrapper/FieldsetWrapper.d.ts +1 -0
- package/dist/items/FieldsetWrapper/FieldsetWrapper.d.ts.map +1 -1
- package/dist/items/FieldsetWrapper/FieldsetWrapper.js +28 -0
- package/dist/items/FileUploadField/FileUploadField.d.ts.map +1 -1
- package/dist/items/FileUploadField/FileUploadField.js +19 -3
- package/dist/items/FileUploadField/uploadedFileStore.d.ts +1 -0
- package/dist/items/FileUploadField/uploadedFileStore.d.ts.map +1 -1
- package/dist/items/FileUploadField/uploadedFileStore.js +10 -1
- package/dist/items/Grid/BSRGridColumn.d.ts.map +1 -1
- package/dist/items/Grid/BSRGridColumn.js +15 -1
- package/dist/items/Grid/BSRGridRow.d.ts.map +1 -1
- package/dist/items/Grid/BSRGridRow.js +15 -1
- package/dist/items/ReviewValue/ReviewValueList.d.ts +1 -1
- package/dist/items/ReviewValue/ReviewValueList.d.ts.map +1 -1
- package/dist/items/ReviewValue/ReviewValueList.js +3 -3
- package/dist/locales.d.ts +2 -0
- package/dist/locales.js +2 -0
- package/dist/shared/ErrorMessagesInfoBox/ErrorMessagesInfoBox.d.ts.map +1 -1
- package/dist/shared/ErrorMessagesInfoBox/ErrorMessagesInfoBox.js +3 -1
- package/dist/shared/FormWidget/FormWidgetControlPage.d.ts.map +1 -1
- package/dist/shared/FormWidget/FormWidgetControlPage.js +14 -5
- package/dist/shared/FormWidget/ReviewLayoutContext.d.ts +11 -0
- package/dist/shared/FormWidget/ReviewLayoutContext.d.ts.map +1 -0
- package/dist/shared/FormWidget/ReviewLayoutContext.js +17 -0
- package/dist/shared/KehrenbuergerForm/KehrenbuergerForm.d.ts.map +1 -1
- package/dist/shared/KehrenbuergerForm/KehrenbuergerForm.js +29 -2
- package/dist/styles/_errorMessagesInfoBox.scss +2 -1
- package/dist/styles/_forcedColors.scss +159 -0
- package/dist/styles/_form.scss +109 -3
- package/dist/styles/_review.scss +52 -3
- package/dist/styles/main.scss +1 -0
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AbholortMaterialienField.d.ts","sourceRoot":"","sources":["../../../src/items/AbholortMaterialienField/AbholortMaterialienField.jsx"],"names":[],"mappings":";AASA;;;;GAIG;AACH;;;
|
|
1
|
+
{"version":3,"file":"AbholortMaterialienField.d.ts","sourceRoot":"","sources":["../../../src/items/AbholortMaterialienField/AbholortMaterialienField.jsx"],"names":[],"mappings":";AASA;;;;GAIG;AACH;;;sBA0CC;;;;;;;;;;;;;;kBAxD8B,OAAO;sBAChB,YAAY"}
|
|
@@ -35,7 +35,8 @@ const AbholortMaterialienField = _ref => {
|
|
|
35
35
|
return selected?.adresse || '';
|
|
36
36
|
}, [config.options, field.value]);
|
|
37
37
|
|
|
38
|
-
// Die Adresse als Beschreibung mit der Selectbox verknüpfen
|
|
38
|
+
// Die Adresse als Beschreibung mit der Selectbox verknüpfen; auf der Kontrollseite
|
|
39
|
+
// steht sie im selben dd wie der Abholort
|
|
39
40
|
const selectConfig = (0, _react.useMemo)(() => ({
|
|
40
41
|
...config,
|
|
41
42
|
inputProps: {
|
|
@@ -43,11 +44,14 @@ const AbholortMaterialienField = _ref => {
|
|
|
43
44
|
...(selectedAddress ? {
|
|
44
45
|
'aria-describedby': addressId
|
|
45
46
|
} : {})
|
|
46
|
-
}
|
|
47
|
+
},
|
|
48
|
+
...(config.reviewMode && selectedAddress ? {
|
|
49
|
+
reviewAppendix: selectedAddress
|
|
50
|
+
} : {})
|
|
47
51
|
}), [config, selectedAddress, addressId]);
|
|
48
52
|
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_SelectField.default, _extends({}, otherProps, {
|
|
49
53
|
config: selectConfig
|
|
50
|
-
})), selectedAddress && /*#__PURE__*/_react.default.createElement(_TextBox.default, {
|
|
54
|
+
})), selectedAddress && !config.reviewMode && /*#__PURE__*/_react.default.createElement(_TextBox.default, {
|
|
51
55
|
config: {
|
|
52
56
|
text: selectedAddress,
|
|
53
57
|
html: true,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BSRAddressContext.d.ts","sourceRoot":"","sources":["../../../src/items/BSRAddressSelector/BSRAddressContext.js"],"names":[],"mappings":"AAeA,mDAAiD;;
|
|
1
|
+
{"version":3,"file":"BSRAddressContext.d.ts","sourceRoot":"","sources":["../../../src/items/BSRAddressSelector/BSRAddressContext.js"],"names":[],"mappings":"AAeA,mDAAiD;AAGjD,4DAA6D;;kBAlBmB,OAAO;AAoBvF;;;sBAuKC;;;;;;;;;;;;;sBA1LqB,YAAY"}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.default = exports.BSRAddressContext = void 0;
|
|
6
|
+
exports.default = exports.BSRAddressValidationContext = exports.BSRAddressContext = void 0;
|
|
7
7
|
var _react = _interopRequireWildcard(require("react"));
|
|
8
8
|
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
9
9
|
var _formBuilder = require("@pinuts/form-builder");
|
|
@@ -21,6 +21,9 @@ const defaultAdContext = {
|
|
|
21
21
|
overwriteLabels: {}
|
|
22
22
|
};
|
|
23
23
|
const BSRAddressContext = exports.BSRAddressContext = /*#__PURE__*/(0, _react.createContext)();
|
|
24
|
+
|
|
25
|
+
// Validierungszustand des groupKey (Pflichtfeld "vollständige Adresse"), siehe BSRAddressSelector
|
|
26
|
+
const BSRAddressValidationContext = exports.BSRAddressValidationContext = /*#__PURE__*/(0, _react.createContext)({});
|
|
24
27
|
const BSRAddressContextProvider = _ref => {
|
|
25
28
|
let {
|
|
26
29
|
initAddressContext,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BSRAddressSelector.d.ts","sourceRoot":"","sources":["../../../src/items/BSRAddressSelector/BSRAddressSelector.jsx"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"BSRAddressSelector.d.ts","sourceRoot":"","sources":["../../../src/items/BSRAddressSelector/BSRAddressSelector.jsx"],"names":[],"mappings":";AA6BA;;sBAoFC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAjHiD,OAAO;sBACnC,YAAY"}
|
|
@@ -6,9 +6,11 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.default = void 0;
|
|
7
7
|
var _react = _interopRequireWildcard(require("react"));
|
|
8
8
|
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
9
|
+
var _reactI18next = require("react-i18next");
|
|
9
10
|
var _formBuilder = require("@pinuts/form-builder");
|
|
10
11
|
var _FormFieldChildPropTypes = _interopRequireDefault(require("../FormFieldWrapper/FormFieldChildPropTypes.jsx"));
|
|
11
|
-
var
|
|
12
|
+
var _useValidationMessage = _interopRequireDefault(require("../../hooks/useValidationMessage.js"));
|
|
13
|
+
var _BSRAddressContext = _interopRequireWildcard(require("./BSRAddressContext.js"));
|
|
12
14
|
require("./BSRAutocompleteField.jsx");
|
|
13
15
|
require("./BSRAddressButtons.jsx");
|
|
14
16
|
require("./BSRStreetPlzSelector.jsx");
|
|
@@ -21,6 +23,13 @@ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e;
|
|
|
21
23
|
// init sub components
|
|
22
24
|
|
|
23
25
|
const subFormConfigStr = JSON.stringify(require('./BSRAddressSubForm.json'));
|
|
26
|
+
const {
|
|
27
|
+
useField,
|
|
28
|
+
useFormikContext
|
|
29
|
+
} = _formBuilder.formik;
|
|
30
|
+
const {
|
|
31
|
+
getIsFieldInvalid
|
|
32
|
+
} = _formBuilder.utils;
|
|
24
33
|
const applyReviewMode = function () {
|
|
25
34
|
let components = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
|
|
26
35
|
return components.map(component => ({
|
|
@@ -38,6 +47,7 @@ const BSRAddressSelector = _ref => {
|
|
|
38
47
|
let {
|
|
39
48
|
config
|
|
40
49
|
} = _ref;
|
|
50
|
+
const [t] = (0, _reactI18next.useTranslation)();
|
|
41
51
|
const {
|
|
42
52
|
controllerPath,
|
|
43
53
|
restUrl,
|
|
@@ -45,6 +55,20 @@ const BSRAddressSelector = _ref => {
|
|
|
45
55
|
labels: overwriteLabels
|
|
46
56
|
} = config;
|
|
47
57
|
const groupKey = config.key;
|
|
58
|
+
|
|
59
|
+
// Die Felder des Sub-Formulars kennt der FormBuilder nicht, Regeln aus der Konfiguration
|
|
60
|
+
// (z.B. "required") hängen am groupKey. Er ist erst gesetzt, wenn die Adresse vollständig ist.
|
|
61
|
+
const [groupField, groupMeta] = useField(groupKey);
|
|
62
|
+
const {
|
|
63
|
+
validateForm,
|
|
64
|
+
validateOnChange
|
|
65
|
+
} = useFormikContext();
|
|
66
|
+
const groupValidationMessage = (0, _useValidationMessage.default)(t, groupMeta.error, config.errorMessages);
|
|
67
|
+
const addressValidation = (0, _react.useMemo)(() => ({
|
|
68
|
+
isInvalid: !config.reviewMode && !config.viewMode && getIsFieldInvalid(groupField.value, groupMeta.touched, groupMeta.error, groupMeta.initialError, null // ohne submitCount, wie FormFieldWrapper
|
|
69
|
+
),
|
|
70
|
+
validationMessage: groupValidationMessage
|
|
71
|
+
}), [config.reviewMode, config.viewMode, groupField.value, groupMeta.touched, groupMeta.error, groupMeta.initialError, groupValidationMessage]);
|
|
48
72
|
let subFormConfigStrInner = subFormConfigStr.replaceAll('{SELID}', groupKey);
|
|
49
73
|
// replace label, if set
|
|
50
74
|
if (overwriteLabels) {
|
|
@@ -59,6 +83,19 @@ const BSRAddressSelector = _ref => {
|
|
|
59
83
|
const subFormComponents = (0, _react.useMemo)(() => config.reviewMode ? applyReviewMode(subFormConfig.components) : subFormConfig.components,
|
|
60
84
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
61
85
|
[subFormConfigStrInner, config.reviewMode]);
|
|
86
|
+
|
|
87
|
+
// Mehrere setFieldValue-Aufrufe beim Übernehmen der Adresse: die Validierung des letzten
|
|
88
|
+
// läuft noch mit dem leeren Wert, der Pflichtfehler bliebe bis zum nächsten Submit stehen.
|
|
89
|
+
// Nur beim Übergang leer -> gesetzt, damit Serverfehler beim Mount erhalten bleiben.
|
|
90
|
+
const prevGroupValue = (0, _react.useRef)(groupField.value);
|
|
91
|
+
(0, _react.useEffect)(() => {
|
|
92
|
+
const wasEmpty = !prevGroupValue.current;
|
|
93
|
+
prevGroupValue.current = groupField.value;
|
|
94
|
+
if (wasEmpty && groupField.value && groupMeta.error && validateOnChange) {
|
|
95
|
+
validateForm();
|
|
96
|
+
}
|
|
97
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
98
|
+
}, [groupField.value]);
|
|
62
99
|
const initAddressContext = (0, _react.useMemo)(() => {
|
|
63
100
|
const restUrlWithTrailingSlash = restUrl.endsWith('/') ? restUrl : `${restUrl}/`;
|
|
64
101
|
return {
|
|
@@ -73,10 +110,12 @@ const BSRAddressSelector = _ref => {
|
|
|
73
110
|
}, [groupKey, controllerPath, restUrl, doSubmitOnChange, overwriteLabels]);
|
|
74
111
|
return /*#__PURE__*/_react.default.createElement(_BSRAddressContext.default, {
|
|
75
112
|
initAddressContext: initAddressContext
|
|
113
|
+
}, /*#__PURE__*/_react.default.createElement(_BSRAddressContext.BSRAddressValidationContext.Provider, {
|
|
114
|
+
value: addressValidation
|
|
76
115
|
}, /*#__PURE__*/_react.default.createElement(_formBuilder.ComponentPopulator, {
|
|
77
116
|
formId: `${groupKey}-adselctor-wrapper`,
|
|
78
117
|
components: subFormComponents
|
|
79
|
-
}));
|
|
118
|
+
})));
|
|
80
119
|
};
|
|
81
120
|
BSRAddressSelector.propTypes = {
|
|
82
121
|
..._FormFieldChildPropTypes.default,
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
export default BSRAutocompleteField;
|
|
2
|
-
declare function BSRAutocompleteField({ config }: {
|
|
2
|
+
declare function BSRAutocompleteField({ config, isInvalid: isFieldInvalid, validationMessage, fieldIds }: {
|
|
3
3
|
config: any;
|
|
4
|
+
isInvalid: any;
|
|
5
|
+
validationMessage: any;
|
|
6
|
+
fieldIds: any;
|
|
4
7
|
}): any;
|
|
5
8
|
declare namespace BSRAutocompleteField {
|
|
6
9
|
namespace propTypes {
|
|
@@ -20,6 +23,11 @@ declare namespace BSRAutocompleteField {
|
|
|
20
23
|
suggestionsAmount: PropTypes.Requireable<number>;
|
|
21
24
|
placeholder: PropTypes.Requireable<string>;
|
|
22
25
|
}>>>;
|
|
26
|
+
let isInvalid: PropTypes.Requireable<boolean>;
|
|
27
|
+
let validationMessage: PropTypes.Requireable<string>;
|
|
28
|
+
let fieldIds: PropTypes.Requireable<PropTypes.InferProps<{
|
|
29
|
+
errorMessage: PropTypes.Requireable<string>;
|
|
30
|
+
}>>;
|
|
23
31
|
}
|
|
24
32
|
}
|
|
25
33
|
import PropTypes from 'prop-types';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BSRAutocompleteField.d.ts","sourceRoot":"","sources":["../../../src/items/BSRAddressSelector/BSRAutocompleteField.jsx"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"BSRAutocompleteField.d.ts","sourceRoot":"","sources":["../../../src/items/BSRAddressSelector/BSRAutocompleteField.jsx"],"names":[],"mappings":";AAgDA;;;;;QAwSC;;;;;;;;;;;;;;;;;;;;;;;;;;sBAxVqB,YAAY"}
|
|
@@ -15,6 +15,7 @@ var _index = require("../../utils/index.js");
|
|
|
15
15
|
var _BSRAddressSelectorModule = _interopRequireDefault(require("./BSRAddressSelector.module.scss"));
|
|
16
16
|
var _BSRAddressContext = require("./BSRAddressContext.js");
|
|
17
17
|
var _useGetPlaceHolderText = _interopRequireDefault(require("./useGetPlaceHolderText.js"));
|
|
18
|
+
var _withAddressGroupValidation = _interopRequireWildcard(require("./withAddressGroupValidation.jsx"));
|
|
18
19
|
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); }
|
|
19
20
|
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; }
|
|
20
21
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
@@ -43,7 +44,10 @@ const fetchOptions = async url => {
|
|
|
43
44
|
};
|
|
44
45
|
const BSRAutocompleteField = _ref => {
|
|
45
46
|
let {
|
|
46
|
-
config
|
|
47
|
+
config,
|
|
48
|
+
isInvalid: isFieldInvalid,
|
|
49
|
+
validationMessage,
|
|
50
|
+
fieldIds
|
|
47
51
|
} = _ref;
|
|
48
52
|
const [t] = (0, _reactI18next.useTranslation)();
|
|
49
53
|
const {
|
|
@@ -194,14 +198,20 @@ const BSRAutocompleteField = _ref => {
|
|
|
194
198
|
}, 50);
|
|
195
199
|
}, [key, setFieldValue, labelFieldKey, groupKey, setSelectedOptionId, setPrevSelection]);
|
|
196
200
|
const className = (0, _react.useMemo)(() => [_BSRAddressSelectorModule.default.comboboxWrapper, _BSRAddressSelectorModule.default.formControl, _BSRAddressSelectorModule.default.ariakitCombobox, 'ariakit-combobox', 'form-control py-1 px-0', isFocused && 'focused', isInvalid && 'is-invalid'].filter(Boolean).join(' '), [isFocused, isInvalid]);
|
|
197
|
-
const formControlClassNames = (0, _index.getFormControlClassNames)(disabled, readOnly, disabled, ['input', field.className].filter(Boolean));
|
|
201
|
+
const formControlClassNames = (0, _index.getFormControlClassNames)(disabled || isFieldInvalid, readOnly, disabled, ['input', field.className].filter(Boolean));
|
|
198
202
|
const getPreviousSelectedItem = (0, _react.useCallback)(() => {
|
|
199
203
|
return prevSelection?.value ? prevSelection.value : field.value;
|
|
200
204
|
}, [prevSelection, field.value]);
|
|
205
|
+
|
|
206
|
+
// Kontrollseite: vor dontShowSelector, nach der Adressübernahme ist die Eingabe ausgeblendet.
|
|
207
|
+
// labelFieldKey enthält den Straßennamen als String (siehe handleOnSelectChange).
|
|
208
|
+
if (reviewMode) {
|
|
209
|
+
return (typeof usedValueLabel === 'string' ? usedValueLabel : usedValueLabel?.label) || '';
|
|
210
|
+
}
|
|
201
211
|
if (dontShowSelector) {
|
|
202
212
|
return null;
|
|
203
213
|
}
|
|
204
|
-
if (viewMode
|
|
214
|
+
if (viewMode) {
|
|
205
215
|
return usedValueLabel?.label || '';
|
|
206
216
|
}
|
|
207
217
|
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_react2.ComboboxProvider, null, /*#__PURE__*/_react.default.createElement("div", {
|
|
@@ -219,6 +229,11 @@ const BSRAutocompleteField = _ref => {
|
|
|
219
229
|
event.target.select();
|
|
220
230
|
},
|
|
221
231
|
ref: inputRef
|
|
232
|
+
}, isFieldInvalid && {
|
|
233
|
+
'aria-invalid': 'true',
|
|
234
|
+
...(validationMessage && {
|
|
235
|
+
'aria-describedby': fieldIds?.errorMessage
|
|
236
|
+
})
|
|
222
237
|
}, inputProps)), selectedOption.value && /*#__PURE__*/_react.default.createElement(_react2.ComboboxCancel, {
|
|
223
238
|
className: `btn ${_BSRAddressSelectorModule.default.comboboxCancel || ''}`,
|
|
224
239
|
store: combobox,
|
|
@@ -279,22 +294,29 @@ BSRAutocompleteField.propTypes = {
|
|
|
279
294
|
disabled: _propTypes.default.bool,
|
|
280
295
|
suggestionsAmount: _propTypes.default.number,
|
|
281
296
|
placeholder: _propTypes.default.string
|
|
282
|
-
}).isRequired
|
|
297
|
+
}).isRequired,
|
|
298
|
+
isInvalid: _propTypes.default.bool,
|
|
299
|
+
validationMessage: _propTypes.default.string,
|
|
300
|
+
fieldIds: _propTypes.default.shape({
|
|
301
|
+
errorMessage: _propTypes.default.string
|
|
302
|
+
})
|
|
283
303
|
};
|
|
284
304
|
const HigherOrderAutocompleteField = (0, _withFieldGroup.default)(BSRAutocompleteField);
|
|
305
|
+
const GroupValidatedAutocompleteField = (0, _withAddressGroupValidation.default)(HigherOrderAutocompleteField, _withAddressGroupValidation.ADDRESS_FIELD_STREET);
|
|
285
306
|
const WrappedAutocompleteField = props => {
|
|
286
307
|
const {
|
|
287
308
|
dontShowSelector
|
|
288
309
|
} = (0, _react.useContext)(_BSRAddressContext.BSRAddressContext);
|
|
289
310
|
|
|
290
|
-
//
|
|
311
|
+
// Kontrollseite: Straße wie im Formular ausgeben, auch wenn die Eingabe nach der
|
|
312
|
+
// Adressübernahme ausgeblendet ist
|
|
291
313
|
if (props.config?.reviewMode) {
|
|
292
|
-
return
|
|
314
|
+
return /*#__PURE__*/_react.default.createElement(_FormFieldWrapper.default, props, /*#__PURE__*/_react.default.createElement(HigherOrderAutocompleteField, props));
|
|
293
315
|
}
|
|
294
316
|
if (dontShowSelector) {
|
|
295
317
|
return null;
|
|
296
318
|
}
|
|
297
|
-
return /*#__PURE__*/_react.default.createElement(_FormFieldWrapper.default, props, /*#__PURE__*/_react.default.createElement(
|
|
319
|
+
return /*#__PURE__*/_react.default.createElement(_FormFieldWrapper.default, props, /*#__PURE__*/_react.default.createElement(GroupValidatedAutocompleteField, props));
|
|
298
320
|
};
|
|
299
321
|
(0, _formBuilder.registerComponent)('BSRAutocompleteField', WrappedAutocompleteField);
|
|
300
322
|
(0, _formBuilder.registerComponent)('BSRAutocompleteFieldBasic', HigherOrderAutocompleteField);
|
|
@@ -179,5 +179,10 @@ BSRStreetPlzSelector.propTypes = {
|
|
|
179
179
|
config: _propTypes.default.object.isRequired
|
|
180
180
|
};
|
|
181
181
|
const HigherOrderBSRStreetPlzSelector = (0, _withFieldGroup.default)(BSRStreetPlzSelector);
|
|
182
|
-
|
|
182
|
+
|
|
183
|
+
// Ohne FormFieldWrapper kommt reviewMode nur über config an; withFieldGroup würde sonst
|
|
184
|
+
// auf der Kontrollseite einen leeren Feldrahmen rendern
|
|
185
|
+
// eslint-disable-next-line react/prop-types
|
|
186
|
+
const WrappedBSRStreetPlzSelector = props => props.config?.reviewMode ? null : /*#__PURE__*/_react.default.createElement(HigherOrderBSRStreetPlzSelector, props);
|
|
187
|
+
(0, _formBuilder.registerComponent)('BSRStreetPlzSelector', WrappedBSRStreetPlzSelector);
|
|
183
188
|
var _default = exports.default = HigherOrderBSRStreetPlzSelector;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HouseNumberSelectField.d.ts","sourceRoot":"","sources":["../../../src/items/BSRAddressSelector/HouseNumberSelectField.jsx"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"HouseNumberSelectField.d.ts","sourceRoot":"","sources":["../../../src/items/BSRAddressSelector/HouseNumberSelectField.jsx"],"names":[],"mappings":";AAgBA,8EA+BC;;;;;;;;;;kBA/CiC,OAAO;sBACnB,YAAY"}
|
|
@@ -11,11 +11,14 @@ var _FormFieldWrapper = _interopRequireDefault(require("../FormFieldWrapper/Form
|
|
|
11
11
|
var _useGetPlaceHolderText = _interopRequireDefault(require("./useGetPlaceHolderText.js"));
|
|
12
12
|
var _TextInputField = _interopRequireDefault(require("../TextInputField/TextInputField.jsx"));
|
|
13
13
|
var _BSRAddressContext = require("./BSRAddressContext.js");
|
|
14
|
+
var _withAddressGroupValidation = _interopRequireWildcard(require("./withAddressGroupValidation.jsx"));
|
|
14
15
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
15
16
|
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); }
|
|
16
17
|
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; }
|
|
17
18
|
// form-builder
|
|
18
19
|
|
|
20
|
+
const GroupValidatedTextInputField = (0, _withAddressGroupValidation.default)(_TextInputField.default, _withAddressGroupValidation.ADDRESS_FIELD_HOUSE_NUMBER);
|
|
21
|
+
|
|
19
22
|
// wrap the field label, error message help text and more
|
|
20
23
|
const WrappedHouseNumberSelectField = props => {
|
|
21
24
|
const {
|
|
@@ -26,9 +29,10 @@ const WrappedHouseNumberSelectField = props => {
|
|
|
26
29
|
const placeHolderConfig = props.config.placeholder || placeHolderI18nKey;
|
|
27
30
|
const placeholder = placeHolderConfig && placeHolderI18nKey !== placeHolderConfig ? placeHolderConfig : placeHolderI18n;
|
|
28
31
|
|
|
29
|
-
//
|
|
32
|
+
// Kontrollseite: Hausnummer wie im Formular ausgeben, auch wenn die Eingabe nach der
|
|
33
|
+
// Adressübernahme ausgeblendet ist
|
|
30
34
|
if (props.config?.reviewMode) {
|
|
31
|
-
return
|
|
35
|
+
return /*#__PURE__*/_react.default.createElement(_FormFieldWrapper.default, props, /*#__PURE__*/_react.default.createElement(_TextInputField.default, props));
|
|
32
36
|
}
|
|
33
37
|
if (dontShowSelector) {
|
|
34
38
|
return null;
|
|
@@ -37,7 +41,7 @@ const WrappedHouseNumberSelectField = props => {
|
|
|
37
41
|
props.config.inputProps = props.config.inputProps || {};
|
|
38
42
|
props.config.inputProps.placeholder = placeholder;
|
|
39
43
|
}
|
|
40
|
-
return /*#__PURE__*/_react.default.createElement(_FormFieldWrapper.default, props, /*#__PURE__*/_react.default.createElement(
|
|
44
|
+
return /*#__PURE__*/_react.default.createElement(_FormFieldWrapper.default, props, /*#__PURE__*/_react.default.createElement(GroupValidatedTextInputField, props));
|
|
41
45
|
};
|
|
42
46
|
|
|
43
47
|
// PropTypes
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export const ADDRESS_FIELD_STREET: "street";
|
|
2
|
+
export const ADDRESS_FIELD_HOUSE_NUMBER: "houseNumber";
|
|
3
|
+
export default withAddressGroupValidation;
|
|
4
|
+
/**
|
|
5
|
+
* Zeigt den Fehler des groupKey (z.B. Pflichtfeld) an dem Feld, das für die vollständige
|
|
6
|
+
* Adresse noch fehlt: ohne Straße an der Straße, sonst an der Hausnummer. Steht der
|
|
7
|
+
* Button "Adresse prüfen" bereit, fehlt nur noch die Bestätigung.
|
|
8
|
+
* Muss innerhalb des FormFieldWrapper stehen, damit es dessen Props überschreibt.
|
|
9
|
+
*/
|
|
10
|
+
declare function withAddressGroupValidation(FieldComponent: any, addressField: any): (props: any) => React.JSX.Element;
|
|
11
|
+
import React from 'react';
|
|
12
|
+
//# sourceMappingURL=withAddressGroupValidation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"withAddressGroupValidation.d.ts","sourceRoot":"","sources":["../../../src/items/BSRAddressSelector/withAddressGroupValidation.jsx"],"names":[],"mappings":"AASA,mCAAoC,QAAQ,CAAC;AAC7C,yCAA0C,aAAa,CAAC;;AAExD;;;;;GAKG;AAEH,sFAAsE,UAAK,uBA6B1E;kBA/CiC,OAAO"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = exports.ADDRESS_FIELD_STREET = exports.ADDRESS_FIELD_HOUSE_NUMBER = void 0;
|
|
7
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
8
|
+
var _reactI18next = require("react-i18next");
|
|
9
|
+
var _formBuilder = require("@pinuts/form-builder");
|
|
10
|
+
var _BSRAddressContext = require("./BSRAddressContext.js");
|
|
11
|
+
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); }
|
|
12
|
+
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; }
|
|
13
|
+
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); } /* eslint-disable react/prop-types */
|
|
14
|
+
const {
|
|
15
|
+
useFormikContext
|
|
16
|
+
} = _formBuilder.formik;
|
|
17
|
+
const ADDRESS_FIELD_STREET = exports.ADDRESS_FIELD_STREET = 'street';
|
|
18
|
+
const ADDRESS_FIELD_HOUSE_NUMBER = exports.ADDRESS_FIELD_HOUSE_NUMBER = 'houseNumber';
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Zeigt den Fehler des groupKey (z.B. Pflichtfeld) an dem Feld, das für die vollständige
|
|
22
|
+
* Adresse noch fehlt: ohne Straße an der Straße, sonst an der Hausnummer. Steht der
|
|
23
|
+
* Button "Adresse prüfen" bereit, fehlt nur noch die Bestätigung.
|
|
24
|
+
* Muss innerhalb des FormFieldWrapper stehen, damit es dessen Props überschreibt.
|
|
25
|
+
*/
|
|
26
|
+
// eslint-disable-next-line react/display-name
|
|
27
|
+
const withAddressGroupValidation = (FieldComponent, addressField) => props => {
|
|
28
|
+
const [t] = (0, _reactI18next.useTranslation)();
|
|
29
|
+
const {
|
|
30
|
+
isInvalid: isGroupInvalid,
|
|
31
|
+
validationMessage
|
|
32
|
+
} = (0, _react.useContext)(_BSRAddressContext.BSRAddressValidationContext);
|
|
33
|
+
const {
|
|
34
|
+
fieldKeys,
|
|
35
|
+
showNextBtn,
|
|
36
|
+
addressContext
|
|
37
|
+
} = (0, _react.useContext)(_BSRAddressContext.BSRAddressContext);
|
|
38
|
+
const {
|
|
39
|
+
values
|
|
40
|
+
} = useFormikContext();
|
|
41
|
+
const isStreetMissing = !values[fieldKeys?.streetFieldKey];
|
|
42
|
+
const showsGroupError = isGroupInvalid && (addressField === ADDRESS_FIELD_STREET ? isStreetMissing : !isStreetMissing);
|
|
43
|
+
if (!showsGroupError || props.isInvalid) {
|
|
44
|
+
return /*#__PURE__*/_react.default.createElement(FieldComponent, props);
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
// ariaAttributes leeren: withFieldGroup berechnet sie dann mit isInvalid neu,
|
|
48
|
+
// inkl. aria-describedby auf die eigene Fehlermeldung.
|
|
49
|
+
return /*#__PURE__*/_react.default.createElement(FieldComponent, _extends({}, props, {
|
|
50
|
+
isInvalid: true,
|
|
51
|
+
validationMessage: showNextBtn ? t('bsrAddressSelector.labels.checkAddressRequired', {
|
|
52
|
+
button: addressContext?.overwriteLabels?.checkAddress || t('bsrAddressSelector.labels.checkAddress')
|
|
53
|
+
}) : validationMessage,
|
|
54
|
+
ariaAttributes: undefined
|
|
55
|
+
}));
|
|
56
|
+
};
|
|
57
|
+
var _default = exports.default = withAddressGroupValidation;
|
|
@@ -8,6 +8,7 @@ declare namespace FieldsetWrapper {
|
|
|
8
8
|
let components: PropTypes.Validator<unknown[]>;
|
|
9
9
|
let config: PropTypes.Validator<NonNullable<PropTypes.InferProps<{
|
|
10
10
|
label: PropTypes.Validator<string>;
|
|
11
|
+
text: PropTypes.Requireable<string>;
|
|
11
12
|
helpText: PropTypes.Requireable<string>;
|
|
12
13
|
headingLevel: PropTypes.Requireable<string>;
|
|
13
14
|
className: PropTypes.Requireable<string>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FieldsetWrapper.d.ts","sourceRoot":"","sources":["../../../src/items/FieldsetWrapper/FieldsetWrapper.jsx"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"FieldsetWrapper.d.ts","sourceRoot":"","sources":["../../../src/items/FieldsetWrapper/FieldsetWrapper.jsx"],"names":[],"mappings":";AAWA;;;sBA2DC;;;;;;;;;;;;;kBAtE0C,OAAO;sBAC5B,YAAY"}
|
|
@@ -9,11 +9,16 @@ var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
|
9
9
|
var _uuid = require("uuid");
|
|
10
10
|
var _reactI18next = require("react-i18next");
|
|
11
11
|
var _formBuilder = require("@pinuts/form-builder");
|
|
12
|
+
var _ReviewLayoutContext = _interopRequireDefault(require("../../shared/FormWidget/ReviewLayoutContext.js"));
|
|
12
13
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
13
14
|
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
15
|
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
16
|
// FormBuilder
|
|
16
17
|
|
|
18
|
+
const reviewListLayout = {
|
|
19
|
+
active: true,
|
|
20
|
+
inList: true
|
|
21
|
+
};
|
|
17
22
|
const FieldsetWrapper = _ref => {
|
|
18
23
|
let {
|
|
19
24
|
config,
|
|
@@ -21,17 +26,39 @@ const FieldsetWrapper = _ref => {
|
|
|
21
26
|
} = _ref;
|
|
22
27
|
const {
|
|
23
28
|
label,
|
|
29
|
+
text,
|
|
24
30
|
helpText,
|
|
25
31
|
headingLevel = '4',
|
|
26
32
|
className = ''
|
|
27
33
|
} = config;
|
|
28
34
|
const [t] = (0, _reactI18next.useTranslation)();
|
|
35
|
+
const {
|
|
36
|
+
active: isReviewLayout
|
|
37
|
+
} = (0, _react.useContext)(_ReviewLayoutContext.default);
|
|
29
38
|
const formId = (0, _react.useMemo)(() => (0, _uuid.v4)().slice(0, 6), []);
|
|
30
39
|
const HeadingTag = `h${headingLevel}`;
|
|
31
40
|
// Doppelpunkte und HTML-Tags zerstören das i18n?
|
|
32
41
|
const usedLabel = label && !label.includes(':') && !label.includes('<') ? t(label) : label;
|
|
33
42
|
const usedHelpText = helpText && !helpText.includes(':') && !helpText.includes('<') ? t(helpText) : helpText;
|
|
34
43
|
const populatorFormId = (0, _react.useMemo)(() => `${formId}-${usedLabel?.replaceAll(' ', '')}-fieldset-wrapper`, [usedLabel, formId]);
|
|
44
|
+
|
|
45
|
+
// Kontrollseite: Abschnitt mit Überschrift (der UM liefert sie als `text`) und einer
|
|
46
|
+
// Definitionsliste für alle Felder, statt einer Liste je Feld
|
|
47
|
+
if (isReviewLayout) {
|
|
48
|
+
const heading = usedLabel || text;
|
|
49
|
+
return /*#__PURE__*/_react.default.createElement("section", {
|
|
50
|
+
className: "pi-review-section"
|
|
51
|
+
}, heading && /*#__PURE__*/_react.default.createElement("h3", {
|
|
52
|
+
className: "pi-review-section-heading"
|
|
53
|
+
}, heading), /*#__PURE__*/_react.default.createElement("dl", {
|
|
54
|
+
className: "pi-review-list"
|
|
55
|
+
}, /*#__PURE__*/_react.default.createElement(_ReviewLayoutContext.default.Provider, {
|
|
56
|
+
value: reviewListLayout
|
|
57
|
+
}, /*#__PURE__*/_react.default.createElement(_formBuilder.ComponentPopulator, {
|
|
58
|
+
formId: populatorFormId,
|
|
59
|
+
components: components
|
|
60
|
+
}))));
|
|
61
|
+
}
|
|
35
62
|
return /*#__PURE__*/_react.default.createElement("fieldset", {
|
|
36
63
|
className: `my-3 ${className}`
|
|
37
64
|
}, usedLabel && /*#__PURE__*/_react.default.createElement("legend", null, /*#__PURE__*/_react.default.createElement(HeadingTag, {
|
|
@@ -47,6 +74,7 @@ FieldsetWrapper.propTypes = {
|
|
|
47
74
|
components: _propTypes.default.instanceOf(Array).isRequired,
|
|
48
75
|
config: _propTypes.default.shape({
|
|
49
76
|
label: _propTypes.default.string.isRequired,
|
|
77
|
+
text: _propTypes.default.string,
|
|
50
78
|
helpText: _propTypes.default.string,
|
|
51
79
|
headingLevel: _propTypes.default.string,
|
|
52
80
|
className: _propTypes.default.string
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FileUploadField.d.ts","sourceRoot":"","sources":["../../../src/items/FileUploadField/FileUploadField.jsx"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"FileUploadField.d.ts","sourceRoot":"","sources":["../../../src/items/FileUploadField/FileUploadField.jsx"],"names":[],"mappings":";AAgVA,4EAAmE;kBAhVL,OAAO"}
|
|
@@ -162,7 +162,8 @@ const FileUploadField = _ref => {
|
|
|
162
162
|
(0, _uploadedFileStore.rememberUploadedFile)(fieldKey, {
|
|
163
163
|
ticket: uploadedFile.ticket,
|
|
164
164
|
name: uploadedFile.name || pendingFile.name,
|
|
165
|
-
size: uploadedFile.size ?? pendingFile.size
|
|
165
|
+
size: uploadedFile.size ?? pendingFile.size,
|
|
166
|
+
previewUrl: (0, _uploadedFileStore.createPreviewUrl)(pendingFile)
|
|
166
167
|
});
|
|
167
168
|
onChange([...tickets, uploadedFile.ticket]);
|
|
168
169
|
announce('', t('bsrItems.fileUploadField.uploadSuccessful', {
|
|
@@ -217,7 +218,19 @@ const FileUploadField = _ref => {
|
|
|
217
218
|
}
|
|
218
219
|
if (reviewMode) {
|
|
219
220
|
return /*#__PURE__*/_react.default.createElement(_ReviewValueList.default, {
|
|
220
|
-
items: files.map(file =>
|
|
221
|
+
items: files.map(file => {
|
|
222
|
+
const label = `${file.name} (${(0, _formatFileSize.formatFileSize)(file.size)})`;
|
|
223
|
+
|
|
224
|
+
// Neuer Tab, sonst geht der Formularstand verloren
|
|
225
|
+
return file.previewUrl ? /*#__PURE__*/_react.default.createElement("a", {
|
|
226
|
+
href: file.previewUrl,
|
|
227
|
+
target: "_blank",
|
|
228
|
+
rel: "noopener noreferrer",
|
|
229
|
+
"aria-label": t('bsrItems.fileUploadField.openFileAria', {
|
|
230
|
+
label
|
|
231
|
+
})
|
|
232
|
+
}, label) : label;
|
|
233
|
+
})
|
|
221
234
|
});
|
|
222
235
|
}
|
|
223
236
|
return /*#__PURE__*/_react.default.createElement("div", {
|
|
@@ -247,7 +260,7 @@ const FileUploadField = _ref => {
|
|
|
247
260
|
filename: pendingFile.name
|
|
248
261
|
})), /*#__PURE__*/_react.default.createElement("button", {
|
|
249
262
|
type: "button",
|
|
250
|
-
className: getClassNames(['btn', 'btn-
|
|
263
|
+
className: getClassNames(['btn', 'btn-brick', _FileUploadFieldModule.default.uploadPendingButton]),
|
|
251
264
|
onClick: uploadPendingFile,
|
|
252
265
|
disabled: isUploading
|
|
253
266
|
}, t(uploadBtnText))), errorMsg && /*#__PURE__*/_react.default.createElement("div", {
|
|
@@ -264,6 +277,9 @@ const FileUploadField = _ref => {
|
|
|
264
277
|
FileUploadField.propTypes = {
|
|
265
278
|
..._FormFieldChildPropTypes.default
|
|
266
279
|
};
|
|
280
|
+
FileUploadField.formFieldConfig = {
|
|
281
|
+
infoNextToLabel: true
|
|
282
|
+
};
|
|
267
283
|
const HigherOrderFileUploadField = (0, _withFieldGroup.default)(FileUploadField);
|
|
268
284
|
const WrappedFileUploadField = props => /*#__PURE__*/_react.default.createElement(_FormFieldWrapper.default, props, /*#__PURE__*/_react.default.createElement(HigherOrderFileUploadField, props));
|
|
269
285
|
(0, _formBuilder.registerComponent)('FileUploadField', WrappedFileUploadField);
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
export function rememberUploadedFile(fieldKey: any, file: any): void;
|
|
2
2
|
export function forgetUploadedFile(fieldKey: any, ticket: any): void;
|
|
3
|
+
export function createPreviewUrl(file: any): string;
|
|
3
4
|
export function getUploadedFile(fieldKey: any, ticket: any): any;
|
|
4
5
|
//# sourceMappingURL=uploadedFileStore.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"uploadedFileStore.d.ts","sourceRoot":"","sources":["../../../src/items/FileUploadField/uploadedFileStore.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"uploadedFileStore.d.ts","sourceRoot":"","sources":["../../../src/items/FileUploadField/uploadedFileStore.js"],"names":[],"mappings":"AAgBO,qEAEN;AAEM,qEAMN;AAEM,oDAIN;AAEM,iEACiC"}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.rememberUploadedFile = exports.getUploadedFile = exports.forgetUploadedFile = void 0;
|
|
6
|
+
exports.rememberUploadedFile = exports.getUploadedFile = exports.forgetUploadedFile = exports.createPreviewUrl = void 0;
|
|
7
7
|
/**
|
|
8
8
|
* Der Formularwert eines FileUploadField ist nur die Liste der Ticket-Ids, die der
|
|
9
9
|
* Server beim Upload zurückgibt - Name und Größe der Datei stehen nicht darin.
|
|
@@ -12,6 +12,9 @@ exports.rememberUploadedFile = exports.getUploadedFile = exports.forgetUploadedF
|
|
|
12
12
|
*
|
|
13
13
|
* Lebensdauer ist der Seitenaufruf: nach einem Reload sind die Metadaten weg, die
|
|
14
14
|
* Tickets im Formularwert bleiben gültig.
|
|
15
|
+
*
|
|
16
|
+
* previewUrl: lokale Objekt-URL der hochgeladenen Datei für den Link auf der Kontrollseite;
|
|
17
|
+
* der Server bietet für Tickets keinen Abruf an.
|
|
15
18
|
*/
|
|
16
19
|
const uploadedFiles = new Map();
|
|
17
20
|
const storeKey = (fieldKey, ticket) => `${fieldKey}:${ticket}`;
|
|
@@ -20,9 +23,15 @@ const rememberUploadedFile = (fieldKey, file) => {
|
|
|
20
23
|
};
|
|
21
24
|
exports.rememberUploadedFile = rememberUploadedFile;
|
|
22
25
|
const forgetUploadedFile = (fieldKey, ticket) => {
|
|
26
|
+
const previewUrl = uploadedFiles.get(storeKey(fieldKey, ticket))?.previewUrl;
|
|
27
|
+
if (previewUrl) {
|
|
28
|
+
URL.revokeObjectURL(previewUrl);
|
|
29
|
+
}
|
|
23
30
|
uploadedFiles.delete(storeKey(fieldKey, ticket));
|
|
24
31
|
};
|
|
25
32
|
exports.forgetUploadedFile = forgetUploadedFile;
|
|
33
|
+
const createPreviewUrl = file => typeof URL !== 'undefined' && typeof URL.createObjectURL === 'function' ? URL.createObjectURL(file) : undefined;
|
|
34
|
+
exports.createPreviewUrl = createPreviewUrl;
|
|
26
35
|
const getUploadedFile = (fieldKey, ticket) => uploadedFiles.get(storeKey(fieldKey, ticket)) || {
|
|
27
36
|
ticket,
|
|
28
37
|
name: ticket,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BSRGridColumn.d.ts","sourceRoot":"","sources":["../../../src/items/Grid/BSRGridColumn.jsx"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"BSRGridColumn.d.ts","sourceRoot":"","sources":["../../../src/items/Grid/BSRGridColumn.jsx"],"names":[],"mappings":";AAMA;;;sBAeC;;;;;;;;;kBArBiC,OAAO;sBACnB,YAAY"}
|
|
@@ -4,15 +4,29 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
|
-
var _react =
|
|
7
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
8
8
|
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
9
9
|
var _formBuilder = require("@pinuts/form-builder");
|
|
10
|
+
var _ReviewLayoutContext = _interopRequireDefault(require("../../shared/FormWidget/ReviewLayoutContext.js"));
|
|
10
11
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
12
|
+
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); }
|
|
13
|
+
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; }
|
|
11
14
|
const BSRGridColumn = _ref => {
|
|
12
15
|
let {
|
|
13
16
|
config = {},
|
|
14
17
|
components
|
|
15
18
|
} = _ref;
|
|
19
|
+
const {
|
|
20
|
+
active: isReviewLayout
|
|
21
|
+
} = (0, _react.useContext)(_ReviewLayoutContext.default);
|
|
22
|
+
|
|
23
|
+
// Kontrollseite: einspaltige Liste statt Formular-Raster
|
|
24
|
+
if (isReviewLayout) {
|
|
25
|
+
return components ? /*#__PURE__*/_react.default.createElement(_formBuilder.ComponentPopulator, {
|
|
26
|
+
components: components,
|
|
27
|
+
formId: ''
|
|
28
|
+
}) : null;
|
|
29
|
+
}
|
|
16
30
|
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("div", {
|
|
17
31
|
className: ['col', config.className].join(' ')
|
|
18
32
|
}, components && /*#__PURE__*/_react.default.createElement(_formBuilder.ComponentPopulator, {
|