@coreui/react-pro
Version:
UI Components Library for React.js
37 lines (33 loc) • 1.74 kB
JavaScript
;
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