Skip to content
Snippets Groups Projects
responsive.scss 20.3 KiB
Newer Older
@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 {
#responsive-toggle-fullscreen,
#responsive-toggle-focusmode {
    img {
        cursor: pointer;
    }
}

#non-responsive-toggle-fullscreen {
    margin-left: auto;
    position: relative;
    top: 2px;

    img {
        cursor: pointer;
    }
}

#responsive-menu {
    font-size: $font-size-base;
    z-index: 1002;

    .responsive-navigation-header {
        display: flex;

        .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) {
}

#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-item-active {
            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;
                vertical-align: text-bottom;
            }

        }

        img,
        svg {
            vertical-align: text-bottom;
            margin-right: 10px;
        }

    }

    a {
        flex: 0;

        &:hover {
            background-color: $base-color-80;
        }

    }

    img, svg {
        vertical-align: text-bottom;
    }
}

#responsive-contentbar-container {
    position: fixed;
    width: 100vw;
    z-index: 1000;
.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) {
            > 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;
        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;
        }

        .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;
        }
    }

    #content-wrapper {
        width: calc(100vw - 2 * $page-margin);
    }

    .cw-ribbon-sticky-bottom,
    .cw-ribbon-sticky-spacer,
    .cw-ribbon-sticky-top {
        display: none;
    }

    #responsive-contentbar {
        justify-content: stretch;
        margin-bottom: 15px;
        padding-bottom: 0.5em;

        .contentbar-nav,
        .cw-ribbon-nav {
            .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;
                }
            position: relative;

            .contentbar-button,
            nav {
                position: relative;
            }
        }

        &.cw-ribbon {
            .cw-ribbon-tools {
                width: 540px;

                .cw-tabs-nav {
                    height: 52px;

                    button {
                        &.is-active::after {
                            margin-top: 10px;
                        }
                    }
                }

        &.cw-ribbon-sticky {
            position: unset;
            width: calc(100vw - 30px);
        }
    }

        position: absolute;
        right: -8px;
    }

    #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-contentbar-container {
            display: none;
        }
        margin-left: -7px;
        padding: 0 5px;
        width: calc(100% - 56px);
    }

    #responsive-navigation-items {
        max-width: unset;
        width: 100%;
    }

    #responsive-contentbar {
        &.cw-ribbon {
            .cw-ribbon-tools {
                top: 40px;
            }
        }

        &.cw-ribbon-sticky {
            position: unset;
            width: calc(100vw - 30px);
        }
    #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;

        &.fullscreen-sidebar-shown {
            display: grid;
            grid-template-columns: ($sidebar-width + $sidebar-padding) calc(100vw - $sidebar-width - $sidebar-padding - 35px);

            #content-wrapper {
                max-width: 100%;
            }
        }

        #top-bar {
            max-height: unset;
            opacity: 1;
            overflow: unset;
            width: calc(100% - 20px);
        #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 {
            padding-left: 15px;

            .contentbar-nav,
            .cw-ribbon-nav {
                margin-left: -8px;
            }
        }

        #content-wrapper {
            flex: 1;
            margin-top: 75px;
            min-height: calc(100vh - 150px);
    overflow-y: auto;
    #skip_link_navigation,
    #content-wrapper {
        display: block;
        margin-left: auto;
        margin-right: auto;
        max-width: $max-content-width;
        min-height: 100vh;
        padding-top: 10px;
    }
            margin: 10px;
            padding-left: 20px;
            padding-right: 20px;
            width: calc(100% - 60px);

            .action-menu {
                display: none;
            }
        }

        .cw-structural-element-consumemode {
            position: unset;

            .cw-container-wrapper-consume {
                padding-top: 15px;
            }

            .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,
        #navigation-level1-items,
        .current_page,
        #tabs,
        #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;
            }

            }

        }

        #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;
    }
}