UNPKG

@intuitionrobotics/thunderstorm

Version:
38 lines 1.62 kB
import * as React from "react"; import {} from "react"; import { BaseComponent } from "../../core/BaseComponent.js"; import { MenuBuilder, // resolveGenericPosition, resolveRealPosition } from "./MenuModule.js"; import { BadImplementationException } from "@intuitionrobotics/ts-common"; import { Adapter } from "../../components/adapter/Adapter.js"; import {} from "./PopupMenu.js"; export class MenuAndButton extends BaseComponent { ref = React.createRef(); state = { isOpen: false, over: false }; __onMenuHide = (id) => { if (this.props.id !== id) return; this.setState({ isOpen: false }); }; __onMenuDisplay = (menu) => { if (this.props.id !== menu.id) return; this.setState({ isOpen: true }); }; 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)); } open = () => { if (!this.ref.current) throw new BadImplementationException("Could not find image reference"); new MenuBuilder(this.props.adapter, this.props.resolvePosition ? this.props.resolvePosition(this.ref.current) : resolveRealPosition(this.ref.current), this.props.css && this.props.css) .setId(this.props.id) .show(); }; } //# sourceMappingURL=MenuAndButton.js.map