@sendbird/uikit-react
Version:
Sendbird UIKit for React: A feature-rich and customizable chat UI kit with messaging, channel management, and user authentication.
58 lines (51 loc) • 2.36 kB
JavaScript
;
Object.defineProperty(exports, '__esModule', { value: true });
var React = require('react');
var utils = require('../chunks/bundle-CkQrhwR6.js');
function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e : { default: e }; }
var React__default = /*#__PURE__*/_interopDefaultCompat(React);
var AccordionGroupContext = React.createContext({
openedListKeys: [],
addOpenedListKey: utils.noop,
removeOpenedListKey: utils.noop,
clearOpenedListKeys: utils.noop,
allowMultipleOpen: false,
});
var AccordionGroupProvider = function (_a) {
var className = _a.className, children = _a.children, _b = _a.allowMultipleOpen, allowMultipleOpen = _b === void 0 ? false : _b;
var _c = React.useState([]), openedListKeys = _c[0], setOpenedListKeys = _c[1];
var addOpenedListKey = function (key) {
setOpenedListKeys(function (prevList) {
if (!allowMultipleOpen) {
return [key];
}
prevList.push(key);
return prevList;
});
};
var removeOpenedListKey = function (key) {
setOpenedListKeys(function (prevList) { return prevList.filter(function (k) { return k !== key; }); });
};
var clearOpenedListKeys = function () {
setOpenedListKeys([]);
};
return (React__default.default.createElement("div", { className: "sendbird-accordion-group-provider ".concat(className) },
React__default.default.createElement(AccordionGroupContext.Provider, { value: {
openedListKeys: openedListKeys,
addOpenedListKey: addOpenedListKey,
removeOpenedListKey: removeOpenedListKey,
clearOpenedListKeys: clearOpenedListKeys,
allowMultipleOpen: allowMultipleOpen,
} }, children)));
};
var useAccordionGroupContext = function () {
var context = React.useContext(AccordionGroupContext);
if (!context)
throw new Error('No accordion group context available. Make sure you are rending <AccordionGroupContext />.');
return context;
};
exports.AccordionGroupContext = AccordionGroupContext;
exports.AccordionGroupProvider = AccordionGroupProvider;
exports.default = AccordionGroupProvider;
exports.useAccordionGroupContext = useAccordionGroupContext;
//# sourceMappingURL=AccordionGroup.js.map