UNPKG

1.43 kBJavaScriptView Raw
1import _extends from "@babel/runtime/helpers/esm/extends";
2import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
3import React, { useContext } from 'react';
4import SelectableContext from './SelectableContext';
5import AccordionContext from './AccordionContext';
6export function useAccordionToggle(eventKey, onClick) {
7 var contextEventKey = useContext(AccordionContext);
8 var onSelect = useContext(SelectableContext);
9 return function (e) {
10 /*
11 Compare the event key in context with the given event key.
12 If they are the same, then collapse the component.
13 */
14 var eventKeyPassed = eventKey === contextEventKey ? null : eventKey;
15 if (onSelect) onSelect(eventKeyPassed, e);
16 if (onClick) onClick(e);
17 };
18}
19var AccordionToggle = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
20 var _ref$as = _ref.as,
21 Component = _ref$as === void 0 ? 'button' : _ref$as,
22 children = _ref.children,
23 eventKey = _ref.eventKey,
24 onClick = _ref.onClick,
25 props = _objectWithoutPropertiesLoose(_ref, ["as", "children", "eventKey", "onClick"]);
26
27 var accordionOnClick = useAccordionToggle(eventKey, onClick);
28
29 if (Component === 'button') {
30 props.type = 'button';
31 }
32
33 return /*#__PURE__*/React.createElement(Component, _extends({
34 ref: ref,
35 onClick: accordionOnClick
36 }, props), children);
37});
38export default AccordionToggle;
\No newline at end of file