Skip to content
Snippets Groups Projects
tables.scss 19.9 KiB
Newer Older
/* --- Tabellen ------------------------------------------------------------- */

// normale Tabellenheader
table.header,
.table_header {
    background-color: var(--table-header-color);
Ron Lucke's avatar
Ron Lucke committed
    border-bottom: 1px solid var(--color--table-border);
    color: var(--black);
    padding: 4px;

}

// formerly known as topic(-header)
.table_header_bold {
Ron Lucke's avatar
Ron Lucke committed
    background-color: var(--color--table-header);
    border-color: var(--color--table-border);
    border-style: solid;
    border-width: 0 0 1px 0;
Ron Lucke's avatar
Ron Lucke committed
    color: var(--color--font-inverted);
    font-size: 12pt;
    padding: 3px 5px;

    img,
    svg {
        vertical-align: middle;
    }

    // for the topic-icons
}

@mixin gradient-bar($flow-content: true) {
    #gradient {
        @include vertical-three-colors(#cdd9ed, #e3eaf6, 40%, #e3eaf6);
    }

Ron Lucke's avatar
Ron Lucke committed
    border-top: 1px solid var(--color--table-border);
    line-height: 17pt;
    height: 25px;

    @if $flow-content {
        &:last-child {
            padding-right: 5px;
        }

        img,
        svg {
            padding: 0 2px;
            vertical-align: text-bottom;
        }
    }
}

table.toolbar {
    @include gradient-bar(false);
}

td.toolbar,
td.printhead {
    @include gradient-bar;
}

td {
    &.aufklapp {
        background-color: var(--dark-gray-color-5);
    }

    &.angemeldet {
        border: 1px solid var(--black);
    }

    &.nix {
        background-color: transparent;
    }

    &.quote {
        border: 1px solid var(--black);
        font-size: 8px;
    }
}

table.blank,
td.blank,
td.onlineinfo,
td.blanksmall {
Ron Lucke's avatar
Ron Lucke committed
    background-color: var(--color--global-background);
}

td.tree-indent {
    img, svg {
        vertical-align: bottom;
    }
}

td.tree-elbow-line {
    background: url("#{$image-path}/datatree_1.gif") repeat-y;
    vertical-align: bottom;
    width: 5px;
}

td.tree-elbow-end {
    vertical-align: top;
    white-space: nowrap;
    width: 5px;
}

td.tree-elbow-line, td.tree-elbow-end {
    img, svg {
        display: block;
    }
}

/* --- table.collapsable ---------------------------------------------------- */
// TODO: This is pretty hard to understand and should be replaced with an easier,
// better structured solution
.collapsable {
    .header-row > td {
        border-bottom: 0;
        padding-left: 0;
    }

    .toggle-indicator {
        color: var(--black);
        font-weight: bold;

        a {
            background: left center no-repeat;
            @include background-icon(arr_1down);
            color: var(--black);
            cursor: pointer;
            display: block;
        }

    }

    .empty .toggle-indicator a {
        @include background-icon(arr_1right, inactive);
    }

    .collapsed .toggle-indicator a {
        @include background-icon(arr_1right);
    }

    td.label-cell, .toggle-indicator a, .empty .toggle-indicator {
        padding-left: 20px;
    }

    > .collapsed {
        tr:not(.header-row) {
            display: none;
        }

        .toggle-indicator ~ *:not(.dont-hide) > * {
            opacity: 0;
            pointer-events: none;
        }
    }
}

* + html .collapsable .collapsed .header-row {
    display: inline-block !important;
}

// IE-Hack

/* --- Table details -------------------------------------------------------- */
.loaded-details {
    > td {
        padding: 0 0 5px 20px !important;
    }

    table {
        border-top: 0;
    }
}

/* --- Sonstige ------------------------------------------------------------- */
.gruppe0 {
    background-color: var(--group-color-0) !important;
}

.gruppe1 {
    background-color: var(--group-color-1) !important;
}

.gruppe2 {
    background-color: var(--group-color-2) !important;
}

.gruppe3 {
    background-color: var(--group-color-3) !important;
}

.gruppe4 {
    background-color: var(--group-color-4) !important;
}

.gruppe5 {
    background-color: var(--group-color-5) !important;
}

.gruppe6 {
    background-color: var(--group-color-6) !important;
}

.gruppe7 {
    background-color: var(--group-color-7) !important;
}

.gruppe8 {
    background-color: var(--group-color-8) !important;
}

#my_seminars, #settings-notifications {
    .gruppe0, .gruppe1, .gruppe2, .gruppe3, .gruppe4,
    .gruppe5, .gruppe6, .gruppe7, .gruppe9 {
        width: 1px;
    }

    .mycourse_elements > img {
        display: none;
    }

    .special_nav {
        float: right;
    }
}

.grey {
Ron Lucke's avatar
Ron Lucke committed
    background: var(--color--table-header) none;
Ron Lucke's avatar
Ron Lucke committed
    background: var(--color--global-background) none;
}

.red_gradient {
    #gradient {
        @include vertical-three-colors(#e3969a, #e8b6b9, 60%, #e8b6b9);
    }

    border-top: 2px solid var(--brown);
}

/* --- Styles fuer printhead und printcontent ------------------------------- */
table {
    td.printcontent {
        background-color: var(--dark-gray-color-5);
        text-align: left;
    }

    td.printcontent:hover {
        background-color: var(--dark-gray-color-5);
    }

    td.printhead2 {
        background-image: url("#{$image-path}/content_object_arr-right.png");
Ron Lucke's avatar
Ron Lucke committed
        border-top: 1px solid var(--color--table-border);
        padding: 0;
    }

    td.printhead3 {
        background-image: url("#{$image-path}/content_object_arr-down.png");
Ron Lucke's avatar
Ron Lucke committed
        border-top: 1px solid var(--color--table-border);
        padding: 0;
    }
}

/* classes for sortable table headers --------------------------------------- */
tr.sortable {
    th.sortasc,
    th.sortdesc {
        .tablesorter-header-inner {
            display: inline-block;
        }
    }

    th.sortasc {
        @include icon('after', 'arr_1up', 'clickable', $icon-size-inline);
        @include icon('after', 'arr_1down', 'clickable', $icon-size-inline);
    }
}

.tablesorter .filtered {
    display: none;
}

.tablesorter .tablesorter-errorRow td {
    text-align: center;
    cursor: pointer;
}

/* styles for settings tables */
.settings {
    border-collapse: collapse;
    margin-bottom: 2em;
    width: 100%;

    thead th, tbody th {
        @extend .table_header_bold;
        text-align: center;
    }

    td, th {
        padding: 8px;
        vertical-align: top;
    }

    tbody {
        &.maxed {
            input[type=email], input[type=password], input[type=tel], input[type=text], input[type=url], select, textarea {
                &:first-child {
                    box-sizing: border-box;
                    width: 100%;
                }
            }

            td[colspan]:first-child {
                input[type=email], input[type=password], input[type=tel], input[type=text], input[type=url], select, textarea {
                    width: 200px;
                }
            }
        }

        &.privacy td:first-child ~ td {
            font-style: italic;
            text-align: center;
        }

        td:first-child label {
            display: block;
            font-weight: bold;
        }
    }

    td:first-child[colspan], .divider > th, .divider > td {
        background-color: lighten($brand-color-lighter, 20%);
Ron Lucke's avatar
Ron Lucke committed
        border-bottom: 1px solid var(--color--table-border);
        border-top: 1px solid var(--color--table-border);
        color: var(--black);
        font-weight: bold;
        text-align: center;
    }

    dfn, small {
        display: block;
        font-weight: normal;
    }

    dfn {
        font-size: 0.8em;
        font-style: italic;
        padding-top: 0.5em;
    }

    tfoot {
        td {
            background: var(--table-footer-color);
            text-align: center;
        }

        tr:first-child td {
            border-top: 1px solid var(--dark-gray-color-80);
        }
    }

    label.required:after {
        color: var(--red);
        content: '*';
        font-size: 1.5em;
        padding-left: 5px;
        vertical-align: middle;
    }

    &.notification tbody td {
        text-align: center;

        &:first-child:not([colspan]) {
            padding-left: 0;
            padding-right: 0;
            font-size: small;
        }

        &:nth-child(-n+2) {
            text-align: left;
        }
    }

    .bordered {
        &.left {
Ron Lucke's avatar
Ron Lucke committed
            border-left: 1px solid var(--color--table-border);
Ron Lucke's avatar
Ron Lucke committed
            border-right: 1px solid var(--color--table-border);
        }
    }
}

table.tree {
    .header > td {
        @include gradient-bar;

        a.link {
            padding-left: 5px;

            &.open {
                @include background-icon(arr_1down);
                background-position: left center;
                background-repeat: no-repeat;
                padding-left: 20px;
            }

            &.closed {
                @include background-icon(arr_1right);
                background-position: left center;
                background-repeat: no-repeat;
                padding-left: 20px;
            }
        }
    }

    td.blank {
Ron Lucke's avatar
Ron Lucke committed
        background: var(--color--global-background);
        border: 0;
    }

    td.in-between {
Ron Lucke's avatar
Ron Lucke committed
        background: var(--color--global-background) url("#{$image-path}/tree-line.gif") center repeat-y;
Ron Lucke's avatar
Ron Lucke committed
        background: var(--color--global-background) url("#{$image-path}/tree-leaf.gif") center no-repeat;
Ron Lucke's avatar
Ron Lucke committed
        background: var(--color--global-background) url("#{$image-path}/tree-end.gif") center no-repeat;
        border: 0;
    }

    .centered {
        text-align: center;

        table {
            margin: auto;
            text-align: left;
        }
    }
}

.table_footer, .table_footer td {
Ron Lucke's avatar
Ron Lucke committed
    background-color: var(--color--table-header);
    border-top: 1px solid var(--color--table-border);
}

// New table definition
table.default {
    border-collapse: collapse;
Ron Lucke's avatar
Ron Lucke committed
    margin-bottom: 2em;
    width: 100%;

    .wrap-content {
        word-break: break-all;
    }

    .font-size-adjusted {
        font-size: 1.1em;
    }

Ron Lucke's avatar
Ron Lucke committed
    th, td {
        &.nowrap {
            white-space: nowrap;
        }

Ron Lucke's avatar
Ron Lucke committed
        padding: 10px 5px;
        text-align: left;
Ron Lucke's avatar
Ron Lucke committed

        &:first-child {
            padding-left: 10px;
        }
        &:last-child {
            padding-right: 10px;
        }
    }

    > caption {
        background-color: transparent;
Ron Lucke's avatar
Ron Lucke committed
        padding: 0 5px 5px 5px;
        color: var(--headings-color);
Ron Lucke's avatar
Ron Lucke committed
        font-size: $font-size-caption;
        line-height: $font-size-caption;
        text-align: left;

Ron Lucke's avatar
Ron Lucke committed
        &.nowrap {
            white-space: nowrap;
        }

        header {
            > h2 {
                border: 0;
                font-size: inherit;
                font-weight: normal;
                margin: 0;
                padding: 0;
            }

            > p {
                font-size: 0.7em;
                font-weight: normal;
                margin: 0;
                padding: 0;
            }
        }
    }

    > thead {
        > tr > th {
Ron Lucke's avatar
Ron Lucke committed
            background-color: var(--color--table-header);
            border-bottom: 2px solid var(--color--global-background);
            font-size: 1.0em;
        }
    }

    > tbody {
        > tr {
            > th {
Ron Lucke's avatar
Ron Lucke committed
                background-color: var(--color--table-header);
                text-align: left;
            }

            > td {
Ron Lucke's avatar
Ron Lucke committed
                border-bottom: 1px solid var(--color--table-border);
                transition: background-color 0.3s;
            }

            &.dragover > td {
Ron Lucke's avatar
Ron Lucke committed
                background-color: var(--color--table-header);
            }
        }
    }

    > tbody > tr.selected > td {
Ron Lucke's avatar
Ron Lucke committed
        background-color: var(--color--table-header);

        &:first-child {
            position: relative;

            &::before {
                display: block;
                content: '';
                position: absolute;

                top: 0;
                bottom: 0;
                left: 0;
                width: 2px;
Ron Lucke's avatar
Ron Lucke committed
                background-color: color--table-header;
            }
        }
    }

    > tbody > tr.new > td {
        font-weight: bold;

        &:first-child {
            position: relative;

            &::before {
                display: block;
                content: '';
                position: absolute;

                top: 0;
                bottom: 0;
                left: 0;
                width: 2px;
                background-color: var(--red);
            }
        }

        .action-menu {
            font-weight: normal;
        }
    }

    > tbody:last-of-type > tr:last-child > td {
Ron Lucke's avatar
Ron Lucke committed
        border-bottom: 1px solid var(--color--table-border);
    }

    // Hover effect
    &:not(.nohover) > tbody:not(.nohover) > tr:not(.nohover):hover > td:not(.nohover) {
Ron Lucke's avatar
Ron Lucke committed
        background-color: var(--color--table-header);
    }

    > tfoot {
        > tr > td {
Ron Lucke's avatar
Ron Lucke committed
            background-color: var(--color--table-header);
            border-top: 2px solid var(--color--global-background);
            padding-top: 5px;
            padding-bottom: 5px;
        }
    }

    td.avatar, th.avatar {
        padding: 5px;
    }

    .actions {
        float: right;
        text-align: right;
        white-space: nowrap;

        img, svg, input[type="image"] {
            vertical-align: middle;
        }
    }

    > caption .actions {
        font-size: $font-size-base;
Ron Lucke's avatar
Ron Lucke committed
        border-left: 1px solid var(--color--table-border);
        margin-bottom: -2px;
        min-height: 26px;
        padding-bottom: 3px;
        padding-left: 0.5em;
        padding-top: 4px;
    }

    td.actions, th.actions {
        float: none;
    }

    > caption {
        .caption-container {
            display: flex;
            align-items: stretch;
            justify-content: space-between;
Ron Lucke's avatar
Ron Lucke committed
            margin-bottom: 5px;

            img.text-bottom {
                vertical-align: middle;
Ron Lucke's avatar
Ron Lucke committed
            }
        }

        .caption-content {
            flex-grow: 1;
Ron Lucke's avatar
Ron Lucke committed
            border-right: 1px solid var(--color--table-border);
            padding-bottom: 5px;
            padding-right: 0.5em;
            margin-right: 0.5em;
        }

        .caption-actions {
            align-self: flex-end;
        }
    }

    > tbody.toggleable {
        &.toggled {
            .toggle-switch {
                @include background-icon(arr_1right);
            }

            tr:not(:first-child) {
                display: none;
            }
        }

        .toggle-switch {
            @include hide-text;
            @include background-icon(arr_1down);
            display: inline-block;
            height: $icon-size-inline;
            text-align: center;
            vertical-align: top;
            width: $icon-size-inline;
        }
    }

    dfn, small {
        display: block;
        font-weight: normal;
    }

    dfn {
        font-size: 0.8em;
        font-style: italic;
        padding-top: 0.5em;
    }

    label.required:after {
        color: red;
        content: '*';
        font-size: 1.5em;
        padding-left: 5px;
        vertical-align: middle;
    }

    &.has-form {
        input[type=text], textarea {
            box-sizing: border-box;
            min-width: 200px;
            width: 100%;
        }

        textarea {
            min-height: 100px;
        }
    }

    tfoot {
        // Fix button and select alignment
        select {
            vertical-align: middle;
Ron Lucke's avatar
Ron Lucke committed
            min-width: 24em;
        }

        // Adjust button margins
        .button {
            margin-bottom: 0;
            margin-top: 0;
        }
    }

    colgroup {
        col.checkbox {
            width: 24px;
        }
    }
}


// Remove trailing border and margin in content boxes if table is last element
article.studip > section > table.default:last-child {
    margin-bottom: 0;

    > tbody:last-child > tr:last-child > td {
        border-bottom: 0;
    }
}

table.withdetails {
    > tbody > tr:not(.details) > td:first-child {
        @include background-icon(arr_1right);
        background-repeat: no-repeat;
        background-position: 2px center;
        padding-left: 20px;

        > a {
            margin-left: -20px;
            padding-left: 20px;
        }
    }

    > tbody > tr.open > td {
Ron Lucke's avatar
Ron Lucke committed
        background-color: var(--color--table-header);
    }

    > tbody > tr.open > td:first-child {
        @include background-icon(arr_1down);
    }

    tr.details {
        display: none;
        max-height: 0px;
        overflow: hidden;
        transition: max-height 0.8s;
    }

    tr.open + tr.details {
        display: table-row;
        max-height: 200px;
        overflow: hidden;
        transition: max-height 0.8s;
        background-color: transparent !important;

        > td {
            padding-top: 0px;
            padding-bottom: 10px;

            > .detailscontainer {
                padding: 5px;
Ron Lucke's avatar
Ron Lucke committed
                border: 1px solid var(--color--table-border);
                margin-top: -1px;
Ron Lucke's avatar
Ron Lucke committed
                border-top-color: var(--color--global-background);
            }
        }
    }
}

.no-js table.withdetails tr.details {
    display: table-row;
}

@mixin sortable-dreieck($direction) {
    &::after {
        background-repeat: no-repeat;
        content: ' ';
        display: inline-block;
        height: $icon-size-inline;
        margin-left: 0;
        @include background-icon('arr_1#{$direction}', clickable, $icon-size-inline);
        vertical-align: text-bottom;
        width: $icon-size-inline;
    }
}

.sortable-table {
    .header,
    .tablesorter-header:not(.sorter-false) {
        white-space: nowrap;

        color: var(--base-color);

        &:hover {
            color: var(--active-color);
            cursor: pointer;
        }

        &.tablesorter-headerDesc:hover .tablesorter-header-inner::after {
            @include background-icon(arr_1down, status-red, $icon-size-inline);
        }

        &.tablesorter-headerAsc:hover .tablesorter-header-inner::after {
            @include background-icon(arr_1up, status-red, $icon-size-inline);
        }
    }

    .headerSortUp,
    .tablesorter-headerDesc .tablesorter-header-inner {
        @include sortable-dreieck('down');
    }

    .headerSortDown,
    .tablesorter-headerAsc .tablesorter-header-inner {
        @include sortable-dreieck('up');
    }

    .tablesorter-headerUnSorted:not(.sorter-false) .tablesorter-header-inner {
        margin-right: 15px;
    }
}

// Responsive helper
.table-scrollbox-horizontal {
    @include scrollbox-horizontal;
// New table form for Course Search
table.course-search {
    $max-width-s: 8em;
    $max-width-m: 48em;
    $max-width-l: 100%;
Ron Lucke's avatar
Ron Lucke committed
    border: 1px solid var(--color--table-border);
    padding: 0;
    border-top: 0;

    caption.legend {
        box-sizing: border-box;
        background-color: var(--color--table-header);
Ron Lucke's avatar
Ron Lucke committed
        border: 1px solid var(--color--table-border);
        border-bottom: 0;
        color: var(--brand-color-dark);
        font-size: 12pt;
        font-weight: bold;
        line-height: 2em;
        padding: 0;
        text-align: left;
        text-indent: 15px;
    }
}

// Show Tree Table
table.show-tree {
    width: 100%;
    padding: 0 10px 10px 10px;

    td.b-top-va-center {
Ron Lucke's avatar
Ron Lucke committed
        border-top: 1px solid var(--color--table-border);
        padding-top: 10px;
        vertical-align: middle;
    }

    img[role=root-icon] {
        position: relative;
        top: 1px;
    }

    div.sem-root-icon {
        display: inline-block;
        vertical-align: top;
    }

    div.sem-path {
        display: inline-block;
        padding-left: 5px;
        div.sem_path_info {
            padding-top: 10px;

            div.sem_path_title {
                font-weight: bold;
                font-size: 1.4em;
                margin: 3px 0 5px 0;
            }

            div.sem_path_text {
                padding-top: 2px;
            }
        }
    }

    table.show-tree-kids {
        width: 100%;

        td.kids-tree-row {
            width: 50%;
        }

        ul.semtree {
            padding-left: 0 !important;

            a {
                padding-top: 5px !important;
                padding-bottom: 3px !important;
                padding-left: 14px !important;
                margin-left: -4px !important;
                display: block;
            }

            a:hover {
                background-color: var(--color--table-header) !important;
                color: var(--base-color) !important;
            }