UNPKG

@pinuts/bsr-uikit-relaunch

Version:

BSR UI-KIT Relaunch

101 lines (99 loc) 4.93 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _react = _interopRequireWildcard(require("react")); var _propTypes = _interopRequireDefault(require("prop-types")); var _reactI18next = require("react-i18next"); var _uuid = require("uuid"); var _formBuilder = require("@pinuts/form-builder"); var _useValidationMessage = _interopRequireDefault(require("../../hooks/useValidationMessage.js")); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; } 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); } 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; } const { getIsFieldInvalid, getIsRequired } = _formBuilder.utils; const { useField, useFormikContext } = _formBuilder.formik; const mapPropsToChilren = (children, additionalProps) => _react.default.Children.map(children, child => { // Checking isValidElement is the safe way and avoids a // typescript error too. const formId = (0, _uuid.v4)().slice(0, 6); if (/*#__PURE__*/_react.default.isValidElement(child)) { return /*#__PURE__*/_react.default.cloneElement(child, { ...additionalProps }, /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, additionalProps?.components?.length ? /*#__PURE__*/_react.default.createElement(_formBuilder.ComponentPopulator, { formId: formId, components: additionalProps.components }) : '', child.children)); } return child; }); const FormFieldWrapper = _ref => { let { children, config = {}, ...otherProps } = _ref; const [t] = (0, _reactI18next.useTranslation)(); const [field, meta, helpers] = useField(config.ownValueKey || config.key || 'missingKey'); const { setFieldValue, values, errors, touched, setFieldTouched, initialErrors } = useFormikContext(); const errorsKey = errors[config.key]; const pTouched = touched[config.parentKey]; const isFieldInvalid = (0, _react.useMemo)(() => getIsFieldInvalid(field.value, meta.touched || pTouched, meta.error || errorsKey, meta.initialError, null // ohne submitCount ), [field.value, meta.touched, pTouched, meta.error, errorsKey, meta.initialError]); const someChildInvalid = (0, _react.useMemo)(() => otherProps.components?.some(component => getIsFieldInvalid(values[component?.config?.key], touched[component?.config?.key], errors[component?.config?.key], initialErrors?.[component?.config?.key], null // ohne submitCount )), [otherProps.components, values, touched, errors, initialErrors]); const isInvalid = (0, _react.useMemo)(() => isFieldInvalid || someChildInvalid, [isFieldInvalid, someChildInvalid]); const ariaAttributes = _formBuilder.formHooks.useGetAriaAttributes(config, isInvalid); const validationMessage = (0, _useValidationMessage.default)(t, meta.error || errors[config.key], config.errorMessages); // Für DateRangeWrapper -> muss required sein, wenn ein child required ist const isFieldRequired = _formBuilder.formHooks.useFormIsRequired(config); const isRequiredByChildren = (0, _react.useMemo)(() => otherProps.components?.some(component => getIsRequired(component?.config, values)), [otherProps.components, values]); const isRequired = (0, _react.useMemo)(() => isFieldRequired || isRequiredByChildren, [isFieldRequired, isRequiredByChildren]); const handleChange = (0, _react.useCallback)(newValue => { setFieldTouched(config.key); setFieldValue(config.key, newValue); }, [setFieldValue, setFieldTouched, config.key]); return mapPropsToChilren(children, { ...config, ...otherProps, field, meta, helpers, ariaAttributes, isRequired, isInvalid, onChange: handleChange, values, errors, touched, value: field?.value, validationMessage }); }; FormFieldWrapper.propTypes = { children: _propTypes.default.element, style: _propTypes.default.object, config: _propTypes.default.shape({ key: _propTypes.default.string, helpText: _propTypes.default.string, inputProps: _propTypes.default.shape({ key: _propTypes.default.string }) }) }; (0, _formBuilder.registerComponent)('FormFieldWrapper', FormFieldWrapper); var _default = exports.default = FormFieldWrapper;