@yandex/ui
Version:
Yandex UI components
43 lines (42 loc) • 2.15 kB
JavaScript
;
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();