UNPKG

@primer/react

Version:

An implementation of GitHub's Primer Design System using React

48 lines (45 loc) 1.68 kB
import React from 'react'; import classes from './ButtonGroup.module.css.js'; import { clsx } from 'clsx'; import { useFocusZone } from '../hooks/useFocusZone.js'; import { useProvidedRefOrCreate } from '../hooks/useProvidedRefOrCreate.js'; import '@primer/behaviors/utils'; import { FocusKeys } from '@primer/behaviors'; import Box from '../Box/Box.js'; import { defaultSxProp } from '../utils/defaultSxProp.js'; function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); } const ButtonGroup = /*#__PURE__*/React.forwardRef(function ButtonGroup({ children, className, role, sx, ...rest }, forwardRef) { const buttons = React.Children.map(children, (child, index) => /*#__PURE__*/React.createElement("div", { key: index }, child)); const buttonRef = useProvidedRefOrCreate(forwardRef); useFocusZone({ containerRef: buttonRef, disabled: role !== 'toolbar', bindKeys: FocusKeys.ArrowHorizontal, focusOutBehavior: 'wrap' }); if (sx !== defaultSxProp) { return /*#__PURE__*/React.createElement(Box, _extends({ as: "div", className: clsx(className, classes.ButtonGroup), role: role }, rest, { sx: sx, ref: buttonRef }), buttons); } return /*#__PURE__*/React.createElement("div", _extends({ ref: buttonRef, className: clsx(className, classes.ButtonGroup), role: role }, rest), buttons); }); ButtonGroup.displayName = 'ButtonGroup'; export { ButtonGroup as default };