mambax7/adslight

View on GitHub
assets/js/tablesorter/css/scss/theme.scss

Summary

Maintainability
Test Coverage
/* Tablesorter Custom SCSS Theme by Dan Feidt (https://github.com/HongPong)
 Converted from Custom LESS Theme by Rob Garrison

 To create your own theme, modify the code below and run it through
 a SCSS compiler, like this one: http://beautifytools.com/scss-compiler.php
 or download sass.js from https://github.com/medialize/sass.js

Test out these customization files live
 Basic LESS Theme : http://codepen.io/Mottie/pen/eqBbn
 Bootstrap LESS   : http://codepen.io/Mottie/pen/Ltzpi
 Metro LESS Style : http://codepen.io/Mottie/pen/gCslk
 Basic SCSS       : http://codepen.io/Mottie/pen/LbXdNR

 */

/*** theme ***/
$theme                 : tablesorter-custom;

/*** fonts ***/
$tableHeaderFont       : 11px 'trebuchet ms', verdana, arial;
$tableBodyFont         : 11px 'trebuchet ms', verdana, arial;

/*** color definitions ***/
/* for best results, only change the hue (120),
   leave the saturation (60%) and luminosity (75%) alone
   pick the color from here: http://hslpicker.com/#99E699 */
$headerBackground      : hsl(0, 60%, 75%);
$borderAndBackground   : #cdcdcd;
$overallBorder         : $borderAndBackground 1px solid;
$headerTextColor       : #000;

$bodyBackground        : #fff;
$bodyTextColor         : #000;

$headerAsc             : darken(adjust-hue($headerBackground, 5), 10%); /* darken($headerBackground, 10%); */
$headerDesc            : lighten(adjust-hue($headerBackground, -5), 10%); /* desaturate($headerAsc, 5%); */

$captionBackground     : #fff; /* it might be best to match the document body background color here */
$errorBackground       : #e6bf99; /* ajax error message (added to thead) */

$filterCellBackground  : #eee;
$filterElementTextColor: #333;
$filterElementBkgd     : #fff;
$filterElementBorder   : 1px solid #bbb;
$filterTransitionTime  : 0.1s;
$filterRowHiddenHeight : 4px; /* becomes height using padding (so it's divided by 2) */

$overallPadding        : 4px;
/* 20px should be slightly wider than the icon width to avoid overlap */
$headerPadding         : 4px 20px 4px 4px;

/* url(icons/loading.gif); */
$processingIcon        : url('data:image/gif;base64,R0lGODlhFAAUAKEAAO7u7lpaWgAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh+QQBCgACACwAAAAAFAAUAAACQZRvoIDtu1wLQUAlqKTVxqwhXIiBnDg6Y4eyx4lKW5XK7wrLeK3vbq8J2W4T4e1nMhpWrZCTt3xKZ8kgsggdJmUFACH5BAEKAAIALAcAAAALAAcAAAIUVB6ii7jajgCAuUmtovxtXnmdUAAAIfkEAQoAAgAsDQACAAcACwAAAhRUIpmHy/3gUVQAQO9NetuugCFWAAAh+QQBCgACACwNAAcABwALAAACE5QVcZjKbVo6ck2AF95m5/6BSwEAIfkEAQoAAgAsBwANAAsABwAAAhOUH3kr6QaAcSrGWe1VQl+mMUIBACH5BAEKAAIALAIADQALAAcAAAIUlICmh7ncTAgqijkruDiv7n2YUAAAIfkEAQoAAgAsAAAHAAcACwAAAhQUIGmHyedehIoqFXLKfPOAaZdWAAAh+QQFCgACACwAAAIABwALAAACFJQFcJiXb15zLYRl7cla8OtlGGgUADs=');

/* zebra striping */
@mixin allRows {
    background-color: $bodyBackground;
    color: $bodyTextColor;
}
@mixin evenRows {
    background-color: lighten($headerBackground, 40%);
    color: $bodyTextColor;
}
@mixin oddRows {
    background-color: lighten($headerBackground, 20%);
}

/* hovered rows */
@mixin oddHovered {
    background-color: desaturate($headerBackground, 60%);
    color: $bodyTextColor;
}
@mixin evenHovered {
    background-color: lighten( desaturate($headerBackground, 60%), 10% );
    color: $bodyTextColor;
}

/* Columns widget */
$primaryOdd    : adjust-hue($headerBackground, 10); /* saturate( darken( desaturate($headerBackground, 10%), 10% ), 30%); */
$primaryEven   : lighten( $primaryOdd, 10% );
$secondaryOdd  : $primaryEven;
$secondaryEven : lighten( $primaryEven, 5% );
$tertiaryOdd   : $secondaryEven;
$tertiaryEven  : lighten( $secondaryEven, 5% );

/* Filter widget transition */
@mixin filterWidgetTransition {
    -webkit-transition: line-height $filterTransitionTime ease;
    -moz-transition: line-height $filterTransitionTime ease;
    -o-transition: line-height $filterTransitionTime ease;
    transition: line-height $filterTransitionTime ease;
}

/*** Arrows ***/
$arrowPosition : right 5px center;

/* black */
$unsortedBlack : url(data:image/gif;base64,R0lGODlhFQAJAIAAACMtMP///yH5BAEAAAEALAAAAAAVAAkAAAIXjI+AywnaYnhUMoqt3gZXPmVg94yJVQAAOw==);
$sortAscBlack  : url(data:image/gif;base64,R0lGODlhFQAEAIAAACMtMP///yH5BAEAAAEALAAAAAAVAAQAAAINjI8Bya2wnINUMopZAQA7);
$sortDescBlack : url(data:image/gif;base64,R0lGODlhFQAEAIAAACMtMP///yH5BAEAAAEALAAAAAAVAAQAAAINjB+gC+jP2ptn0WskLQA7);

/* white */
$unsortedWhite : url(data:image/gif;base64,R0lGODlhFQAJAIAAAP///////yH5BAEAAAEALAAAAAAVAAkAAAIXjI+AywnaYnhUMoqt3gZXPmVg94yJVQAAOw==);
$sortAscWhite  : url(data:image/gif;base64,R0lGODlhFQAEAIAAAP///////yH5BAEAAAEALAAAAAAVAAQAAAINjI8Bya2wnINUMopZAQA7);
$sortDescWhite : url(data:image/gif;base64,R0lGODlhFQAEAIAAAP///////yH5BAEAAAEALAAAAAAVAAQAAAINjB+gC+jP2ptn0WskLQA7);

/* automatically choose the correct arrow/text color */
@function set-lightness($a, $b) {
    @if (lightness($headerBackground) >= 50) {
        @return $a;
    } @else {
        @return $b;
    }
}
@mixin headerText {
    color: set-lightness($headerTextColor, lighten($headerTextColor, 90%));
}

@mixin unsorted {
    background-image: set-lightness($unsortedBlack, $unsortedWhite);
}
@mixin sortAsc {
    background-image: set-lightness($sortAscBlack, $sortAscWhite);
}
@mixin sortDesc {
    background-image: set-lightness($sortDescBlack, $sortDescWhite);
}

/* variable theme name - requires less.js 1.3+;
   or just replace (!".#{$theme}") with the contents of $theme
 */
.#{$theme} {
    font: $tableBodyFont;
    background-color: $borderAndBackground;
    margin: 10px 0 15px;
    width: 100%;
    text-align: left;
    border-spacing: 0;
    border: $overallBorder;
    border-width: 1px 0 0 1px;

    th, td {
        border: $overallBorder;
        border-width: 0 1px 1px 0;
    }

    /* style th's outside of the thead */
    th, thead td {
        font: $tableHeaderFont;
        font-weight: bold;
        background-color: $headerBackground;
        @include headerText;
        border-collapse: collapse;
        padding: $overallPadding;
    }

    tbody td, tfoot th, tfoot td {
        padding: $overallPadding;
        vertical-align: top;
    }

    /* style header */
    .tablesorter-header {
        @include unsorted;
        background-repeat: no-repeat;
        background-position: $arrowPosition;
        padding: $headerPadding;
        cursor: pointer;
    }

    .tablesorter-header.sorter-false {
        background-image: none;
        cursor: default;
        padding: $overallPadding;
    }

    .tablesorter-headerAsc {
        background-color: $headerAsc;
        @include sortAsc;
    }

    .tablesorter-headerDesc {
        background-color: $headerDesc;
        @include sortDesc;
    }

    /* tfoot */
    tfoot .tablesorter-headerAsc,
    tfoot .tablesorter-headerDesc {
        /* remove sort arrows from footer */
        background-image: none;
    }

    /* optional disabled input styling */
    .disabled {
        opacity: 0.5;
        filter: alpha(opacity=50);
        cursor: not-allowed;
    }

    /* body */
    tbody {

        td {
            @include allRows;
            padding: $overallPadding;
            vertical-align: top;
        }

        /* Zebra Widget - row alternating colors */
        tr.odd > td {
            @include oddRows;
        }
        tr.even > td {
            @include evenRows;
        }

    }

    /* hovered row colors
       you'll need to add additional lines for
       rows with more than 2 child rows
    */
    tbody > tr.hover td,
    tbody > tr:hover td,
    tbody > tr:hover + tr.tablesorter-childRow > td,
    tbody > tr:hover + tr.tablesorter-childRow + tr.tablesorter-childRow > td,
    tbody > tr.even.hover > td,
    tbody > tr.even:hover > td,
    tbody > tr.even:hover + tr.tablesorter-childRow > td,
    tbody > tr.even:hover + tr.tablesorter-childRow + tr.tablesorter-childRow > td {
        @include evenHovered;
    }
    tbody > tr.odd.hover > td,
    tbody > tr.odd:hover > td,
    tbody > tr.odd:hover + tr.tablesorter-childRow > td,
    tbody > tr.odd:hover + tr.tablesorter-childRow + tr.tablesorter-childRow > td {
        @include oddHovered;
    }

    /* table processing indicator - indeterminate spinner */
    .tablesorter-processing {
        background-image: $processingIcon;
        background-position: center center;
        background-repeat: no-repeat;
    }

    /* Column Widget - column sort colors */
    tr.odd td.primary {
        background-color: $primaryOdd;
    }
    td.primary, tr.even td.primary {
        background-color: $primaryEven;
    }
    tr.odd td.secondary {
        background-color: $secondaryOdd;
    }
    td.secondary, tr.even td.secondary {
        background-color: $secondaryEven;
    }
    tr.odd td.tertiary {
        background-color: $tertiaryOdd;
    }
    td.tertiary, tr.even td.tertiary {
        background-color: $tertiaryEven;
    }

    /* caption (non-theme matching) */
    caption {
        background-color: $captionBackground ;
    }

    /* filter widget */
    .tablesorter-filter-row input,
    .tablesorter-filter-row select {
        width: 98%;
        height: auto;
        margin: 0;
        padding: $overallPadding;
        color: $filterElementTextColor;
        background-color: $filterElementBkgd;
        border: $filterElementBorder;
        -webkit-box-sizing: border-box;
        -moz-box-sizing: border-box;
        box-sizing: border-box;
        @include filterWidgetTransition;
    }
    .tablesorter-filter-row {
        background-color: $filterCellBackground;
    }
    .tablesorter-filter-row td {
        text-align: center;
        background-color: $filterCellBackground;
        line-height: normal;
        text-align: center; /* center the input */
        @include filterWidgetTransition;
    }
    /* hidden filter row */
    .tablesorter-filter-row.hideme td {
        padding: $filterRowHiddenHeight / 2;
        margin: 0;
        line-height: 0;
        cursor: pointer;
    }
    .tablesorter-filter-row.hideme * {
        height: 1px;
        min-height: 0;
        border: 0;
        padding: 0;
        margin: 0;
        /* don't use visibility: hidden because it disables tabbing */
        opacity: 0;
        filter: alpha(opacity=0);
    }
    /* rows hidden by filtering (needed for child rows) */
    .filtered {
        display: none;
    }

    /* ajax error row */
    .tablesorter-errorRow td {
        text-align: center;
        cursor: pointer;
        background-color: $errorBackground;
    }

}