"use strict"; import "phoenix_html"; import React from "react"; import ReactDOM from "react-dom"; import _ from "lodash"; import API from "../services/api"; class OpponentFinder extends React.Component { constructor(props) { super(props); this.state = { queryString: "", foundOpponents: [], selectedOpponent: "", selectedOpponentId: "", }; this.debouncedSearch = _.debounce(this.search.bind(this), 250); } search() { if (this.state.queryString != "") { API.findOpponent(this.state.queryString) .then((response) => { this.setState({ foundOpponents: response.data.opponents }); }); } else { this.setState({ foundOpponents: [] }); } } handleChange(event) { this.setState({ queryString: event.target.value }); this.debouncedSearch(); } handleFocus(event) { if (this.state.selectedOpponent) { this.setState({ queryString: "" }); } } handleBlur(event) { if (this.state.selectedOpponent) { this.setState({ queryString: this.state.selectedOpponent.name }); } } selectOpponent(event) { event.preventDefault(); const selectedOpponentId = event.target.attributes["data-id"].value; const selectedOpponent = _.find(this.state.foundOpponents, (opponent) => { return opponent.id == selectedOpponentId; }); this.setState({ selectedOpponentId, selectedOpponent, foundOpponents: [], queryString: selectedOpponent.name, }); } renderOpponents() { return _.map(this.state.foundOpponents, (opponent) => { return (