UNPKG

@coreui/react-pro

Version:

UI Components Library for React.js

37 lines (33 loc) 1.74 kB
'use strict'; var tslib_es6 = require('../../node_modules/tslib/tslib.es6.js'); var React = require('react'); var PropTypes = require('prop-types'); var index = require('../../_virtual/index.js'); var CAccordionContext = require('./CAccordionContext.js'); var CAccordionItemContext = require('./CAccordionItemContext.js'); const CAccordionItem = React.forwardRef((_a, ref) => { var { children, className, id, itemKey } = _a, rest = tslib_es6.__rest(_a, ["children", "className", "id", "itemKey"]); const uniqueId = React.useId(); const _id = id !== null && id !== void 0 ? id : uniqueId; const _itemKey = React.useRef(itemKey !== null && itemKey !== void 0 ? itemKey : _id); const { _activeItemKey, alwaysOpen, setActiveKey } = React.useContext(CAccordionContext.CAccordionContext); const [visible, setVisible] = React.useState(Boolean(_activeItemKey === _itemKey.current)); React.useEffect(() => { if (!alwaysOpen && visible) { setActiveKey(_itemKey.current); } }, [visible]); React.useEffect(() => { setVisible(Boolean(_activeItemKey === _itemKey.current)); }, [_activeItemKey]); return (React.createElement("div", Object.assign({ className: index.default('accordion-item', className) }, rest, { ref: ref }), React.createElement(CAccordionItemContext.CAccordionItemContext.Provider, { value: { id: _id, setVisible, visible } }, children))); }); CAccordionItem.propTypes = { children: PropTypes.node, className: PropTypes.string, itemKey: PropTypes.oneOfType([PropTypes.number, PropTypes.string]), }; CAccordionItem.displayName = 'CAccordionItem'; exports.CAccordionItem = CAccordionItem; //# sourceMappingURL=CAccordionItem.js.map