Skip to content

Commit

Permalink
feat: minor reorder SQL Lab Tab controls (apache#10257)
Browse files Browse the repository at this point in the history
  • Loading branch information
Grace Guo authored and auxten committed Nov 20, 2020
1 parent 71474ff commit 5ad44d0
Show file tree
Hide file tree
Showing 5 changed files with 68 additions and 64 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -40,10 +40,12 @@ describe('SqlLab query tabs', () => {
const initialTabCount = tabListA.length;

// open the tab dropdown to remove
cy.get('.SqlEditorTabs > ul > li .dropdown-toggle').click();
cy.get('.SqlEditorTabs > ul > li .dropdown-toggle').click({
force: true,
});

// first item is close
cy.get('.SqlEditorTabs .close-btn a').click();
cy.get('.SqlEditorTabs .ddbtn-tab .close').first().click();

cy.get('.SqlEditorTabs > ul > li').should(
'have.length',
Expand Down
14 changes: 0 additions & 14 deletions superset-frontend/spec/javascripts/sqllab/TabStatusIcon_spec.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -36,18 +36,4 @@ describe('TabStatusIcon', () => {
expect(wrapper.find('div.circle')).toHaveLength(1);
expect(wrapper.text()).toBe('');
});

it('renders a circle with an x when hovered', () => {
const { wrapper } = setup();
wrapper.simulate('mouseOver');
expect(wrapper.find('div.circle')).toHaveLength(1);
expect(wrapper.text()).toBe('×');
});

it('calls onClose from props when clicked', () => {
const { wrapper, onClose } = setup();
wrapper.simulate('click');
// eslint-disable-next-line no-unused-expressions
expect(onClose.calledOnce).toBe(true);
});
});
42 changes: 5 additions & 37 deletions superset-frontend/src/SqlLab/components/TabStatusIcon.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -19,42 +19,10 @@
import React from 'react';
import PropTypes from 'prop-types';

const propTypes = {
onClose: PropTypes.func.isRequired,
tabState: PropTypes.string.isRequired,
};

class TabStatusIcon extends React.Component {
constructor(props) {
super(props);
this.onMouseOver = this.onMouseOver.bind(this);
this.onMouseOut = this.onMouseOut.bind(this);

this.state = { isHovered: false };
}

onMouseOver() {
this.setState({ isHovered: true });
}

onMouseOut() {
this.setState({ isHovered: false });
}

render() {
return (
<span
onMouseOver={this.onMouseOver}
onMouseOut={this.onMouseOut}
onClick={this.props.onClose}
>
<div className={'circle ' + this.props.tabState}>
{this.state.isHovered ? '×' : null}
</div>
</span>
);
}
export default function TabStatusIcon(props) {
return <div className={'circle ' + props.tabState} />;
}

TabStatusIcon.propTypes = propTypes;
export default TabStatusIcon;
TabStatusIcon.propTypes = {
tabState: PropTypes.string.isRequired,
};
21 changes: 10 additions & 11 deletions superset-frontend/src/SqlLab/components/TabbedSqlEditors.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
*/
import React from 'react';
import PropTypes from 'prop-types';
import { MenuItem, SplitButton, Tab, Tabs } from 'react-bootstrap';
import { MenuItem, DropdownButton, Tab, Tabs } from 'react-bootstrap';
import { connect } from 'react-redux';
import { bindActionCreators } from 'redux';
import URI from 'urijs';
Expand Down Expand Up @@ -288,22 +288,20 @@ class TabbedSqlEditors extends React.PureComponent {

const title = (
<>
<TabStatusIcon
onClose={() => this.removeQueryEditor(qe)}
tabState={state}
/>{' '}
{qe.title}{' '}
{qe.title} <TabStatusIcon tabState={state} />{' '}
<span className="close" onClick={() => this.removeQueryEditor(qe)}>
{'×'}
</span>
</>
);
const tabTitle = (
<>
<span className="ddbtn-tab">{title}</span>
{isSelected && (
<SplitButton
<DropdownButton
bsSize="small"
id={'ddbtn-tab-' + i}
className="ddbtn-tab"
title="&nbsp;"
title={' '}
noCaret
>
<MenuItem
className="close-btn"
Expand Down Expand Up @@ -347,8 +345,9 @@ class TabbedSqlEditors extends React.PureComponent {
</div>
{t('Duplicate tab')}
</MenuItem>
</SplitButton>
</DropdownButton>
)}
<span className="ddbtn-tab">{title}</span>
</>
);
return (
Expand Down
49 changes: 49 additions & 0 deletions superset-frontend/src/SqlLab/main.less
Original file line number Diff line number Diff line change
Expand Up @@ -261,9 +261,56 @@ div.Workspace {
}
}

.dropdown.btn-group.btn-group-sm {
width: 3px;
height: 3px;
border-radius: 1.5px;
background: #bababa;
margin-right: 8px;
font-weight: @font-weight-normal;
display: inline-flex;

&:hover {
background-color: @primary-color;

&:before,
&:after {
background-color: @primary-color;
}
}

&:before,
&:after {
position: absolute;
content: ' ';
width: 3px;
height: 3px;
border-radius: 1.5px;
background-color: #bababa;
}
&:before {
transform: translateY(-5px);
}
&:after {
transform: translateY(5px);
}
}

ul.dropdown-menu {
margin-top: 10px;
}

.dropdown-toggle {
padding-top: 2px;
}

.close {
opacity: 1;
color: @almost-black;
position: relative;
top: -2px;
right: -4px;
}
}

.SqlEditor {
Expand Down Expand Up @@ -462,6 +509,8 @@ a.Link {
padding: 0;
border: none;
background: none;
position: relative;
top: 2px;

&:focus {
outline: 0;
Expand Down

0 comments on commit 5ad44d0

Please sign in to comment.