@intuitionrobotics/thunderstorm
Version:
40 lines • 1.8 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.MenuAndButton = void 0;
const React = require("react");
const BaseComponent_1 = require("../../core/BaseComponent");
const MenuModule_1 = require("./MenuModule");
const ts_common_1 = require("@intuitionrobotics/ts-common");
class MenuAndButton extends BaseComponent_1.BaseComponent {
constructor() {
super(...arguments);
this.ref = React.createRef();
this.state = {
isOpen: false,
over: false
};
this.__onMenuHide = (id) => {
if (this.props.id !== id)
return;
this.setState({ isOpen: false });
};
this.__onMenuDisplay = (menu) => {
if (this.props.id !== menu.id)
return;
this.setState({ isOpen: true });
};
this.open = () => {
if (!this.ref.current)
throw new ts_common_1.BadImplementationException("Could not find image reference");
new MenuModule_1.MenuBuilder(this.props.adapter, this.props.resolvePosition ? this.props.resolvePosition(this.ref.current) : (0, MenuModule_1.resolveRealPosition)(this.ref.current), this.props.css && this.props.css)
.setId(this.props.id)
.show();
};
}
render() {
return React.createElement("div", { className: 'clickable', onClick: this.open, style: { position: "relative" } },
React.createElement("div", { ref: this.ref, onMouseOver: e => this.setState({ over: true }), onMouseOut: e => this.setState({ over: false }) }, this.state.isOpen || this.state.over ? this.props.iconClosed : this.props.iconOpen));
}
}
exports.MenuAndButton = MenuAndButton;
//# sourceMappingURL=MenuAndButton.js.map