fleet/frontend/components/forms/fields/InputFieldWithIcon/InputFieldWithIcon.jsx
Mike Stone 32f291a064 New query page (#254)
* Sidebar/Layout improvements

* New Query route and page

* Display text editor

* Gradient style longhand

* Slider button component

* Move new query section to component

* Kolide Ace theme

* Styles slider on page

* run query on CMD + Enter

* clicking hosts sends user to homepage

* SaveQueryForm component

* Splits NewQuery component JSX into multiple dumb components

* InputField component

* save query form

* new query

* styleguide

* moves all new query form logic to the new query form

* Kolide theme for osquery tables
2016-09-30 14:55:15 -04:00

54 lines
1.6 KiB
JavaScript

import React, { PropTypes } from 'react';
import radium from 'radium';
import componentStyles from './styles';
import InputField from '../InputField';
class InputFieldWithIcon extends InputField {
static propTypes = {
autofocus: PropTypes.bool,
error: PropTypes.string,
iconName: PropTypes.string,
name: PropTypes.string,
onChange: PropTypes.func,
placeholder: PropTypes.string,
style: PropTypes.object,
type: PropTypes.string,
};
renderHeading = () => {
const { error, placeholder } = this.props;
const { value } = this.state;
const { errorStyles, placeholderStyles } = componentStyles;
if (error) {
return <div style={errorStyles}>{error}</div>;
}
return <div style={placeholderStyles(value)}>{placeholder}</div>;
}
render () {
const { error, iconName, name, placeholder, style, type } = this.props;
const { containerStyles, iconStyles, iconErrorStyles, inputErrorStyles, inputStyles } = componentStyles;
const { value } = this.state;
const { onInputChange } = this;
return (
<div style={containerStyles}>
{this.renderHeading()}
<input
name={name}
onChange={onInputChange}
className="input-with-icon"
placeholder={placeholder}
ref={(r) => { this.input = r; }}
style={[inputStyles(value, type), inputErrorStyles(error), style]}
type={type}
/>
<i className={iconName} style={[iconStyles(value), iconErrorStyles(error), style]} />
</div>
);
}
}
export default radium(InputFieldWithIcon);