UNPKG

@helpscout/hsds-react

Version:

React component library for Help Scout's Design System

114 lines (86 loc) 3.85 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); exports.__esModule = true; exports.default = exports.ConditionFieldGroup = void 0; var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose")); var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")); var _inheritsLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/inheritsLoose")); var _react = _interopRequireDefault(require("react")); var _propTypes = _interopRequireDefault(require("prop-types")); var _getValidProps = _interopRequireDefault(require("@helpscout/react-utils/dist/getValidProps")); var _ConditionField = _interopRequireDefault(require("./ConditionField.AddButton")); var _jsxRuntime = require("react/jsx-runtime"); var ConditionFieldGroup = /*#__PURE__*/function (_React$PureComponent) { (0, _inheritsLoose2.default)(ConditionFieldGroup, _React$PureComponent); function ConditionFieldGroup() { return _React$PureComponent.apply(this, arguments) || this; } var _proto = ConditionFieldGroup.prototype; _proto.renderFields = function renderFields() { var _this = this; var children = this.props.children; return _react.default.Children.map(children, function (child, index) { return /*#__PURE__*/_react.default.cloneElement(child, (0, _extends2.default)({}, child.props, { isWithConjunction: index > 0, conjunction: _this.props.conjunction })); }); }; _proto.renderAddAction = function renderAddAction() { var _this$props = this.props, isAddEnabled = _this$props.isAddEnabled, canChangeConjunction = _this$props.canChangeConjunction, onAdd = _this$props.onAdd, conjunction = _this$props.conjunction, onConjunctionChange = _this$props.onConjunctionChange; if (!isAddEnabled && !canChangeConjunction) return null; return /*#__PURE__*/(0, _jsxRuntime.jsx)(_ConditionField.default, { onClick: onAdd, onTypeChanged: onConjunctionChange, type: conjunction, disabled: !isAddEnabled, selectableType: canChangeConjunction }); }; _proto.render = function render() { var _this$props2 = this.props, children = _this$props2.children, isAddEnabled = _this$props2.isAddEnabled, onAdd = _this$props2.onAdd, rest = (0, _objectWithoutPropertiesLoose2.default)(_this$props2, ["children", "isAddEnabled", "onAdd"]); return /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", (0, _extends2.default)({}, (0, _getValidProps.default)(rest), { children: [this.renderFields(), this.renderAddAction()] })); }; return ConditionFieldGroup; }(_react.default.PureComponent); exports.ConditionFieldGroup = ConditionFieldGroup; function noop() {} ConditionFieldGroup.defaultProps = { 'data-cy': 'ConditionFieldGroup', isAddEnabled: true, canChangeConjunction: false, onAdd: noop, onConjunctionChange: noop, conjunction: 'or' }; ConditionFieldGroup.propTypes = { /** Data attr for Cypress tests. */ 'data-cy': _propTypes.default.string, /** The className of the component. */ className: _propTypes.default.string, /** Retrieve the inner DOM node. */ innerRef: _propTypes.default.func, /** Renders an inner Condition.AddButton */ isAddEnabled: _propTypes.default.bool, /** Callback when the inner Condition.AddButton is clicked. */ onAdd: _propTypes.default.func, /** Currently used conjunction */ conjunction: _propTypes.default.oneOf(['and', 'or']), /** Callback when conjunction changed */ onConjunctionChange: _propTypes.default.func, /** Flag indicating if conjunction can change */ canChangeConjunction: _propTypes.default.bool }; var _default = ConditionFieldGroup; exports.default = _default;