pouncejs
Version:
A collection of UI components from Panther labs
31 lines (28 loc) • 1.36 kB
JavaScript
import _extends from "@babel/runtime/helpers/extends";
import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/objectWithoutPropertiesLoose";
import React from 'react';
import { useComposedRefs, composeEventHandlers } from '@reach/utils';
import { usePopoverContext } from './Popover';
var PopoverTrigger = /*#__PURE__*/React.forwardRef(function PopoverTrigger(_ref, forwardedRef) {
var _ref$as = _ref.as,
Comp = _ref$as === void 0 ? 'button' : _ref$as,
onMouseDown = _ref.onMouseDown,
onKeyDown = _ref.onKeyDown,
rest = _objectWithoutPropertiesLoose(_ref, ["as", "onMouseDown", "onKeyDown"]);
// get the ref that we should store this trigger under
var _usePopoverContext = usePopoverContext(),
popoverId = _usePopoverContext.popoverId,
triggerRef = _usePopoverContext.triggerRef,
toggle = _usePopoverContext.toggle; // merge internal + passed prop together
var ref = useComposedRefs(triggerRef, forwardedRef);
return /*#__PURE__*/React.createElement(Comp, _extends({
ref: ref,
onMouseDown: composeEventHandlers(onMouseDown, toggle),
onKeyDown: composeEventHandlers(onKeyDown, function (_ref2) {
var key = _ref2.key;
return key === 'Enter' && toggle();
}),
"aria-describedby": popoverId
}, rest));
});
export default /*#__PURE__*/React.memo(PopoverTrigger);