UNPKG

@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
"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;