ejplatform/ej-server

View on GitHub
lib/scss/components/main/_navigation.scss

Summary

Maintainability
Test Coverage
//------------------------------------------------------------------------------
// PAGE NAVIGATION ELEMENTS
//------------------------------------------------------------------------------
@import "../../config";

$_sm-header-height: size(2);
$_md-header-height: size(2.5);
$avatar-height: 36px;
$avatar-border: 50%;

body {
    display: flex;
    flex-direction: column;
}

//------------------------------------------------------------------------------
// header navigation

.main-header {
    @include utilities("row items-center center sticky pin-top");
    @include color("navigation");

    z-index: 1000;

    > * {
        @include utilities("pad-x1");
        display: flex;
        align-items: center;
    }
    > a {
        @include utilities("margin-0");

        display: flex;
        align-items: center;

        color: color("navigation-text");
        height: $_sm-header-height;

        i {
            color: $color-accent;
        }
    }

    box-shadow: 0 0 2px 1px rgba(0, 0, 0, 0.12);
    height: 3rem;
    line-height: 3.5rem;
    order: -1;
    width: 100%;

    &__logo img {
        height: $_sm-header-height * 0.6;
        position: relative;
    }

    &__avatar {
        display: flex;
        border-radius: $avatar-border;
        width: $avatar-height;
        height: $avatar-height;
        object-fit: cover;
    }
}

// Reorganize using media queries
@include breakpoint("sm") {
    .container-1 {
        max-width: 60vw;
    }

    .measure-wide {
        max-width: 60vw;
    }

    .main-header{
        line-height: 2.5rem;
        top: 0;

        @include breakpoint("md") {
            > * {
                padding: 0 size(0.5);
            }
        }
    }
    .main-header {
        align-items: center;
        justify-content: space-between;

        > a {
            text-align: left;
            line-height: $_md-header-height;

            &:nth-child(1) {
                display: none;
            }
        }

        &__user {
            > a {
                display: flex;
                align-items: center;
            }

            &:hover #show-profile-menu {
                opacity: 1 !important;
                visibility: visible !important;
                right: 10px;
            }
        }
    }
}

//------------------------------------------------------------------------------
// Sidebar / menu

.page-menu {
    height: 100%;
    z-index: 750;
    position: fixed;
    transition: .3s;

    background-color: $color-navigation-menu-background;
    box-shadow: 0 0 8px 1px rgba(0, 0, 0, 0.12);
    overflow: hidden auto;

    h3{
        font-family: 'Raleway', 'sans-serif';
    }

    .nav-header{
        background-color: $color-accent;
        position: relative;

        display: grid;
        grid-template-columns: 56px auto;
        grid-template-rows: auto auto;

        #board-name i {
            display: none;
        }

        .close-btn {
            display: block;
            position: absolute;
            background-color: transparent;
            border: none;
            top: .75rem;
            right: .75rem;
            color: white;
            padding: 0;
        }

        i {
            margin-left: unset;
            margin-right: unset;
        }
        li {
            margin-top: unset;
            margin-bottom: unset;
            text-decoration: underline;
        }
        a {
            color: white;
        }
        li:nth-of-type(2) {
            font-size: 1.5rem;
            font-family: "Patua One", sans-serif;
            line-height: 1.5rem;
            padding-bottom: 0.25rem;
            text-decoration: none;

            grid-column: 1/span 2;
            grid-row: 1/span 1;
        }
        li:nth-of-type(3) {
            display: flex;
            justify-content: space-between;

            font-size: .875rem;
            font-family: "Raleway", sans-serif;
            line-height: 1.5rem;

            grid-column: 1/span 1;
            grid-row: 2/span 1;
        }
        li:nth-of-type(4) a {
            font-weight: bold;
            font-size: .875rem;
        }

        .menu-item .conversation-title {
            a {
                color: white;
                span {
                    margin: unset !important;
                }
            }
        }

        .menu-item {
            padding: 0 .5rem;
            overflow: hidden;
            text-overflow: ellipsis;
            display: -webkit-box;
            -webkit-line-clamp: 4;
            -webkit-box-orient: vertical;
            overflow-wrap: anywhere;
            padding-bottom: 0 !important;
            margin-bottom: 0.25rem;
            a {
                color: white;
                font-weight: 100;
            }
        }
        #board-name {
            a {
                display: flex;
                span {
                    margin-left: 0.563rem;
                }
            }
        }
    }
    .nav-categories{
        padding-top: 1.75rem !important;

        h3{
            font-size: 1rem;
            letter-spacing: 0;
        }
        li{
            padding-left: 0.438rem;
            padding-top: 0.313rem;
        }
        a{
            font-size: 1rem;
            font-weight: bold;
        }
    }

    .nav-divider{
        width: 100%;
        border-top: 1px solid $color-navigation-header;
        margin: unset;
    }

    .menu-padding{
        &:first-child{
            padding-top: 1.75rem;
        }
        padding: 0 1.75rem 1.75rem;
    }

    .section-margin{
        margin-top: 3.125rem;
    }

    @include utilities("rounded-2");

    background-color: color("white");
    box-shadow: 0 0 8px 1px rgba(0, 0, 0, 0.12);
    overflow: hidden auto;

    &[is-menu] {
        visibility: hidden;
        left: -100%;
    }

    &[is-menu][is-open] {
        width: 75%;
        visibility: visible;
        left: 0;
        top: 3rem;
        z-index: 750;
    }

    nav {

        border-bottom: 1px solid color("brand");
        h1,
        h2,
        h3 {
            margin: 0;
            margin-bottom: .75rem;
        }

        ul {
            @include utilities("list-reset");
        }

    }
    nav:last-child {
        border-bottom: none;
    }
    .add-button {
        color: #30bfd3;
    }
    .board-list {
        overflow-x: hidden;
        max-height: 15rem;
        li {
            display: flex;
            justify-content: space-between;
            height: 1.7rem;ยด
            a {
                margin-left: 0.5rem;
            }
            p {
                margin-right: 0.5rem;
                font-weight: 700;
            }
        }
        li.selected-board {
            background-color: #C4C4C4;
            margin: 0rem -2rem 0rem -2rem;
            padding: 0rem 2rem 0rem 2rem;
        }
    }
    .report-section {
        .display-reports {
            label {
                cursor: pointer;
                color: unset;
                text-indent: unset;
                margin-bottom: unset;
            }
            #isexpanded3 {
                display: none;
            }
        }
        div {
            display: flex;
        }
        label {
            i {
                margin-left: unset;
            }
        }
        ul {
            display: none;
            position: relative;
            width: 150%;
            margin-left: -50px;
            li a {
                font-weight: unset;
                margin-left: 3.4em;
            }
        }
        #isexpanded3:checked + label > i {
            transform: rotate(180deg);
        }
        .selected {
            background: #c4c4c4;
        }
        .show {
            display: block;
        }
        .hide {
            display: none;
        }
    }
}

#show-profile-menu {
    top: 3rem;
    transition: .3s;

    &.hide {
        right: -20rem;
        display: block;
        visibility: hidden;
    }
}

.profile-menu {
    position: fixed;
    display: grid;
    top: 3rem;
    right: 0;
    background: $color-white;
    border: 1px solid #C4C4C4;
    box-sizing: border-box;
    padding: 0;
    border-radius: .2rem;
}

.profile-avatar {
    border-radius: 66.5px;
    width: 44px;
    height: 44px;
    margin-right: .75rem;
    object-fit: cover;
}

.user-profile-info {
    display: flex;
    align-items: center;
    background: $color-white;
    height: 100%;
    min-height: 5rem;

    p {
        margin: unset;
        text-align: left;
    }
    p:first-child {
        line-height: 16.41px;
        font-size: 14px;
        font-weight: bold;
    }
    p:last-child {
        line-height: 14.06px;
        font-size: 12px;
    }

}

.menu-profile-section {
    @include utilities("pad-2");

    ul {margin-bottom: unset;}

    li {
        line-height: 19px;
        margin-bottom: 0;
        text-align: left;
        list-style-type: none;

        @include utilities("pad-y2");
    }

    h3 {display: none;}

    &:first-child {
        @include utilities("pad-y3");
        margin-top: 0;
        height: 5.75rem;
        padding: 0 .75rem;
    }
}

.menu-profile-logout {
    text-align: left;

    form {
        margin-bottom: unset;
    }

    a {font-weight: bold}
}


@include breakpoint("sm") {
    .page-menu {
        z-index: 750;
        position: relative;

        .nav-header {
            background-color: $color-navigation-header;
            grid-template-columns: auto;
            grid-template-rows: unset;

            #board-name i {display: block;}

            .menu-item {
                padding-left: 1.5rem;

                a{color: $color-black-alternative;}
            }

            a {color: $color-navigation-header-text;}

            li {
                grid-column: 1/span 1;
                grid-row: 1/span 1;
                text-decoration: none;
            }

            li:nth-of-type(2) {
                font-weight: bold;
                font-size: 1.5rem;
                font-family: "Patua One", sans-serif;
                padding-bottom: 0.25rem;
                justify-self: flex-start;

                a {
                    place-items: center;}

                grid-row: 2/span 1;
                grid-column: 1/span 1;
            }
            li:nth-of-type(3) {
                display: flex;
                justify-content: space-between;

                font-size: .875rem;
                font-family: "Raleway", sans-serif;
                text-decoration: underline;
                color: $color-navigation-header-text;

                grid-row: 3/span 1;

                a:first-child {
                    font-weight: bold;
                }
            }
        }
        li {
            margin-top: unset;
            margin-bottom: unset;
        }

        //background-color: rgba(0, 0, 0, 0.008);
        background-color: $color-navigation-menu-background;
        border-radius: 0;
        box-shadow: 0 0 2px 1px rgba(0, 0, 0, 0.12);
        flex: 1;
        min-height: calc(100vh - 3rem);
        min-width: size(11);
        max-width: size(11);

        &,
        &[is-menu],
        &[is-menu][is-open] {
            display: block;
            width: 20%;
            height: unset;
            visibility: visible;
            left: 0;
        }
        nav {
            border: none;
            padding-top: 0;

            h1,
            h2,
            h3 {
                display: block;
                font-size: 1rem;
                line-height: 1.125rem;
                margin-top: 0;

            }
        }
        nav:first-child a {
            font-weight: 700;
        }
        nav::after {
            background: rgba(0, 0, 0, 0.12);
            display: block;
            content: " ";
            height: 1px;
            margin: size(0.5) auto 0 auto;
            width: 75%;
        }
        nav:last-child::after {
            content: none;
        }
    }

    #page-wrapper {
        display: flex;
        align-items: stretch;
    }

    #page-wrapper > *:first-child {
        flex: 1;
    }

    .page-menu + * {
        flex: 5;
    }
}

#first-link {
    @extend .screen-reader;
    tab-index: 0;
    :focus {
        background: 0;
        bottom: size(0.5);
        padding: size(0.25);
        position: fixed;
        text-align: center;
        z-index: 1002;
    }
}

#docs {
    width: 100%;
    height: 100vh;
    display: contents;
    iframe {
        height: 100vh;
        width: 100%;
    }
}

@media (min-width: 560px) {
    #docs {
        iframe {
            height: 100vh;
            width: 100%;
        }
    }
}

@media (max-width: 560px) {
    .profile-menu {
        width: 13.5rem;
        top: 0;
        right: 0;
    }
}


#edit-board {
    display: flex;
    place-items: baseline;
    justify-content: space-between;
    padding-bottom: 1rem;

    .left-side {
        display: flex;
        place-items: baseline;

        h1 {
            margin-bottom: 0.1rem;
        }

        i {
            font-size: 1rem;
            padding-bottom: 5px;
        }
    }

    .right-side {
        display: none;
    }

    @media screen and (max-width: 559px) {
        .right-side {
            display: flex;
            place-items: center;
            justify-content: center;
            width: 25px;
            height: 25px;
            background: $color-primary;
            border-radius: 50%;

            i {
                color: white;
            }
        }
    }

}

#bg-modal {
    opacity: 0;

    &.show-board-statistics {
        display: block;
        opacity: .7;
    }

    @media screen and (max-width: 559px) {
        background: $color-black-alternative;
        position: fixed;
        top: 0;
        left: 0;
        width: 100%;
        height: 100%;

        z-index: 1005;
    }

}

.board-helptext {
    max-width: 580px;
}

.hide-board-statistics {
    @media screen and (max-width: 559px) {
        display: none;
    }
}