UNPKG

@yandex/ui

Version:

Yandex UI components

43 lines (42 loc) 2.15 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ButtonGroup = exports.cnButtonGroup = void 0; var tslib_1 = require("tslib"); var react_1 = tslib_1.__importStar(require("react")); var classname_1 = require("@bem-react/classname"); require("./ButtonGroup.css"); exports.cnButtonGroup = classname_1.cn('ButtonGroup'); /** * Компонент для объединения нескольких кнопок между собой * @param {ButtonGroupProps} props */ var ButtonGroup = function (props) { var _a = props.as, AsComponent = _a === void 0 ? 'div' : _a, children = props.children, className = props.className, disabled = props.disabled, onClick = props.onClick, vertical = props.vertical, selected = props.selected, pin = props.pin, divider = props.divider, gap = props.gap, restProps = tslib_1.__rest(props, ["as", "children", "className", "disabled", "onClick", "vertical", "selected", "pin", "divider", "gap"]); var clonedChildren = react_1.Children.map(children, function (child, index) { if (!react_1.isValidElement(child)) { return null; } return react_1.cloneElement(child, { disabled: disabled || child.props.disabled, checked: selected && selected.indexOf(index) !== -1, onClick: function (event) { if (disabled) { return; } if (child.props.onClick) { child.props.onClick(event); } if (onClick) { onClick(event, index); } }, }); }); return (react_1.default.createElement(AsComponent, tslib_1.__assign({}, restProps, { role: "group", className: exports.cnButtonGroup({ vertical: vertical, clear: Boolean(pin) }, [className]) }), !divider ? clonedChildren : clonedChildren.map(function (el, i) { return (react_1.default.createElement(react_1.default.Fragment, null, i > 0 && divider, el)); }))); }; exports.ButtonGroup = ButtonGroup; exports.ButtonGroup.displayName = exports.cnButtonGroup();