UNPKG

@coreui/react-pro

Version:

UI Components Library for React.js

31 lines (28 loc) 1.72 kB
import { __rest, __assign } from '../../node_modules/tslib/tslib.es6.js'; import React, { createContext, forwardRef, useRef, useContext, useState, useEffect } from 'react'; import PropTypes from 'prop-types'; import classNames from '../../_virtual/index.js'; import { CAccordionContext } from './CAccordion.js'; var CAccordionItemContext = createContext({}); var CAccordionItem = forwardRef(function (_a, ref) { var children = _a.children, className = _a.className, itemKey = _a.itemKey, rest = __rest(_a, ["children", "className", "itemKey"]); var _itemKey = useRef(itemKey !== null && itemKey !== void 0 ? itemKey : Math.random().toString(36).slice(2, 11)); var _b = useContext(CAccordionContext), _activeItemKey = _b._activeItemKey, alwaysOpen = _b.alwaysOpen, setActiveKey = _b.setActiveKey; var _c = useState(Boolean(_activeItemKey === _itemKey.current)), visible = _c[0], setVisible = _c[1]; useEffect(function () { !alwaysOpen && visible && setActiveKey(_itemKey.current); }, [visible]); useEffect(function () { setVisible(Boolean(_activeItemKey === _itemKey.current)); }, [_activeItemKey]); return (React.createElement("div", __assign({ className: classNames('accordion-item', className) }, rest, { ref: ref }), React.createElement(CAccordionItemContext.Provider, { value: { setVisible: setVisible, visible: visible } }, children))); }); CAccordionItem.propTypes = { children: PropTypes.node, className: PropTypes.string, itemKey: PropTypes.oneOfType([PropTypes.number, PropTypes.string]), }; CAccordionItem.displayName = 'CAccordionItem'; export { CAccordionItem, CAccordionItemContext }; //# sourceMappingURL=CAccordionItem.js.map