import PropTypes from 'prop-types';
import React from 'react';
import Popup from 'reactjs-popup';
// import Combobox from 'react-widgets/lib/Combobox';
import 'react-widgets/dist/css/react-widgets.css';
import './Popup.css';
/**
* @file LinkPopup
* Handling link modal
* @module LinkPopup
* @extends React.Component
*/
export default class LinkPopup extends React.Component {
constructor(props) {
super(props);
this.state = {
newLinkName: '',
targetEndpoint: '',
parameterName: '',
value: '',
};
}
/**
* Handle user input
* @method
* @param {Event} e - text input event
*/
handleEndpointLink = (e) => {
this.setState({
[e.target.name]: e.target.value,
});
};
/**
* Handle saving new link information
* @method
*/
handleSave = () => {
const { newLinkName, targetEndpoint, parameterName, value } = this.state;
const { onNewLink } = this.props;
onNewLink(newLinkName, targetEndpoint, parameterName, value);
};
render() {
const { openModal, handleClose, pathParts } = this.props;
const { newLinkName, targetEndpoint, parameterName, value } = this.state;
return (
<Popup open={openModal} closeOnDocumentClick onClose={handleClose}>
{(close) => (
<div className="modal">
<h3 className="header">
{' '}
Add Link From Endpoint
{` ${pathParts[0].replace(/%2F/gi, '/')}`}
</h3>
<div className="content">
<form>
<div style={{ float: 'left' }}>
<h4>Link Name:</h4>
<input
type="text"
name="newLinkName"
value={newLinkName}
onChange={this.handleEndpointLink}
/>
</div>
<div style={{ float: 'left' }}>
<h4>Target Endpoint</h4>
<input
type="text"
name="targetEndpoint"
value={targetEndpoint}
onChange={this.handleEndpointLink}
/>
</div>
<div style={{ clear: 'both' }}>
<h4>Parameter Name:</h4>
<input
type="text"
name="parameterName"
value={parameterName}
onChange={this.handleEndpointLink}
/>
</div>
<div style={{ clear: 'both' }}>
<h4>Value:</h4>
<input
type="text"
name="value"
value={value}
onChange={this.handleEndpointLink}
/>
</div>
</form>
</div>
<div className="actions">
<button
type="button"
className="btn save-btn"
onClick={() => {
this.handleSave();
close();
}}
>
Save
</button>
</div>
</div>
)}
</Popup>
);
}
}
LinkPopup.propTypes = {
pathParts: PropTypes.instanceOf(Array).isRequired,
openModal: PropTypes.bool.isRequired,
handleClose: PropTypes.func.isRequired,
onNewLink: PropTypes.func.isRequired,
};