fleet/frontend/components/KolideAce/KolideAce.jsx
Mike Stone 39c9c6b0da Manage queries page (#762)
* renders ManageQueriesPage at /queries/manage

* Renames QueriesList components to ScheduledQueriesList components

* creates QueriesList component

* Adds side panel component to display query details

* Adds KolideAce editor to Query Details side panel

* Handle Edit Query button click

* Change text of the Delete Query button

* Show confirmation modal before deleting queries
2017-01-06 15:57:44 -05:00

79 lines
1.8 KiB
JavaScript

import React, { Component, PropTypes } from 'react';
import AceEditor from 'react-ace';
import classnames from 'classnames';
import 'brace/mode/sql';
import 'brace/ext/linking';
import './mode';
import './theme';
const baseClass = 'kolide-ace';
class KolideAce extends Component {
static propTypes = {
error: PropTypes.string,
fontSize: PropTypes.number,
name: PropTypes.string,
onChange: PropTypes.func,
onLoad: PropTypes.func,
value: PropTypes.string,
readOnly: PropTypes.bool,
showGutter: PropTypes.bool,
wrapEnabled: PropTypes.bool,
wrapperClassName: PropTypes.string,
};
static defaultProps = {
fontSize: 14,
name: 'query-editor',
showGutter: true,
wrapEnabled: false,
};
render () {
const {
error,
fontSize,
name,
onChange,
onLoad,
readOnly,
showGutter,
value,
wrapEnabled,
wrapperClassName,
} = this.props;
const wrapperClass = classnames(wrapperClassName, {
[`${baseClass}__wrapper--error`]: error,
});
return (
<div className={wrapperClass}>
<div className={`${baseClass}__error-field`}>{error}</div>
<AceEditor
enableBasicAutocompletion
enableLiveAutocompletion
editorProps={{ $blockScrolling: Infinity }}
fontSize={fontSize}
mode="kolide"
minLines={2}
maxLines={20}
name={name}
onChange={onChange}
onLoad={onLoad}
readOnly={readOnly}
setOptions={{ enableLinking: true }}
showGutter={showGutter}
showPrintMargin={false}
theme="kolide"
value={value}
width="100%"
wrapEnabled={wrapEnabled}
/>
</div>
);
}
}
export default KolideAce;