diff --git a/setup.cfg b/setup.cfg
index 7c13f5ec7..eef0e3778 100644
--- a/setup.cfg
+++ b/setup.cfg
@@ -45,7 +45,7 @@ combine_as_imports = true
include_trailing_comma = true
line_length = 88
known_first_party = superset
-known_third_party =alembic,apispec,backoff,bleach,cachelib,celery,click,colorama,contextlib2,croniter,cryptography,dateutil,flask,flask_appbuilder,flask_babel,flask_caching,flask_compress,flask_login,flask_migrate,flask_sqlalchemy,flask_talisman,flask_testing,flask_wtf,geohash,geopy,humanize,isodate,jinja2,markdown,markupsafe,marshmallow,msgpack,numpy,pandas,parsedatetime,pathlib2,polyline,prison,pyarrow,pyhive,pytz,retry,selenium,setuptools,simplejson,sphinx_rtd_theme,sqlalchemy,sqlalchemy_utils,sqlparse,werkzeug,wtforms,wtforms_json,yaml
+known_third_party =alembic,apispec,backoff,bleach,cachelib,celery,click,colorama,contextlib2,croniter,cryptography,dateutil,flask,flask_appbuilder,flask_babel,flask_caching,flask_compress,flask_login,flask_migrate,flask_sqlalchemy,flask_talisman,flask_testing,flask_wtf,geohash,geopy,humanize,isodate,jinja2,markdown,markupsafe,marshmallow,msgpack,numpy,pandas,parsedatetime,pathlib2,polyline,prison,pyarrow,pyhive,pytz,retry,selenium,setuptools,simplejson,slack,sphinx_rtd_theme,sqlalchemy,sqlalchemy_utils,sqlparse,werkzeug,wtforms,wtforms_json,yaml
multi_line_output = 3
order_by_type = false
diff --git a/superset-frontend/cypress-base/cypress/integration/sqllab/tabs.js b/superset-frontend/cypress-base/cypress/integration/sqllab/tabs.js
index 8dd5493da..f4a1f93eb 100644
--- a/superset-frontend/cypress-base/cypress/integration/sqllab/tabs.js
+++ b/superset-frontend/cypress-base/cypress/integration/sqllab/tabs.js
@@ -43,12 +43,10 @@ export default () => {
const initialTabCount = tabListA.length;
// open the tab dropdown to remove
- cy.get(
- '#a11y-query-editor-tabs > ul > li:first button:nth-child(2)',
- ).click();
+ cy.get('#a11y-query-editor-tabs > ul > li .dropdown-toggle').click();
// first item is close
- cy.get('#a11y-query-editor-tabs > ul > li:first ul li a').eq(0).click();
+ cy.get('#a11y-query-editor-tabs .close-btn a').click();
cy.get('#a11y-query-editor-tabs > ul > li').should(
'have.length',
diff --git a/superset-frontend/spec/javascripts/explore/components/QueryAndSaveBtns_spec.jsx b/superset-frontend/spec/javascripts/explore/components/QueryAndSaveBtns_spec.jsx
index ec9bfe992..21262653a 100644
--- a/superset-frontend/spec/javascripts/explore/components/QueryAndSaveBtns_spec.jsx
+++ b/superset-frontend/spec/javascripts/explore/components/QueryAndSaveBtns_spec.jsx
@@ -49,7 +49,7 @@ describe('QueryAndSaveButtons', () => {
});
it('renders buttons with correct text', () => {
- expect(wrapper.find(Button).contains(' Run Query')).toBe(true);
+ expect(wrapper.find(Button).contains('Run')).toBe(true);
expect(wrapper.find(Button).contains(' Save')).toBe(true);
});
diff --git a/superset-frontend/spec/javascripts/sqllab/SqlEditor_spec.jsx b/superset-frontend/spec/javascripts/sqllab/SqlEditor_spec.jsx
index 2c7b1e354..2ee46897f 100644
--- a/superset-frontend/spec/javascripts/sqllab/SqlEditor_spec.jsx
+++ b/superset-frontend/spec/javascripts/sqllab/SqlEditor_spec.jsx
@@ -109,7 +109,7 @@ describe('SqlEditor', () => {
it('allows toggling autocomplete', () => {
const wrapper = shallow();
expect(wrapper.find(AceEditorWrapper).props().autocomplete).toBe(true);
- wrapper.find(Checkbox).props().onChange();
+ wrapper.find('.autocomplete').simulate('click');
expect(wrapper.find(AceEditorWrapper).props().autocomplete).toBe(false);
});
});
diff --git a/superset-frontend/src/SqlLab/components/RunQueryActionButton.tsx b/superset-frontend/src/SqlLab/components/RunQueryActionButton.tsx
index 2d94c7360..d6c197487 100644
--- a/superset-frontend/src/SqlLab/components/RunQueryActionButton.tsx
+++ b/superset-frontend/src/SqlLab/components/RunQueryActionButton.tsx
@@ -42,7 +42,7 @@ const RunQueryActionButton = ({
stopQuery = NO_OP,
sql,
}: Props) => {
- const runBtnText = selectedText ? t('Run Selected Query') : t('Run Query');
+ const runBtnText = selectedText ? t('Run Selected Query') : t('Run');
const btnStyle = selectedText ? 'warning' : 'primary';
const shouldShowStopBtn =
!!queryState && ['running', 'pending'].indexOf(queryState) > -1;
@@ -68,7 +68,7 @@ const RunQueryActionButton = ({
tooltip={t('Run query asynchronously (Ctrl + ↵)')}
disabled={!sql.trim()}
>
- {runBtnText}
+ {runBtnText}
);
}
diff --git a/superset-frontend/src/SqlLab/components/SaveQuery.jsx b/superset-frontend/src/SqlLab/components/SaveQuery.jsx
index 41819805c..025326a08 100644
--- a/superset-frontend/src/SqlLab/components/SaveQuery.jsx
+++ b/superset-frontend/src/SqlLab/components/SaveQuery.jsx
@@ -172,7 +172,7 @@ class SaveQuery extends React.PureComponent {
className="toggleSave"
onClick={this.toggleSave}
>
- {t('Save Query')}
+ {t('Save')}
}
bsSize="small"
diff --git a/superset-frontend/src/SqlLab/components/ShareSqlLabQuery.jsx b/superset-frontend/src/SqlLab/components/ShareSqlLabQuery.jsx
index cc1e54874..f80ececbe 100644
--- a/superset-frontend/src/SqlLab/components/ShareSqlLabQuery.jsx
+++ b/superset-frontend/src/SqlLab/components/ShareSqlLabQuery.jsx
@@ -112,7 +112,7 @@ class ShareSqlLabQuery extends React.Component {
overlay={this.renderPopover()}
>
);
diff --git a/superset-frontend/src/SqlLab/components/SqlEditor.jsx b/superset-frontend/src/SqlLab/components/SqlEditor.jsx
index 4903abc77..7f1123c13 100644
--- a/superset-frontend/src/SqlLab/components/SqlEditor.jsx
+++ b/superset-frontend/src/SqlLab/components/SqlEditor.jsx
@@ -20,7 +20,6 @@ import React from 'react';
import { CSSTransition } from 'react-transition-group';
import PropTypes from 'prop-types';
import {
- Checkbox,
FormGroup,
InputGroup,
Form,
@@ -35,6 +34,7 @@ import debounce from 'lodash/debounce';
import throttle from 'lodash/throttle';
import Button from '../../components/Button';
+import Checkbox from '../../components/Checkbox';
import LimitControl from './LimitControl';
import TemplateParamsEditor from './TemplateParamsEditor';
import SouthPane from './SouthPane';
@@ -509,16 +509,13 @@ class SqlEditor extends React.PureComponent {
-
-
- {t('Autocomplete')}
-
-
+
{' '}
{
diff --git a/superset-frontend/src/SqlLab/components/TabbedSqlEditors.jsx b/superset-frontend/src/SqlLab/components/TabbedSqlEditors.jsx
index b4170b28b..dc7d5574a 100644
--- a/superset-frontend/src/SqlLab/components/TabbedSqlEditors.jsx
+++ b/superset-frontend/src/SqlLab/components/TabbedSqlEditors.jsx
@@ -288,46 +288,60 @@ class TabbedSqlEditors extends React.PureComponent {
>
);
const tabTitle = (
-
-
-
-
-
-
-
+ <>
+ {title}
+ {isSelected && (
+
+
+
+
+
+
+
+ )}
+ >
);
return (
diff --git a/superset-frontend/src/SqlLab/main.less b/superset-frontend/src/SqlLab/main.less
index a995a7416..e8047b3ca 100644
--- a/superset-frontend/src/SqlLab/main.less
+++ b/superset-frontend/src/SqlLab/main.less
@@ -259,7 +259,7 @@ div.Workspace {
.ddbtn-tab {
font-size: inherit;
- font-weight: @font-weight-bold;
+ color: black;
&:active {
background: none;
diff --git a/superset-frontend/src/components/ListView/LegacyFilters.tsx b/superset-frontend/src/components/ListView/LegacyFilters.tsx
index 3721a0d03..111af4b0a 100644
--- a/superset-frontend/src/components/ListView/LegacyFilters.tsx
+++ b/superset-frontend/src/components/ListView/LegacyFilters.tsx
@@ -30,6 +30,8 @@ import { Select } from 'src/components/Select';
import { Filters, InternalFilter, SelectOption } from './types';
import { extractInputValue, getDefaultFilterOperator } from './utils';
+const styleWidth100p = { width: '100%' };
+
export const FilterMenu = ({
filters,
internalFilters,
@@ -49,7 +51,7 @@ export const FilterMenu = ({
<>
{' '}
- {t('Filter List')}
+ {t('Filter')}
>
}
>
@@ -181,12 +183,13 @@ export const FilterInputs = ({
{internalFilters.length > 0 && (
<>
-
-
+
+