Skip to content

Commit 18b6615

Browse files
committed
Allow collapsing sidebar, make sidebar have minimum size
1 parent 301bbe0 commit 18b6615

File tree

4 files changed

+78
-23
lines changed

4 files changed

+78
-23
lines changed

static/rustw.css

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -488,13 +488,26 @@ span#measure {
488488
display: flex;
489489
flex-direction: column;
490490
overflow: hidden;
491+
position: relative;
492+
min-width: 300px;
493+
}
494+
.div_sidebar.collapsed {
495+
flex: 0 0 20px;
496+
min-width: auto;
491497
}
492498
.div_side_tabbar {
493499
flex: 1;
494500
display: flex;
495501
flex-direction: column;
496502
overflow: hidden;
497503
}
504+
.a_side_collapsebtn {
505+
margin: 2px;
506+
position: absolute;
507+
}
508+
.div_sidebar.collapsed .div_side_tabbar {
509+
visibility: hidden;
510+
}
498511
.div_sidebar_tabs {
499512
display: flex;
500513
height: fit-content;

static/rustw.out.js

Lines changed: 25 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8416,10 +8416,28 @@ var Sidebar = exports.Sidebar = function (_React$Component) {
84168416

84178417
return _react2.default.createElement(
84188418
'div',
8419-
{ className: 'div_sidebar' },
8419+
{
8420+
className: "div_sidebar" + (this.state.collapsed ? " collapsed" : "")
8421+
},
8422+
_react2.default.createElement(
8423+
'a',
8424+
{
8425+
className: 'a_side_collapsebtn',
8426+
href: 'javascript:void(0)',
8427+
onClick: function onClick(_e) {
8428+
return _this2.setState({ collapsed: !_this2.state.collapsed });
8429+
}
8430+
},
8431+
this.state.collapsed ? "[+]" : "[-]"
8432+
),
84208433
_react2.default.createElement(
84218434
_reactTabs.Tabs,
8422-
{ selectedIndex: this.state.tabIndex, className: 'div_side_tabbar', selectedTabClassName: 'selected', onSelect: onSelect },
8435+
{
8436+
selectedIndex: this.state.tabIndex,
8437+
className: 'div_side_tabbar',
8438+
selectedTabClassName: 'selected',
8439+
onSelect: onSelect
8440+
},
84238441
_react2.default.createElement(
84248442
_reactTabs.TabList,
84258443
{ className: 'div_sidebar_tabs' },
@@ -8442,7 +8460,11 @@ var Sidebar = exports.Sidebar = function (_React$Component) {
84428460
_react2.default.createElement(
84438461
_reactTabs.TabPanel,
84448462
{ className: 'div_sidebar_main' },
8445-
_react2.default.createElement(_searchPanel.SearchPanel, _extends({ app: this.props.app }, this.props.search, { searchController: searchController }))
8463+
_react2.default.createElement(_searchPanel.SearchPanel, _extends({
8464+
app: this.props.app
8465+
}, this.props.search, {
8466+
searchController: searchController
8467+
}))
84468468
),
84478469
_react2.default.createElement(
84488470
_reactTabs.TabPanel,

static/rustw.out.js.map

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

static/sidebar.js

Lines changed: 39 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -48,25 +48,45 @@ export class Sidebar extends React.Component {
4848

4949
const onSelect = tabIndex => this.setState({ tabIndex });
5050

51-
return <div className="div_sidebar">
52-
<Tabs selectedIndex={this.state.tabIndex} className="div_side_tabbar" selectedTabClassName="selected" onSelect={onSelect}>
53-
<TabList className="div_sidebar_tabs">
54-
<Tab className="div_sidebar_tab">search</Tab>
55-
<Tab className="div_sidebar_tab">files</Tab>
56-
<Tab className="div_sidebar_tab">symbols</Tab>
57-
</TabList>
58-
<TabPanel className="div_sidebar_main">
59-
<SearchPanel app={this.props.app} {...this.props.search} searchController={searchController} />
60-
</TabPanel>
61-
<TabPanel className="div_sidebar_main">
62-
<TreePanel app={this.props.app} tree={this.props.fileTreeData} />
63-
</TabPanel>
64-
<TabPanel className="div_sidebar_main">
65-
<SymbolPanel app={this.props.app} symbols={this.props.symbols} />
66-
</TabPanel>
67-
</Tabs>
68-
<StatusBar status={this.props.status} />
69-
</div>;
51+
return (
52+
<div
53+
className={"div_sidebar" + (this.state.collapsed ? " collapsed" : "")}
54+
>
55+
<a
56+
className="a_side_collapsebtn"
57+
href="javascript:void(0)"
58+
onClick={_e => this.setState({ collapsed: !this.state.collapsed })}
59+
>
60+
{this.state.collapsed ? "[+]" : "[-]"}
61+
</a>
62+
<Tabs
63+
selectedIndex={this.state.tabIndex}
64+
className="div_side_tabbar"
65+
selectedTabClassName="selected"
66+
onSelect={onSelect}
67+
>
68+
<TabList className="div_sidebar_tabs">
69+
<Tab className="div_sidebar_tab">search</Tab>
70+
<Tab className="div_sidebar_tab">files</Tab>
71+
<Tab className="div_sidebar_tab">symbols</Tab>
72+
</TabList>
73+
<TabPanel className="div_sidebar_main">
74+
<SearchPanel
75+
app={this.props.app}
76+
{...this.props.search}
77+
searchController={searchController}
78+
/>
79+
</TabPanel>
80+
<TabPanel className="div_sidebar_main">
81+
<TreePanel app={this.props.app} tree={this.props.fileTreeData} />
82+
</TabPanel>
83+
<TabPanel className="div_sidebar_main">
84+
<SymbolPanel app={this.props.app} symbols={this.props.symbols} />
85+
</TabPanel>
86+
</Tabs>
87+
<StatusBar status={this.props.status} />
88+
</div>
89+
);
7090
}
7191
}
7292

0 commit comments

Comments
 (0)