pouncejs
Version:
A collection of UI components from Panther labs
46 lines (33 loc) • 1.69 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
exports.__esModule = true;
exports.default = void 0;
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
var _react = _interopRequireDefault(require("react"));
var _utils = require("@reach/utils");
var _Popover = require("./Popover");
var PopoverTrigger = /*#__PURE__*/_react.default.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 = (0, _objectWithoutPropertiesLoose2.default)(_ref, ["as", "onMouseDown", "onKeyDown"]);
// get the ref that we should store this trigger under
var _usePopoverContext = (0, _Popover.usePopoverContext)(),
popoverId = _usePopoverContext.popoverId,
triggerRef = _usePopoverContext.triggerRef,
toggle = _usePopoverContext.toggle; // merge internal + passed prop together
var ref = (0, _utils.useComposedRefs)(triggerRef, forwardedRef);
return /*#__PURE__*/_react.default.createElement(Comp, (0, _extends2.default)({
ref: ref,
onMouseDown: (0, _utils.composeEventHandlers)(onMouseDown, toggle),
onKeyDown: (0, _utils.composeEventHandlers)(onKeyDown, function (_ref2) {
var key = _ref2.key;
return key === 'Enter' && toggle();
}),
"aria-describedby": popoverId
}, rest));
});
var _default = /*#__PURE__*/_react.default.memo(PopoverTrigger);
exports.default = _default;