.sidebar { display: flex; flex-flow: column; } .sidebar__header { padding-right: #{6 / $base-font-size}rem; padding-left: #{19 / $base-font-size}rem; display: flex; justify-content: space-between; align-items: center; height: #{29 / $base-font-size}rem; min-height: #{29 / $base-font-size}rem; position: relative; } .sidebar__title { font-size: #{12 / $base-font-size}rem; display: inline-block; .sidebar--contracted & { display: none; } white-space: nowrap; overflow: hidden; } .sidebar__add { width: #{20 / $base-font-size}rem; height: #{20 / $base-font-size}rem; @include icon(); .sidebar--contracted & { display: none; } & svg { width: #{10 / $base-font-size}rem; } } .sidebar__file-list { @include themify() { border-color: getThemifyVariable('ide-border-color') } border-top: 1px solid; .sidebar--contracted & { display: none; } } .sidebar__root-item { position: relative; overflow-y: auto; flex: 1 1 auto; @include themify() { border-top: 1px solid map-get($theme-map, 'ide-border-color'); } .sidebar--contracted & { border: none; } } .sidebar__file-item { font-size: #{12 / $base-font-size}rem; cursor: pointer; position: relative; @include themify() { color: map-get($theme-map, 'primary-text-color'); // TODO get this to not affect parent, need to move it into JS &:hover:not(.sidebar__file-item--selected) > .file-item__content { background-color: map-get($theme-map, 'file-hover-color'); } } } .sidebar__file-item--folder { z-index: 1; } // to indent each row in the file tree // not sure how to do this in a better way // it won't work if the file tree is too nested .file-item__spacer { flex-shrink: 0; .sidebar__file-item & { width: #{19 / $base-font-size}rem; .sidebar__file-item & { width: #{39 / $base-font-size}rem; .sidebar__file-item & { width: #{59 / $base-font-size}rem; .sidebar__file-item & { width: #{79 / $base-font-size}rem; .sidebar__file-item & { width: #{99 / $base-font-size}rem; } } } } } } .file-item__content { display: flex; position: relative; .sidebar__file-item--selected > & { @include themify() { background-color: map-get($theme-map, 'file-selected-color'); } } .sidebar--contracted & { display: none; } } .sidebar__file-item-name { padding: #{4 / $base-font-size}rem 0; .sidebar__file-item--editing & { display: none; } &:before { position: absolute; top: 0; right: 0; bottom: 0; left: 0; content: ''; width: 100%; } @include themify() { color: map-get($theme-map, 'primary-text-color'); } } .sidebar__file-item-show-options { width: #{20 / $base-font-size}rem; height: #{20 / $base-font-size}rem; @include icon(); @include themify() { margin-right: #{5 / $base-font-size}rem; } display: none; position: absolute; right: 0; .sidebar__file-item--selected > .file-item__content & { display: inline-block; .sidebar--cant-edit & { display: none; } } .sidebar__file-item:hover > .file-item__content & { display: inline-block; .sidebar--cant-edit & { display: none; } } & svg { width: #{10 / $base-font-size}rem; } .sidebar__file-item--open > .file-item__content & { display: inline-block; } } .sidebar__file-item-options { @extend %dropdown-open-right; display: none; width: 100%; max-width: #{180 / $base-font-size}rem; .sidebar__file-item--open > .file-item__content & { display: flex; } } .sidebar__file-item-input { display: none; padding: 0; border: 0; width: calc(100% - #{63 / $base-font-size}rem); .sidebar__file-item--editing & { display: inline-block; } } .sidebar__expand, .sidebar__contract { @include icon(); position: absolute; top: #{2 / $base-font-size}rem; left: #{0 / $base-font-size}rem; height: #{25 / $base-font-size}rem; width: #{49 / $base-font-size}rem; border-radius: 2px; display: flex; justify-content: center; align-items: center; @include themify() { background-color: getThemifyVariable("toolbar-button-background-color"); & polygon, & path { fill: getThemifyVariable("toolbar-button-color"); } &:hover { background-color: getThemifyVariable("button-background-hover-color"); & polygon, & path { fill: getThemifyVariable("button-hover-color"); } } } } .sidebar__expand { display: none; &:hover { cursor: e-resize; } .sidebar--contracted & { display: flex; } } .sidebar__contract { &:hover { cursor: w-resize; } .sidebar--contracted & { display: none; } } .sidebar__icons { display: flex; align-items: center; height: 100%; .sidebar--cant-edit & { display: none; } } .sidebar__folder-icon { padding: #{4 / $base-font-size}rem 0; margin-right: #{5 / $base-font-size}rem; & path { @include themify() { fill: map-get($theme-map, 'primary-text-color'); } } & svg { width: #{10 / $base-font-size}rem; } } .sidebar__file-item-icon { padding: #{4 / $base-font-size}rem 0; margin-right: #{5 / $base-font-size}rem; & path { @include themify() { fill: getThemifyVariable('secondary-text-color'); } } & svg { height: #{10 / $base-font-size}rem; } background-color: transparent; border: none; } .sidebar__file-item-closed { @extend .sidebar__file-item-icon; display: none; .sidebar__file-item--closed & { display: inline-block; } } .sidebar__file-item-open { @extend .sidebar__file-item-icon; display: inline-block; .sidebar__file-item--closed & { display: none; } } .sidebar__file-item--closed .file-item__children { display: none; } .sidebar__project-options { @extend %dropdown-open-right; display: none; width: 100%; max-width: #{180 / $base-font-size}rem; .sidebar--project-options & { display: flex; } }