@import "../variables";
@import "../colors";
@import "../mixins";

/* stylelint-disable selector-class-pattern, selector-no-type, no-descending-specificity, max-nesting-depth, max-line-length, selector-no-universal */

.Table {
    border-bottom: $border_main;
    border-left: 0 none;
    border-right: 0 none;
    border-top: $border_main;
    text-align: left;
    width: 100%;

    .Table-wrapper-srolltop &,
    .Table-wrapper-no-header &,
    .Table-wrapper-sticky-body & {
        border-bottom: 0 none;
        border-top: 0 none;
    }

    &-light {
        border: 0 none;
    }
}

.Table-col {
    padding-left: $offset_main;
    padding-right: $offset_main;

    &-amount {
        &,
        .Table .Table-row & {
            text-align: right;
        }
    }

    &-nowrap {
        &,
        .Table .Table-row & {
            white-space: nowrap;
        }
    }

    &-select {
        &,
        .Table .Table-row & {
            padding-left: $offset_main;
            padding-right: 0;
            width: 1px;
        }

        .Table .Table-row-header & {
            padding-bottom: 0;
            padding-top: 0;
            vertical-align: middle;
        }
    }

    &-icon {
        &,
        .Table .Table-row & {
            width: 1px;

            .Button {
                vertical-align: top;
            }
        }
    }

    &-filler {
        &,
        .Table .Table-row & {
            width: 100%;
        }
    }

    &-select-wide {
        &,
        .Table .Table-row & {
            width: 70px;
        }
    }

    &-shrink {
        &,
        .Table .Table-row & {
            white-space: nowrap;
            width: 1px;
        }
    }

    &-move {
        .Table .Table-row & {
            line-height: 1;
            vertical-align: middle;
        }
    }

    &-error {
        &,
        .Table .Table-row & {
            color: $color_danger;
        }
    }

    &-warning {
        &,
        .Table .Table-row & {
            color: $color_warning;
        }
    }

    &-empty {
        &,
        .Table .Table-row & {
            padding: 0;
        }
    }

    &-common {
        &,
        .Table .Table-row & {
            text-align: center;
        }
    }

    &-all-actions {
        &,
        .Table .Table-row & {
            text-align: left;
            white-space: nowrap;
            width: 1px;
        }
    }

    &-one-line {
        &,
        .Table .Table-row & {
            white-space: nowrap;
        }
    }

    &-total,
    &-heading {
        &,
        .Table .Table-row & {
            font-weight: $weight_bold;
        }
    }

    &-heading {
        .Table .Table-row-subtotal & {
            text-align: right;
        }
    }

    .Table-light & {
        border: 0 none;
    }

    .Table-row-sub & {
        border-top: $border_secondary;
        padding: 0;
    }

    .Table-row-header & {
        border-bottom: $border_main;
        color: $color_text_label;
        font-size: $font_size_small;
        font-weight: $weight_bold;
        line-height: $line_height_control;
        padding-bottom: 4px;
        padding-top: 6px;
        text-transform: uppercase;
        vertical-align: bottom;
    }

    .Table-row-data & {
        color: $color_dark_text;
        font-size: $font_size_default;
        font-weight: $weight_light;
        line-height: $line_height_control;
        padding-bottom: $offset_main - 1px;
        padding-top: $offset_main + 1px;
        transition: $default_transition_on;
        vertical-align: top;
        white-space: normal;
    }

    .Table-row-odd &,
    .Table-row-odd + .Table-row &,
    .Table-row-data:nth-child(odd) & {
        background: $mouse_brighter;
    }

    .Table .Table-row-odd.Table-row-checked &,
    .Table .Table-row + .Table-row-odd.Table-row-checked &,
    .Table-row-data:nth-child(odd).Table-row-checked & {
        background: darken($color_action_auxilliary, 3%);
    }

    .Table .Table-row-even.Table-row-checked &,
    .Table .Table-row + .Table-row-even.Table-row-checked &,
    .Table-row-data:nth-child(even).Table-row-checked & {
        background: $color_action_auxilliary;
    }

    .Table-row-heading.Table-row-data:nth-child(odd) & {
        background: none;
    }

    .Table-row-data + .Table-row-data & {
        border-top: $border_size_default transparent;
    }

    .Table-row-odd + .Table-row-odd & {
        border-top: $border_main;
    }

    .Table-row-even + .Table-row-even & {
        border-top: $border_secondary;
    }

    .Table-row.Table-row-even & {
        background: none;
    }

    .Table-row.Table-row-data:only-of-type & {
        background: none;
    }

    .Table-row-data.Table-row-checked & {
        background: $color_action_auxilliary;
        border-color: transparent;
    }

    .Table-row-data.Table-row-checked + .Table-row-data.Table-row-checked & {
        border-color: darken($color_action_auxilliary, 7%);
    }

    .Table .Table-row.Table-row-disabled & {
        color: $color_text_label;
    }

    .Table .Table-row.Table-row-deleted & {
        background: $color_control_background_auxilliary;
        color: $color_text_label;

        &,
        * {
            text-decoration: line-through;
        }
    }

    .Table-row.Table-row-total &,
    .Table-row-data + .Table-row-total & {
        border-top: $border_main;
    }

    .Table-row.Table-row-heading & {
        border-bottom: $border_secondary;
        font-weight: $weight_bold;
    }

    .Table-row.Table-row-inputs & {
        line-height: $control_height_normal;
    }

    .Table-row.Table-row-moved & {
        background: $color_info_auxilliary;
    }

}

.Table-link {
    .Table-row-data.Table-row-deleted & {
        color: $color_text_label;
        pointer-events: none;
        text-decoration: line-through;
    }
}

.Table-col-wrapper {
    display: inline-block;
    position: relative;

    .Table-row-header .Table-col & {
        vertical-align: bottom;
    }

    .helpIcon {
        left: 100%;
        position: absolute;
        top: 50%;
        transform: translateY(-50%);
    }
}

.Table th.Table-col-actions,
.Table td.Table-col-actions,
.Table th.Table-col-default,
.Table td.Table-col-default {
    padding-right: $offset_main * 5;
}

.Table-regionlist th.Table-col-biglist,
.Table-regionlist td.Table-col-biglist {
    padding-right: $offset_main * 13;
}

.Table-regionlist th.Table-col-name,
.Table-regionlist td.Table-col-name {
    min-width: $offset_main * 20;
    padding-right: $offset_main * 8;
}

.Table-sort-caption {
    @include transition;

    color: $color_text_label;
    cursor: pointer;
    display: inline-block;
    padding-right: $offset_main;
    position: relative;
    white-space: nowrap;

    &:hover,
    &-active {
        color: $color_dark_text_auxilliary;
    }
}

.Table-sort-caption-text {
    display: inline-block;
    vertical-align: bottom;
}

.Table-sort-caption-icon {
    position: absolute;
    right: -8px;
    top: 50%;
    transform: translateY(-50%);
    transform-origin: 50% 50%;
}

.Table-sort-caption-icon-up {
    transform: translateY(-50%) scale(-1, -1);
    transform-origin: 50% 50%;
}

.Table-sort-caption-icon-down {
    transform: translateY(-50%) scale(1, 1);
    transform-origin: 50% 50%;
}

.Table-controls {
    display: table;
    width: 100%;

    &-top,
    &-top-up {
        margin-bottom: $offset_main * 2;
    }

    &-bottom {
        margin-top: $offset_main * 2;
    }
}

.Table-controls-item {
    display: table-cell;
    width: 100%;

    &-additive,
    &-pagination {
        text-align: right;
        white-space: nowrap;
        width: 1px;
    }

    .Table-controls-top & {
        vertical-align: bottom;
    }

    .Table-controls-top-up & {
        vertical-align: top;
    }

    &-pagination {
        .Pagination {
            display: inline-block;
            white-space: nowrap;
        }
    }
}

.Table-wrapper {
    overflow: auto;

    &-srolltop {
        max-height: 250px;
    }

    &-srollleft {
        overflow-y: visible;
    }
}

.Table-action-item {
    display: inline-block;

    & + & {
        padding-left: $offset_main;
    }
}

.Table-action-item-text {
    position: relative;

    & + & {
        padding-left: 0;

        &::before {
            content: ",\00a0";
            display: inline-block;
        }
    }
}

.Table-label-list-name {
    width: 40 * $offset_main;
}

.Table td.Table-col-one-line {
    white-space: nowrap;
}

.Table-regionlist {
    margin-bottom: $offset_main;
}

.Table-add-row-button {
    margin-top: $offset_main;
}

.Table-empty-results {
    border-top: $border_main;
    padding: $offset_main 0;
    text-align: left;

    &-no-header {
        border-top: none;
    }
}

.Table-annotation {
    margin-top: $offset_main;
}

/* stylelint-enable selector-class-pattern, selector-no-type, no-descending-specificity, max-nesting-depth, max-line-length, selector-no-universal */
