UNPKG

react-bootstrap

Version:

Bootstrap 5 components built with React

49 lines 1.66 kB
import classNames from 'classnames'; import * as React from 'react'; import { 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'; import { jsx as _jsx } from "react/jsx-runtime"; const Accordion = /*#__PURE__*/React.forwardRef((props, ref) => { const { // Need to define the default "as" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595 as: Component = 'div', activeKey, bsPrefix, className, onSelect, flush, alwaysOpen, ...controlledProps } = useUncontrolled(props, { activeKey: 'onSelect' }); const prefix = useBootstrapPrefix(bsPrefix, 'accordion'); const contextValue = useMemo(() => ({ activeEventKey: activeKey, onSelect, alwaysOpen }), [activeKey, onSelect, alwaysOpen]); return /*#__PURE__*/_jsx(AccordionContext.Provider, { value: contextValue, children: /*#__PURE__*/_jsx(Component, { ref: ref, ...controlledProps, className: classNames(className, prefix, flush && `${prefix}-flush`) }) }); }); Accordion.displayName = 'Accordion'; export default Object.assign(Accordion, { Button: AccordionButton, Collapse: AccordionCollapse, Item: AccordionItem, Header: AccordionHeader, Body: AccordionBody });