Forked from
Stud.IP / Stud.IP
2647 commits behind the upstream repository.
-
Jan-Hendrik Willms authored
Closes #2051 Merge request studip/studip!1330
Jan-Hendrik Willms authoredCloses #2051 Merge request studip/studip!1330
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
responsive.scss 19.48 KiB
@use "../mixins/colors.scss";
@import "breakpoints";
@import "buttons";
@import "sidebar";
$header-bar-container-height: 40px;
$responsive-menu-width: 1.5 * $sidebar-width;
$sidebarIn: -15px;
$sidebarOut: -330px;
#responsive-toggle-desktop,
#responsive-toggle-fullscreen,
#responsive-toggle-focusmode {
display: none;
}
#responsive-toggle-fullscreen,
#responsive-toggle-focusmode {
img {
cursor: pointer;
}
}
#non-responsive-toggle-fullscreen {
margin-left: auto;
margin-right: 10px;
position: relative;
top: 2px;
img {
cursor: pointer;
}
}
#responsive-menu {
font-size: $font-size-base;
margin-top: 4px;
z-index: 1002;
.responsive-navigation-header {
display: flex;
padding: 2px 0;
.menu-closed {
cursor: pointer;
transform: rotate(0deg);
@media not prefers-reduced-motion {
transition: $transition-duration ease-in-out;
}
}
.menu-open {
cursor: pointer;
transform: rotate(90deg);
@media not prefers-reduced-motion {
transition: $transition-duration ease-in-out;
}
}
}
}
#responsive-navigation-button:not(.slide-enter-active):not(.slide-leave-active) {
cursor: pointer;
margin-left: -3px;
}
#responsive-navigation-items {
background-color: $base-color;
left: 0;
max-height: calc(100vh - $header-bar-container-height - 5px);
max-width: $responsive-menu-width;
overflow-y: auto;
padding-bottom: 5px;
position: fixed;
top: 40px;
/* Safari only */
@media not all and (min-resolution: .001dpcm) {
@supports (-webkit-appearance: none) {
top: 43px;
}
}
width: $responsive-menu-width;
@media not prefers-reduced-motion {
transition: all $transition-duration ease-in-out;
}
header {
background-image: url("#{$image-path}/sidebar/noicon-sidebar.png");
background-size: cover;
display: flex;
flex-wrap: wrap;
max-height: 250px;
overflow-y: auto;
padding: 10px;
.profile-info {
flex: auto;
font-size: $font-size-small;
padding: 20px;
position: relative;
.profile-pic {
width: 100%;
img,
svg {
cursor: pointer;
height: 50px;
width: 50px;
}
}
}
> div {
display: flex;
width: 100%;
.avatar-navigation {
flex: auto;
padding-left: 10px;
.navigation-item {
background-color: transparent;
&:hover {
background-color: $base-color-80;
}
}
}
}
.open-avatarmenu,
.close-avatarmenu {
button {
cursor: pointer;
position: relative;
top: calc(50% - 12px);
}
}
}
.main-navigation {
margin: 0 5px;
padding: 0 5px;
}
.navigation-item {
background-color: $base-color;
display: flex;
flex-wrap: wrap;
list-style-type: none;
margin: 0px;
&:not(:last-child) {
border-bottom: 1px solid $white;
}
&.navigation-up,
&.navigation-current {
.navigation-icon {
img {
padding-top: 0;
}
}
.navigation-title {
padding: 10px 10px 10px 0;
}
&:hover {
background-color: $base-color-80;
}
}
&.navigation-current {
background-color: $base-color-80;
}
a {
color: $white;
cursor: pointer;
}
button {
color: $white;
cursor: pointer;
display: flex;
flex: 0;
text-align: center;
width: 100%;
img,
svg {
padding-top: 12px;
}
&.navigation-in {
border-left: 1px solid $base-color-60;
}
}
&:not(.navigation-current):not(.navigation-up) {
button:hover {
background-color: $base-color-80;
}
}
}
.navigation-title {
color: $white;
flex: 1;
> a {
display: inline-block;
padding: 10px 10px 10px 5px;
text-align: left;
width: calc(100% - 15px);
.navigation-icon {
flex: 0;
width: 35px;
}
.navigation-text {
flex: 1;
padding-top: 2px;
}
}
img,
svg {
vertical-align: text-bottom;
margin-right: 10px;
}
}
a {
flex: 0;
&:hover {
background-color: $base-color-80;
}
}
img, svg {
vertical-align: text-bottom;
}
}
.cw-ribbon-button-zoom {
display: none;
}
.responsive-display,
.fullscreen-mode body:not(.consuming_mode) {
body {
display: inherit;
}
#responsive-menu {
flex: 0;
}
#site-title {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
#quicksearch_item,
#avatar-menu-container,
#current-page-structure {
display: none;
}
#header-links {
> ul {
> li:not(#responsive-toggle-fullscreen):not(#responsive-toggle-focusmode):not(.helpbar-container) {
display: none;
}
> li.helpbar-container {
float: unset;
margin-top: 5px;
}
}
#notification-container,
.header_avatar_container,
#sidebar-menu {
display: none;
}
}
#navigation-level-1 {
display: none;
}
#sidebar {
background-color: $white;
max-height: calc(100vh - 100px);
overflow-y: auto;
position: absolute;
transform: translateX($sidebarOut);
z-index: 100;
&.responsive-hide {
@media not prefers-reduced-motion {
animation: slide-out $transition-duration backwards;
}
}
&.responsive-show {
@media not prefers-reduced-motion {
animation: slide-in $transition-duration forwards;
}
left: 15px;
position: relative;
}
.sidebar-image {
display: none;
}
> .sidebar-widget {
margin-top: 0;
}
> .sidebar-widget ~ .sidebar-widget {
margin-top: 15px;
}
@keyframes slide-in {
100% {
transform: translateX($sidebarIn);
}
}
@keyframes slide-out {
0% {
transform: translateX($sidebarIn);
}
100% {
transform: translateX($sidebarOut);
}
}
}
#sidebar-navigation {
display: none !important;
}
#current-page-structure {
#navigation-level-2 {
display: none !important;
}
}
#responsive-contentbar {
justify-content: stretch;
margin-bottom: 15px;
padding-bottom: 0.5em;
padding-left: 5px;
.contentbar-nav,
.cw-ribbon-nav {
width: auto;
.contentbar-button {
&.contentbar-button-sidebar {
cursor: pointer;
margin-right: 10px;
img {
transform: rotate(0deg);
}
&.contentbar-button-sidebar-open {
img {
transform: rotate(180deg);
}
}
}
}
}
.contentbar-wrapper-left {
flex: 1;
max-width: calc(100% - 70px);
min-width: 0;
& > .contentbar-icon {
margin-right: 15px;
}
.contentbar-breadcrumb {
font-size: $font-size-large;
> img {
margin-left: 15px;
width: 24px;
}
> span {
display: inline;
flex-shrink: 10000;
min-width: 0;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
}
}
> .contentbar-wrapper-right {
position: relative;
left: 5px;
.contentbar-button,
nav {
position: relative;
}
}
&.cw-ribbon {
margin-top: 4px;
.cw-ribbon-tools {
right: 0;
top: 4px;
.cw-tabs-nav {
height: 52px;
button {
&.is-active::after {
margin-top: 10px;
}
}
}
}
}
}
#toc {
position: absolute;
right: -8px;
top: -21px;
}
#toc_header {
height: 47px;
}
#main-footer {
display: none;
}
}
.responsive-display:not(.fullscreen-mode) {
#top-bar {
padding: 0 3px;
}
#index,
#login {
#top-bar {
padding: 0 20px;
}
}
#responsive-menu {
margin-left: -7px;
padding: 0 5px;
width: calc(100% - 56px);
}
#responsive-navigation-items {
max-width: unset;
width: 100%;
}
.contentbar-nav,
.cw-ribbon-nav {
margin-left: 3px;
}
#toggle-sidebar {
margin-left: -10px;
}
#sidebar {
height: 100%;
position: fixed;
transform: translateX($sidebarOut);
-webkit-transform: translateX($sidebarOut);
top: 80px;
z-index: 100;
&.responsive-show {
width: 100%;
.sidebar-widget {
width: calc(100% - 30px);
}
}
}
}
/* Settings especially for fullscreen mode */
.fullscreen-mode:not(.responsive-display) {
body:not(.consuming_mode) {
display: flex;
flex-direction: row;
flex-wrap: wrap;
#top-bar {
max-height: unset;
opacity: 1;
overflow: unset;
width: calc(100% - 20px);
}
#main-header {
flex-basis: 100%;
}
#header-links {
margin-left: auto;
ul {
li {
&:not(#responsive-toggle-fullscreen):not(#responsive-toggle-focusmode) {
padding: 0;
}
.helpbar-container {
right: 0;
}
}
}
}
#responsive-toggle-fullscreen,
#responsive-toggle-focusmode {
margin-top: 4px;
padding: 4px 0 0;
}
#responsive-toggle-fullscreen {
display: block;
}
.contentbar:not(#responsive-contentbar) {
display: none;
}
#responsive-contentbar-container {
position: fixed;
width: 100vw;
z-index: 1000;
}
#responsive-contentbar {
padding-left: 15px;
.contentbar-nav,
.cw-ribbon-nav {
margin-left: -8px;
}
}
#sidebar.responsive-hide {
top: 110px;
}
#content-wrapper {
flex: 1;
margin-top: 75px;
min-height: calc(100vh - 150px);
}
}
}
.consuming_mode {
display: unset;
overflow-y: auto;
#skip_link_navigation,
#main-header,
#sidebar,
#main-footer,
#wikifooter {
display: none;
}
#content-wrapper {
display: block;
margin-left: auto;
margin-right: auto;
max-width: $max-content-width;
min-height: 100vh;
padding-top: 10px;
}
#content {
.contentbar {
margin: 10px;
padding-left: 20px;
padding-right: 20px;
width: calc(100% - 60px);
.action-menu {
display: none;
}
}
.cw-companion-box-wrapper {
padding-top: 120px;
}
.cw-structural-element-consumemode {
position: unset;
.cw-ribbon-wrapper-consume {
position: unset;
.cw-ribbon-consume {
position: unset;
.cw-ribbon-consume-bottom {
height: unset;
}
}
}
}
}
#toc {
position: absolute;
right: -29px;
top: -25px;
}
}
html:not(.responsive-display):not(.fullscreen-mode) {
#responsive-navigation {
display: none;
}
body.fixed {
#responsive-navigation {
display: block;
}
#responsive-navigation-items {
margin-top: -5px;
width: 100%;
}
}
}
/* content from old responsive.less */
.responsive-display {
@include media-breakpoint-small-down() {
#navigation-level-1,
#site-title,
#navigation-level1-items,
.current_page,
#tabs,
#site-title,
#footer,
.tabs_wrapper .colorblock {
display: none !important;
}
#layout_wrapper #current-page-structure {
#navigation-level-2 {
display: flex;
flex-direction: row;
flex-wrap: nowrap;
background-color: $dark-gray-color-10;
border-bottom: 1px solid $dark-gray-color-40;
.colorblock,
#context-title,
.context_icon,
.tabs_wrapper {
transition: unset;
}
#context-title,
.tabs_wrapper {
background: transparent;
border-width: 0;
flex: 1;
}
#context-title {
flex: 1;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
+ .tabs_wrapper {
flex: 0;
align-self: flex-end;
}
}
}
}
#layout_wrapper #current-page-structure .tabs_wrapper {
justify-content: flex-end;
.helpbar-container {
top: 0px;
right: 6px;
}
}
.responsive-hidden {
display: none;
}
#notification_marker {
display: inline-block;
margin-top: 0;
vertical-align: initial;
width: 22px;
padding-left: 5px;
padding-right: 5px;
height: 20px;
line-height: 20px;
}
#avatar-menu-container {
position: relative;
bottom: 0px;
right: 0px;
line-height: 20px !important;
#avatar-menu {
display: none;
}
&::after {
display: none !important;
}
}
#top-bar {
box-sizing: border-box;
height: $header-bar-container-height;
position: fixed;
top: 0;
margin-left: 0px;
margin-right: 0px;
width: 100%;
}
#header-links, #header-links ul {
box-sizing: border-box;
flex: 1;
}
#header-links {
flex: 1 !important;
.list {
&::before,
&::after {
display: none;
}
$width: 300px;
$arrow-height: 10px;
margin-top: 2px;
width: $width;
max-width: $width;
&.below {
left: (-$width + 90px);
&:before {
left: ($width - 90px);
}
}
}
> ul > li {
flex: 1 0 auto;
&:first-child {
flex: 1 1 100%;
}
}
}
#notification-container {
position: inherit !important;
/*top: 8px;*/
width: 32px;
height: 20px;
}
#responsive-container {
display: block;
}
#current-page-structure {
margin-left: 0;
margin-right: 0;
}
#current-page-structure,
#top-bar,
#navigation-level-1 {
min-width: inherit !important;
}
#index,
#login,
#request_new_password,
#web_migrate {
#background-desktop,
#background-mobile {
position: fixed;
}
}
}
@include media-breakpoint-tiny-down() {
#index,
#login,
#request_new_password,
#web_migrate {
#responsive-contentbar {
display: none;
}
#content {
margin: 0;
padding: 0;
.messagebox {
margin: 0;
width: calc(100vw - 74px);
}
}
}
#header-links {
display: none;
}
#background-desktop {
display: none;
}
#background-mobile {
display: inherit;
width: 100vw;
height: 100vh;
top:0;
left: 0;
}
#loginbox {
box-shadow: unset;
margin: 0;
width: calc(100vw - 40px);
nav ul {
display: flex;
flex-direction: column;
width: 100%;
.login_link {
width: unset;
}
}
}
}
}
.responsive-display {
#quicksearch_item {
padding: 0;
}
#search_sem_quick_search_frame {
display: flex;
flex-direction: row;
justify-content: flex-end;
.quicksearchbox {
transition: all 300ms;
opacity: 0;
max-width: 0;
}
&.open {
.quicksearchbox {
opacity: 1;
max-width: 1000px;
width: 100% !important;
}
}
}
#header-links {
ul {
li:first-child {
flex: 1 0 auto;
}
li#quicksearch_item {
flex: 1 1 100%;
}
}
}
table.default tfoot .button {
margin-top: 0.5em;
margin-bottom: 0.5em;
}
.ui-dialog.ui-widget.ui-widget-content.studip-confirmation {
min-width: 20vw;
max-width: 100vw;
}
}