Dashboard sipadu mbip
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

AccordionToggle.js 1.3KB

123456789101112131415161718192021222324252627282930313233
  1. import _extends from "@babel/runtime/helpers/esm/extends";
  2. import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
  3. import React, { useContext } from 'react';
  4. import SelectableContext from './SelectableContext';
  5. import AccordionContext from './AccordionContext';
  6. export 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. onSelect(eventKeyPassed, e);
  16. if (onClick) onClick(e);
  17. };
  18. }
  19. var AccordionToggle = 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. var accordionOnClick = useAccordionToggle(eventKey, onClick);
  27. return React.createElement(Component, _extends({
  28. ref: ref,
  29. onClick: accordionOnClick
  30. }, props), children);
  31. });
  32. export default AccordionToggle;