UNPKG

@themesberg/react-bootstrap

Version:

Unofficial release of the react-bootstrap library with Bootstrap 5 components built with React

74 lines (55 loc) 2.67 kB
"use strict"; var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard"); var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); exports.__esModule = true; exports.useAccordionButton = useAccordionButton; exports.default = void 0; var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")); var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose")); var _react = _interopRequireWildcard(require("react")); var _classnames = _interopRequireDefault(require("classnames")); var _AccordionContext = _interopRequireDefault(require("./AccordionContext")); var _AccordionItemContext = _interopRequireDefault(require("./AccordionItemContext")); var _ThemeProvider = require("./ThemeProvider"); function useAccordionButton(eventKey, onClick) { var _useContext = (0, _react.useContext)(_AccordionContext.default), activeEventKey = _useContext.activeEventKey, onSelect = _useContext.onSelect; return function (e) { /* Compare the event key in context with the given event key. If they are the same, then collapse the component. */ var eventKeyPassed = eventKey === activeEventKey ? null : eventKey; if (onSelect) onSelect(eventKeyPassed, e); if (onClick) onClick(e); }; } var AccordionButton = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref) { var _ref$as = _ref.as, Component = _ref$as === void 0 ? 'button' : _ref$as, bsPrefix = _ref.bsPrefix, className = _ref.className, children = _ref.children, onClick = _ref.onClick, props = (0, _objectWithoutPropertiesLoose2.default)(_ref, ["as", "bsPrefix", "className", "children", "onClick"]); bsPrefix = (0, _ThemeProvider.useBootstrapPrefix)(bsPrefix, 'accordion-button'); var _useContext2 = (0, _react.useContext)(_AccordionItemContext.default), eventKey = _useContext2.eventKey; var accordionOnClick = useAccordionButton(eventKey, onClick); var _useContext3 = (0, _react.useContext)(_AccordionContext.default), activeEventKey = _useContext3.activeEventKey; if (Component === 'button') { props.type = 'button'; } return /*#__PURE__*/_react.default.createElement(Component, (0, _extends2.default)({ ref: ref, onClick: accordionOnClick }, props, { "aria-expanded": eventKey === activeEventKey, className: (0, _classnames.default)(className, bsPrefix, eventKey !== activeEventKey && 'collapsed') }), children); }); AccordionButton.displayName = 'AccordionButton'; var _default = AccordionButton; exports.default = _default;