UNPKG

@guardian/threads

Version:
46 lines 1.73 kB
import { __extends } from "tslib"; import React, { Fragment } from 'react'; import { PopOver } from '../../PopOver/PopOver'; import { Menu } from '../../Menu/Menu'; var WithContextMenu = /** @class */ (function (_super) { __extends(WithContextMenu, _super); function WithContextMenu() { var _this = _super !== null && _super.apply(this, arguments) || this; _this.state = { isOpen: false, openAt: [0, 0], }; return _this; } WithContextMenu.prototype.setOpen = function (isOpen, ev) { this.setState({ isOpen: isOpen, }); if (ev) { this.setState({ openAt: [ev.clientX, ev.clientY], }); } }; WithContextMenu.prototype.render = function () { var _this = this; var _a = this.state, isOpen = _a.isOpen, openAt = _a.openAt; var _b = this.props, children = _b.children, menu = _b.menu, persistent = _b.persistent; if (!menu) return children; return (React.createElement(Fragment, null, React.cloneElement(children, { onContextMenu: function (ev) { ev.preventDefault(); _this.setOpen(true, ev); }, }), isOpen && (React.createElement(PopOver, { left: openAt[0], top: openAt[1], origin: 'left', persistent: persistent, onClose: function () { _this.setOpen(false, undefined); } }, React.createElement(Menu, { isPopover: true }, menu))))); }; return WithContextMenu; }(React.Component)); export { WithContextMenu }; //# sourceMappingURL=WithContextMenu.js.map