@themesberg/react-bootstrap
Version:
Unofficial release of the react-bootstrap library with Bootstrap 5 components built with React
48 lines (47 loc) • 2.06 kB
JavaScript
import _extends from "@babel/runtime/helpers/esm/extends";
import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
import classNames from 'classnames';
import React, { useMemo } from 'react';
import { useUncontrolled } from 'uncontrollable';
import { useBootstrapPrefix } from './ThemeProvider';
import AccordionBody from './AccordionBody';
import AccordionButton from './AccordionButton';
import AccordionCollapse from './AccordionCollapse';
import AccordionContext from './AccordionContext';
import AccordionHeader from './AccordionHeader';
import AccordionItem from './AccordionItem';
var Accordion = /*#__PURE__*/React.forwardRef(function (props, ref) {
var _useUncontrolled = useUncontrolled(props, {
activeKey: 'onSelect'
}),
_useUncontrolled$as = _useUncontrolled.as,
Component = _useUncontrolled$as === void 0 ? 'div' : _useUncontrolled$as,
activeKey = _useUncontrolled.activeKey,
bsPrefix = _useUncontrolled.bsPrefix,
children = _useUncontrolled.children,
className = _useUncontrolled.className,
onSelect = _useUncontrolled.onSelect,
flush = _useUncontrolled.flush,
controlledProps = _objectWithoutPropertiesLoose(_useUncontrolled, ["as", "activeKey", "bsPrefix", "children", "className", "onSelect", "flush"]);
var prefix = useBootstrapPrefix(bsPrefix, 'accordion');
var contextValue = useMemo(function () {
return {
activeEventKey: activeKey,
onSelect: onSelect
};
}, [activeKey, onSelect]);
return /*#__PURE__*/React.createElement(AccordionContext.Provider, {
value: contextValue
}, /*#__PURE__*/React.createElement(Component, _extends({
ref: ref
}, controlledProps, {
className: classNames(className, prefix, flush && prefix + "-flush")
}), children));
});
Accordion.displayName = 'Accordion';
Accordion.Button = AccordionButton;
Accordion.Collapse = AccordionCollapse;
Accordion.Item = AccordionItem;
Accordion.Header = AccordionHeader;
Accordion.Body = AccordionBody;
export default Accordion;