diff --git a/src/components/SideBar.js b/src/components/SideBar.js
index 7f0a375..c350e34 100644
--- a/src/components/SideBar.js
+++ b/src/components/SideBar.js
@@ -3,7 +3,7 @@ import Portal from 'preact-portal'
/** @jsx preact.h */
import FileExplorer from './FileExplorer'
-import Logo from './Logo'
+import ToggleShowButton from './ToggleShowButton'
import MetaBar from './MetaBar'
import SettingsBar from './SettingsBar'
@@ -112,15 +112,6 @@ export default class SideBar extends preact.Component {
)
}
- renderLogo() {
- const { loading, shouldShow } = this.state
- return (
-
-
-
- )
- }
-
renderContent() {
const { errorDueToPrivateRepo, metaData, treeData, showSettings } = this.state
return (
@@ -133,10 +124,12 @@ export default class SideBar extends preact.Component {
}
render() {
- const { shouldShow, showSettings, hasAccessToken } = this.state
+ const { shouldShow, showSettings, hasAccessToken, loading } = this.state
return (
- {this.renderLogo()}
+
+
+
{this.renderContent()}
+
+
+ )
+}
diff --git a/src/content.less b/src/content.less
index bebbbed..f16faf0 100644
--- a/src/content.less
+++ b/src/content.less
@@ -65,27 +65,45 @@
visibility: hidden;
}
-.@{name}-logo-wrapper {
- margin-right: 12px;
- padding-right: 12px;
- border-right: 1px solid #ffffffbf;
- height: 100%;
- line-height: 1;
+.@{name}-toggle-show-button-wrapper {
+ @animation-duration: .8s;
+ position: fixed;
+ top: 5px;
+ left: 0;
+ z-index: 2;
display: inline-flex;
+ justify-content: center;
align-items: center;
cursor: pointer;
-
- .action-icon {
- width: 12px;
- height: 24px;
- margin-right: 8px;
+ width: 30px;
+ height: 30px;
+ will-change: transform;
+ transform: translateX(225px);
+ transition: all @animation-duration ease;
+ border: 1px solid transparent;
+ @media screen and (min-width: @content-width) {
+ transform: translateX(~'calc((100vw - ' @content-width ~') / 2 + ' 225px ~')');
}
- .@{name}-logo {
- font-family: monospace;
- vertical-align: middle;
- cursor: pointer;
- -webkit-font-smoothing: antialiased;
+ &.collapsed {
+ border-color: #999999;
+ background: #f5f5f5;
+ border-radius: 3px;
+
+ @media screen and (max-width: @content-width) {
+ transform: translateX(5px);
+ }
+
+ .action-icon {
+ color: #0366d6;
+ }
+ }
+
+ .action-icon {
+ color: #333;
+ width: 16px;
+ height: 20px;
+ transition: all @animation-duration ease;
}
}
@@ -259,15 +277,3 @@
}
}
}
-
-@keyframes rainbow {
- 0% {
- background-position: 9% 91%;
- }
- 50% {
- background-position: 91% 9%;
- }
- 100% {
- background-position: 9% 91%;
- }
-}
diff --git a/src/utils/DOMHelper.js b/src/utils/DOMHelper.js
index bb4df75..09fde50 100644
--- a/src/utils/DOMHelper.js
+++ b/src/utils/DOMHelper.js
@@ -24,17 +24,13 @@ function setBodyIndent(shouldShowGitako) {
function insertLogo() {
const logoSelector = '.gitako .gitako-logo'
const logoElement = document.querySelector(logoSelector)
- if (!logoElement) {
- const logoMountElement = document.createElement('div')
- logoMountElement.setAttribute('class', 'gitako-logo-mount-point')
- const headerSelector = 'header'
- const headerElement = document.querySelector(headerSelector)
- const headerContentWrapper = headerElement.children.item(0)
- const headerContents = headerContentWrapper.children.item(0)
- headerContents.insertBefore(logoMountElement, headerContents.children.item(0))
- return logoMountElement
+ if (logoElement) {
+ return logoElement
}
- return logoElement
+ const logoMountElement = document.createElement('div')
+ logoMountElement.setAttribute('class', 'gitako-logo-mount-point')
+ document.body.appendChild(logoMountElement)
+ return logoMountElement
}
/**