From 937421e90c50ad4dcdc3506818b73db97ef08285 Mon Sep 17 00:00:00 2001 From: Cassie Tarakajian Date: Thu, 30 Jul 2020 18:59:12 -0400 Subject: [PATCH 1/4] [#1526] Add ellipsis to sidebar file names --- client/modules/IDE/components/FileNode.jsx | 43 +++++++++++++++++++++- client/modules/IDE/pages/IDEView.jsx | 2 +- client/styles/components/_sidebar.scss | 25 +++++++++++-- 3 files changed, 65 insertions(+), 5 deletions(-) diff --git a/client/modules/IDE/components/FileNode.jsx b/client/modules/IDE/components/FileNode.jsx index 57238cf8..7bfaa5de 100644 --- a/client/modules/IDE/components/FileNode.jsx +++ b/client/modules/IDE/components/FileNode.jsx @@ -10,6 +10,47 @@ import FolderRightIcon from '../../../images/triangle-arrow-right.svg'; import FolderDownIcon from '../../../images/triangle-arrow-down.svg'; import FileIcon from '../../../images/file.svg'; +function FileName({ name }) { + const nameArray = name.split('.'); + if (nameArray.length > 1) { + const extension = `.${nameArray[nameArray.length - 1]}`; + const fileName = nameArray.slice(0, -1).join(''); + const firstLetter = fileName[0]; + const lastLetter = fileName[fileName.length - 1]; + const middleText = fileName.slice(1, -1); + return ( + + {firstLetter} + {fileName.length > 2 && + {middleText} + } + {fileName.length > 1 && + {lastLetter} + } + {extension} + + ); + } + const firstLetter = name[0]; + const lastLetter = name[name.length - 1]; + const middleText = name.slice(1, -1); + return ( + + {firstLetter} + {name.length > 2 && + {middleText} + } + {name.length > 1 && + {lastLetter} + } + + ); +} + +FileName.propTypes = { + name: PropTypes.string.isRequired +}; + export class FileNode extends React.Component { constructor(props) { super(props); @@ -210,7 +251,7 @@ export class FileNode extends React.Component { className="sidebar__file-item-name" onClick={this.handleFileClick} > - {this.state.updatedName} + this.setState({ sidebarSize: size })} onDragFinished={this._handleSidebarPaneOnDragFinished} allowResize={this.props.ide.sidebarIsExpanded} - minSize={20} + minSize={125} > Date: Mon, 3 Aug 2020 13:52:07 -0400 Subject: [PATCH 2/4] [#1526] Refactor FileName component - Create function parseFileName to separate a file name into first letter, last letter, middle, extension --- client/modules/IDE/components/FileNode.jsx | 52 ++++++++++++++-------- 1 file changed, 33 insertions(+), 19 deletions(-) diff --git a/client/modules/IDE/components/FileNode.jsx b/client/modules/IDE/components/FileNode.jsx index 7bfaa5de..4e54460b 100644 --- a/client/modules/IDE/components/FileNode.jsx +++ b/client/modules/IDE/components/FileNode.jsx @@ -10,39 +10,53 @@ import FolderRightIcon from '../../../images/triangle-arrow-right.svg'; import FolderDownIcon from '../../../images/triangle-arrow-down.svg'; import FileIcon from '../../../images/file.svg'; -function FileName({ name }) { +function parseFileName(name) { const nameArray = name.split('.'); if (nameArray.length > 1) { const extension = `.${nameArray[nameArray.length - 1]}`; - const fileName = nameArray.slice(0, -1).join(''); - const firstLetter = fileName[0]; - const lastLetter = fileName[fileName.length - 1]; - const middleText = fileName.slice(1, -1); - return ( - - {firstLetter} - {fileName.length > 2 && - {middleText} - } - {fileName.length > 1 && - {lastLetter} - } - {extension} - - ); + const baseName = nameArray.slice(0, -1).join(''); + const firstLetter = baseName[0]; + const lastLetter = baseName[baseName.length - 1]; + const middleText = baseName.slice(1, -1); + return { + baseName, + firstLetter, + lastLetter, + middleText, + extension + }; } const firstLetter = name[0]; const lastLetter = name[name.length - 1]; const middleText = name.slice(1, -1); + return { + baseName: name, + firstLetter, + lastLetter, + middleText + }; +} + +function FileName({ name }) { + const { + baseName, + firstLetter, + lastLetter, + middleText, + extension + } = parseFileName(name); return ( {firstLetter} - {name.length > 2 && + {baseName.length > 2 && {middleText} } - {name.length > 1 && + {baseName.length > 1 && {lastLetter} } + {extension && + {extension} + } ); } From a56740c7c4a3930ebfbf49583f4d6499849b4e52 Mon Sep 17 00:00:00 2001 From: Cassie Tarakajian Date: Wed, 5 Aug 2020 17:50:07 -0400 Subject: [PATCH 3/4] [#1532] Fix labels for files --- client/modules/IDE/components/FileNode.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/modules/IDE/components/FileNode.jsx b/client/modules/IDE/components/FileNode.jsx index 4e54460b..4f16387d 100644 --- a/client/modules/IDE/components/FileNode.jsx +++ b/client/modules/IDE/components/FileNode.jsx @@ -261,7 +261,7 @@ export class FileNode extends React.Component { } diff --git a/client/modules/IDE/components/FileNode.test.jsx b/client/modules/IDE/components/FileNode.test.jsx index cc913858..ddb8fec7 100644 --- a/client/modules/IDE/components/FileNode.test.jsx +++ b/client/modules/IDE/components/FileNode.test.jsx @@ -13,7 +13,7 @@ describe('', () => { }; const expectFileNameToBe = async (expectedName) => { - const name = screen.getByLabelText(/Name/i); + const name = screen.getByTestId('file-name'); await waitFor(() => within(name).queryByText(expectedName)); };