UNPKG

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