@coreui/react-pro
Version:
UI Components Library for React.js
34 lines (30 loc) • 1.78 kB
JavaScript
var tslib_es6 = require('../../node_modules/tslib/tslib.es6.js');
var React = require('react');
var PropTypes = require('prop-types');
var index = require('../../node_modules/classnames/index.js');
var CAccordion = require('./CAccordion.js');
var CAccordionItemContext = React.createContext({});
var CAccordionItem = React.forwardRef(function (_a, ref) {
var children = _a.children, className = _a.className, itemKey = _a.itemKey, rest = tslib_es6.__rest(_a, ["children", "className", "itemKey"]);
var _itemKey = React.useRef(itemKey !== null && itemKey !== void 0 ? itemKey : Math.random().toString(36).slice(2, 11));
var _b = React.useContext(CAccordion.CAccordionContext), _activeItemKey = _b._activeItemKey, alwaysOpen = _b.alwaysOpen, setActiveKey = _b.setActiveKey;
var _c = React.useState(Boolean(_activeItemKey === _itemKey.current)), visible = _c[0], setVisible = _c[1];
React.useEffect(function () {
!alwaysOpen && visible && setActiveKey(_itemKey.current);
}, [visible]);
React.useEffect(function () {
setVisible(Boolean(_activeItemKey === _itemKey.current));
}, [_activeItemKey]);
return (React.createElement("div", tslib_es6.__assign({ className: index.default('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';
exports.CAccordionItem = CAccordionItem;
exports.CAccordionItemContext = CAccordionItemContext;
//# sourceMappingURL=CAccordionItem.js.map
;