@pinuts/bsr-uikit-relaunch
Version:
BSR UI-KIT Relaunch
101 lines (99 loc) • 4.93 kB
JavaScript
;
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;