
@mixin adf-datatable-theme($theme) {
    $foreground: map-get($theme, foreground);
    $background: map-get($theme, background);
    $primary: map-get($theme, primary);

    $data-table-font-size: 14px !default;
    $data-table-header-font-size: 12px !default;
    $data-table-header-sort-icon-size: 16px !default;
    $data-table-header-color: mat-color($foreground, text) !default;
    $data-table-header-sorted-color: mat-color($foreground, text) !default;
    $data-table-header-sorted-icon-hover-color: mat-color($foreground, disabled-text) !default;
    $data-table-divider-color: mat-color($foreground, text, .07) !default;
    $data-table-hover-color: mat-color($background, 'hover') !default;
    $data-table-selection-color: mat-color($background, 'selected-button') !default;
    $data-table-dividers: 1px solid $data-table-divider-color !default;
    $data-table-row-height: 56px !default;
    // $data-table-last-row-height: 56px !default;
    // $data-table-header-height: 56px !default;
    $data-table-column-spacing: 36px !default;
    $data-table-column-padding: $data-table-column-spacing / 2;
    // $data-table-card-header-height: 64px !default;
    // $data-table-card-title-top: 20px !default;
    $data-table-card-padding: 24px !default;
    // $data-table-button-padding-right: 16px !default;
    $data-table-cell-top: $data-table-card-padding / 2;
    $data-table-drag-border: 1px dashed rgb(68, 138, 255);

    .adf-data-table {
        width: 100%;
        position: relative;
        border: $data-table-dividers;
        border-collapse: collapse;
        white-space: nowrap;
        font-size: $data-table-font-size;

        /* Firefox fixes */
        border-collapse: unset;
        border-spacing: 0;

        thead {
            padding-bottom: 3px;
        }

        tbody {
            tr {
                cursor: pointer;
                position: relative;
                height: $data-table-row-height;
                @include material-animation-default(0.28s);
                transition-property: background-color;

                &:hover {
                    background-color: $data-table-hover-color;
                }

                &.is-selected, &.is-selected:hover {
                    background-color: $data-table-selection-color;
                }

                &:focus {
                    outline-offset: -1px;
                    outline-width: 1px;
                    outline-color: rgb(68, 138, 255);
                    outline-style: solid;
                }

                &:last-child {
                    & > td {
                        border-bottom: $data-table-dividers;
                    }
                }
            }
        }

        td, th {
            padding: 0 $data-table-column-padding 12px $data-table-column-padding;
            text-align: right;

            &:first-of-type {
                padding-left: 24px;
            }

            &:last-of-type {
                padding-right: 24px;
            }

            &:focus {
                outline-offset: -1px;
                outline-width: 1px;
                outline-color: rgb(68, 138, 255);
                outline-style: solid;
            }
        }

        td {
            color: mat-color($foreground, text);
            position: relative;
            vertical-align: middle;
            height: $data-table-row-height;
            border-top: $data-table-dividers;
            padding-top: $data-table-cell-top;
            box-sizing: border-box;

            @include no-select;
        }

        th {
            @include no-select;
            cursor: pointer;
            position: relative;
            vertical-align: bottom;
            text-overflow: ellipsis;
            font-size: 14px;
            font-weight: bold;
            line-height: 24px;
            letter-spacing: 0;
            height: $data-table-row-height;
            font-size: $data-table-header-font-size;
            color: $data-table-header-color;
            padding-bottom: 8px;
            box-sizing: border-box;
            white-space: nowrap;

            &.sortable {
                @include no-select;
                &:hover {
                    cursor: pointer;
                }
            }

            &.adf-data-table__header--sorted-asc,
            &.adf-data-table__header--sorted-desc {
                color: $data-table-header-sorted-color;
                &:before {
                    @include typo-icon;
                    font-size: $data-table-header-sort-icon-size;
                    content: "\e5d8";
                    margin-right: 5px;
                    vertical-align: sub;
                }
                &:hover {
                    cursor: pointer;
                    &:before {
                        color: $data-table-header-sorted-icon-hover-color;
                    }
                }
            }
            &.adf-data-table__header--sorted-desc:before {
                content: "\e5db";
            }
        }

        .adf-data-table-cell {
            text-align: left;
            height: 100%;            

            &--text {
                text-align: left;
            }

            &--date {
                text-align: left;
            }

            &--number {
                text-align: right;
            }

            &--image {

                .cell-value {
                    height: 24px;
                }

                text-align: left;

                img {
                    height: 100%;
                }
            }

            .cell-container {
                display: flex;
                align-items: center;    
            }
        }

        .full-width {
            width: 100%;
        }

        /* Empty folder */
        .adf-no-content-container {
            padding: 0 !important;

            & > img {
                width: 100%;
            }
        }

        /* Loading folder */
        .adf-loading-content-container {
            padding: 0 !important;

            & > img {
                width: 100%;
            }
        }

        .adf-no-permission {
            &__row:hover {
                cursor: default;
                background-color: inherit;
            }

            &__cell {
                padding: 0 !important;
            }
        }

        .ellipsis-cell {
            .cell-container {
                height: 100%;
            }

            .cell-container > * {
                display: block;
                position: absolute;
                max-width: calc(100% - 2em);
                white-space: nowrap;
                overflow: hidden;
                text-overflow: ellipsis;
                line-height: 1.12em;
            }

            /* visible content */
            .cell-value {
                display: block;
                position: relative;
                max-width: calc(100% - 2em);
                white-space: nowrap;
                overflow: hidden;
                text-overflow: ellipsis;
                line-height: 1.12em;
            }

            /* cell stretching content */
            & > div:after {
                content: attr(title);
                overflow: hidden;
                height: 0;
                display: block;
            }
        }

        /* [Accessibility] For screen reader only */
        .sr-only {
            position: absolute;
            width: 1px;
            height: 1px;
            padding: 0;
            margin: -1px;
            overflow: hidden;
            clip: rect(0, 0, 0, 0);
            border: 0;
        }

        /* Utils */
        .hidden {
            display: none;
        }

        /* mobile phone */
        @media all and (max-width: 768px) {
            .desktop-only {
                display: none;
            }
        }

        @media (max-device-width: 768px) {
            .desktop-only {
                display: none;
            }
        }
    }

    .adf-upload__dragging {
        & > td {
            border-top: $data-table-drag-border;
            border-bottom: $data-table-drag-border;

            &:first-child {
                border-left: $data-table-drag-border;
            }

            &:last-child {
                border-right: $data-table-drag-border;
            }
        }
    }
}
