@guardian/threads
Version:
46 lines • 1.73 kB
JavaScript
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