|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 |
- "use strict";
-
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
-
- exports.__esModule = true;
- exports.default = void 0;
-
- var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
-
- var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
-
- var _react = _interopRequireDefault(require("react"));
-
- var _invariant = _interopRequireDefault(require("invariant"));
-
- var _uncontrollable = require("uncontrollable");
-
- var _createChainedFunction = _interopRequireDefault(require("./createChainedFunction"));
-
- var _ElementChildren = require("./ElementChildren");
-
- var _ButtonGroup = _interopRequireDefault(require("./ButtonGroup"));
-
- var _ToggleButton = _interopRequireDefault(require("./ToggleButton"));
-
- var defaultProps = {
- type: 'radio'
- };
-
- var ToggleButtonGroup = _react.default.forwardRef(function (props, ref) {
- var _useUncontrolled = (0, _uncontrollable.useUncontrolled)(props, {
- value: 'onChange'
- }),
- children = _useUncontrolled.children,
- type = _useUncontrolled.type,
- name = _useUncontrolled.name,
- value = _useUncontrolled.value,
- onChange = _useUncontrolled.onChange,
- controlledProps = (0, _objectWithoutPropertiesLoose2.default)(_useUncontrolled, ["children", "type", "name", "value", "onChange"]);
-
- var getValues = function getValues() {
- return value == null ? [] : [].concat(value);
- };
-
- var handleToggle = function handleToggle(inputVal, event) {
- var values = getValues();
- var isActive = values.indexOf(inputVal) !== -1;
-
- if (type === 'radio') {
- if (!isActive) onChange(inputVal, event);
- return;
- }
-
- if (isActive) {
- onChange(values.filter(function (n) {
- return n !== inputVal;
- }), event);
- } else {
- onChange([].concat(values, [inputVal]), event);
- }
- };
-
- !(type !== 'radio' || !!name) ? process.env.NODE_ENV !== "production" ? (0, _invariant.default)(false, 'A `name` is required to group the toggle buttons when the `type` ' + 'is set to "radio"') : invariant(false) : void 0;
- return /*#__PURE__*/_react.default.createElement(_ButtonGroup.default, (0, _extends2.default)({}, controlledProps, {
- ref: ref,
- toggle: true
- }), (0, _ElementChildren.map)(children, function (child) {
- var values = getValues();
- var _child$props = child.props,
- childVal = _child$props.value,
- childOnChange = _child$props.onChange;
-
- var handler = function handler(e) {
- return handleToggle(childVal, e);
- };
-
- return _react.default.cloneElement(child, {
- type: type,
- name: child.name || name,
- checked: values.indexOf(childVal) !== -1,
- onChange: (0, _createChainedFunction.default)(childOnChange, handler)
- });
- }));
- });
-
- ToggleButtonGroup.defaultProps = defaultProps;
- ToggleButtonGroup.Button = _ToggleButton.default;
- var _default = ToggleButtonGroup;
- exports.default = _default;
- module.exports = exports["default"];
|