Skip to content

Commit 937421e

Browse files
committed
[#1526] Add ellipsis to sidebar file names
1 parent db18ff4 commit 937421e

File tree

3 files changed

+65
-5
lines changed

3 files changed

+65
-5
lines changed

client/modules/IDE/components/FileNode.jsx

Lines changed: 42 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,47 @@ import FolderRightIcon from '../../../images/triangle-arrow-right.svg';
1010
import FolderDownIcon from '../../../images/triangle-arrow-down.svg';
1111
import FileIcon from '../../../images/file.svg';
1212

13+
function FileName({ name }) {
14+
const nameArray = name.split('.');
15+
if (nameArray.length > 1) {
16+
const extension = `.${nameArray[nameArray.length - 1]}`;
17+
const fileName = nameArray.slice(0, -1).join('');
18+
const firstLetter = fileName[0];
19+
const lastLetter = fileName[fileName.length - 1];
20+
const middleText = fileName.slice(1, -1);
21+
return (
22+
<span className="sidebar__file-item-name-text">
23+
<span>{firstLetter}</span>
24+
{fileName.length > 2 &&
25+
<span className="sidebar__file-item-name--ellipsis">{middleText}</span>
26+
}
27+
{fileName.length > 1 &&
28+
<span>{lastLetter}</span>
29+
}
30+
<span>{extension}</span>
31+
</span>
32+
);
33+
}
34+
const firstLetter = name[0];
35+
const lastLetter = name[name.length - 1];
36+
const middleText = name.slice(1, -1);
37+
return (
38+
<span className="sidebar__file-item-name-text">
39+
<span>{firstLetter}</span>
40+
{name.length > 2 &&
41+
<span className="sidebar__file-item-name--ellipsis">{middleText}</span>
42+
}
43+
{name.length > 1 &&
44+
<span>{lastLetter}</span>
45+
}
46+
</span>
47+
);
48+
}
49+
50+
FileName.propTypes = {
51+
name: PropTypes.string.isRequired
52+
};
53+
1354
export class FileNode extends React.Component {
1455
constructor(props) {
1556
super(props);
@@ -210,7 +251,7 @@ export class FileNode extends React.Component {
210251
className="sidebar__file-item-name"
211252
onClick={this.handleFileClick}
212253
>
213-
{this.state.updatedName}
254+
<FileName name={this.state.updatedName} />
214255
</button>
215256
<input
216257
data-testid="input"

client/modules/IDE/pages/IDEView.jsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -254,7 +254,7 @@ class IDEView extends React.Component {
254254
onChange={size => this.setState({ sidebarSize: size })}
255255
onDragFinished={this._handleSidebarPaneOnDragFinished}
256256
allowResize={this.props.ide.sidebarIsExpanded}
257-
minSize={20}
257+
minSize={125}
258258
>
259259
<Sidebar
260260
files={this.props.files}

client/styles/components/_sidebar.scss

Lines changed: 22 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -110,8 +110,28 @@
110110
}
111111
}
112112

113+
.sidebar__file-item-name--ellipsis {
114+
overflow-x: hidden;
115+
white-space: nowrap;
116+
text-overflow: ellipsis;
117+
min-width: #{15 / $base-font-size}rem;
118+
}
119+
120+
.sidebar__file-item-name-text {
121+
display: flex;
122+
width: 100%;
123+
overflow: hidden;
124+
min-width: #{50 / $base-font-size}rem;
125+
white-space: nowrap;
126+
text-align: left;
127+
}
128+
113129
.sidebar__file-item-name {
114130
padding: #{4 / $base-font-size}rem 0;
131+
padding-right: #{25 / $base-font-size}rem;
132+
font-family: Inconsolata, monospace;
133+
font-size: #{14 / $base-font-size}rem;
134+
overflow: hidden;
115135
.sidebar__file-item--editing & {
116136
display: none;
117137
}
@@ -174,6 +194,8 @@
174194
padding: 0;
175195
border: 0;
176196
width: calc(100% - #{63 / $base-font-size}rem);
197+
font-family: Inconsolata, monospace;
198+
font-size: #{14 / $base-font-size}rem;
177199
.sidebar__file-item--editing & {
178200
display: inline-block;
179201
}
@@ -254,9 +276,6 @@
254276
fill: getThemifyVariable('secondary-text-color');
255277
}
256278
}
257-
& svg {
258-
height: #{10 / $base-font-size}rem;
259-
}
260279
background-color: transparent;
261280
border: none;
262281
}

0 commit comments

Comments
 (0)