[explorev2] adding support for client side validators on controls (#1920)

* Adding support for client side validators on controls

* Applying validators to more fields

* Addressing comments
This commit is contained in:
Maxime Beauchemin
2017-01-12 09:21:17 -08:00
committed by GitHub
parent fc74fbeeaa
commit 470a6e9d76
20 changed files with 237 additions and 105 deletions

View File

@@ -1,5 +1,6 @@
import React, { PropTypes } from 'react';
import { Button, ButtonGroup } from 'react-bootstrap';
import { ButtonGroup, OverlayTrigger, Tooltip } from 'react-bootstrap';
import Button from '../../components/Button';
import classnames from 'classnames';
const propTypes = {
@@ -7,6 +8,7 @@ const propTypes = {
onQuery: PropTypes.func.isRequired,
onSave: PropTypes.func,
disabled: PropTypes.bool,
errorMessage: PropTypes.string,
};
const defaultProps = {
@@ -14,33 +16,49 @@ const defaultProps = {
disabled: false,
};
export default function QueryAndSaveBtns({ canAdd, onQuery, onSave, disabled }) {
export default function QueryAndSaveBtns({ canAdd, onQuery, onSave, disabled, errorMessage }) {
const saveClasses = classnames({
'disabled disabledButton': canAdd !== 'True',
});
const qryButtonStyle = errorMessage ? 'danger' : 'primary';
const qryButtonDisabled = errorMessage ? true : disabled;
return (
<ButtonGroup className="query-and-save">
<Button
id="query_button"
onClick={onQuery}
bsSize="small"
disabled={disabled}
bsStyle="primary"
>
<i className="fa fa-bolt" /> Query
</Button>
<Button
className={saveClasses}
bsSize="small"
data-target="#save_modal"
data-toggle="modal"
disabled={disabled}
onClick={onSave}
>
<i className="fa fa-plus-circle"></i> Save as
</Button>
</ButtonGroup>
<div>
<ButtonGroup className="query-and-save">
<Button
id="query_button"
onClick={onQuery}
disabled={qryButtonDisabled}
bsStyle={qryButtonStyle}
>
<i className="fa fa-bolt" /> Query
</Button>
<Button
className={saveClasses}
data-target="#save_modal"
data-toggle="modal"
disabled={qryButtonDisabled}
onClick={onSave}
>
<i className="fa fa-plus-circle"></i> Save as
</Button>
</ButtonGroup>
{errorMessage &&
<span>
{' '}
<OverlayTrigger
placement="right"
overlay={
<Tooltip id={'query-error-tooltip'}>
{errorMessage}
</Tooltip>}
>
<i className="fa fa-exclamation-circle text-danger fa-lg" />
</OverlayTrigger>
</span>
}
</div>
);
}