@kiwicom/orbit-components
Version:
Orbit-components is a React component library which provides developers with the easiest possible way of building Kiwi.com’s products.
106 lines (84 loc) • 3.78 kB
JavaScript
"use strict";
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
var _react = _interopRequireWildcard(require("react"));
var _styledComponents = _interopRequireDefault(require("styled-components"));
var _Heading = _interopRequireDefault(require("../Heading"));
var _Stack = _interopRequireDefault(require("../Stack"));
var _consts = require("./consts");
var _FormFeedback = _interopRequireWildcard(require("../FormFeedback"));
var _defaultTheme = _interopRequireDefault(require("../defaultTheme"));
var _FilterWrapper = _interopRequireDefault(require("./components/FilterWrapper"));
var _randomID = _interopRequireDefault(require("../utils/randomID"));
var getHeadingSize = function getHeadingSize(size) {
var _SIZES;
var SIZES = (_SIZES = {}, (0, _defineProperty2.default)(_SIZES, _consts.LABEL_SIZES.NORMAL, "title3"), (0, _defineProperty2.default)(_SIZES, _consts.LABEL_SIZES.LARGE, "title2"), _SIZES);
return SIZES[size];
};
var StyledChoiceGroup = _styledComponents.default.div.withConfig({
displayName: "ChoiceGroup__StyledChoiceGroup",
componentId: "njp29m-0"
})(["width:100%;display:flex;flex-direction:column;", "{position:relative;margin-top:", ";top:initial;}"], _FormFeedback.StyledFormFeedback, function (_ref) {
var theme = _ref.theme;
return theme.orbit.spaceXSmall;
});
StyledChoiceGroup.defaultProps = {
theme: _defaultTheme.default
};
var ChoiceGroup = function ChoiceGroup(_ref2) {
var dataTest = _ref2.dataTest,
label = _ref2.label,
_ref2$labelSize = _ref2.labelSize,
labelSize = _ref2$labelSize === void 0 ? _consts.LABEL_SIZES.NORMAL : _ref2$labelSize,
_ref2$labelAs = _ref2.labelAs,
labelAs = _ref2$labelAs === void 0 ? _consts.LABEL_ELEMENTS.H4 : _ref2$labelAs,
error = _ref2.error,
children = _ref2.children,
filter = _ref2.filter,
onOnlySelection = _ref2.onOnlySelection,
onlySelectionText = _ref2.onlySelectionText,
onChange = _ref2.onChange;
var groupID = (0, _react.useMemo)(function () {
return (0, _randomID.default)("choiceGroupID");
}, []);
var handleChange = function handleChange(ev) {
ev.persist();
if (onChange) {
onChange(ev);
}
};
return /*#__PURE__*/_react.default.createElement(StyledChoiceGroup, {
"data-test": dataTest,
role: "group",
"aria-labelledby": groupID
}, label && /*#__PURE__*/_react.default.createElement(_Heading.default, {
id: groupID,
type: getHeadingSize(labelSize),
as: labelAs,
spaceAfter: "medium"
}, label), /*#__PURE__*/_react.default.createElement(_Stack.default, {
direction: "column",
spacing: filter ? "none" : "condensed"
}, _react.default.Children.map(children, function (child) {
return !filter ? /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.cloneElement(child, {
onChange: handleChange,
hasError: Boolean(error)
})) : /*#__PURE__*/_react.default.createElement(_FilterWrapper.default, {
child: child,
onOnlySelection: onOnlySelection,
onlySelectionText: onlySelectionText
}, /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.cloneElement(child, {
onChange: handleChange,
hasError: Boolean(error)
})));
})), /*#__PURE__*/_react.default.createElement(_FormFeedback.default, {
error: error
}));
};
var _default = ChoiceGroup;
exports.default = _default;