/* ------------------------------------------------------------------------------
*
*  # Tokenfield for Bootstrap
*
*  Styles for tokenfield.js - Advanced tagging/tokenizing plugin for Bootstrap
*
*  Version: 1.1
*  Latest update: Mar 10, 2016
*
* ---------------------------------------------------------------------------- */


// Base
// ------------------------------

.tokenfield {
    height: auto;

    // Remove default .form-control styling
    &.form-control {
        height: auto;
        padding: 0 0 @tags-spacing 0;
    }

    // Clear floating
    &:after {
        content: '';
        display: table;
        clear: both;
    }

    // Token
    .token {
        margin: @tags-spacing 0 0 @tags-spacing;
        cursor: default;
        float: left;
        position: relative;
        border-radius: @border-radius-small;

        // Skip tokens with custom background color
        &:not([class*=bg-]) {
            background-color: @tags-bg;
            color: @tags-color;

            // Change background on hover
            &:hover,
            &:focus {
                background-color: @tags-hover-bg;
                color: @tags-hover-color;
            }
        }

        // Invalid
        &.invalid {
            background-color: transparent;
            border: 1px solid transparent;
            border-radius: 0;
            border-bottom: 1px dotted @brand-danger;

            &.active {
                background-color: @gray-lighter;
                border: 1px solid @gray-lighter;
            }
        }

        // Tag text
        .token-label {
            display: block;
            overflow: hidden;
            text-overflow: ellipsis;
            padding: @padding-xs-vertical @padding-small-horizontal;
            padding-right: ((@padding-small-horizontal * 2) + (@icon-font-size / 2));
            font-size: @font-size-small;
            line-height: @line-height-small;
        }

        // Close button
        > .close {
            font-size: 0;
            cursor: pointer;
            position: absolute;
            top: 50%;
            color: inherit;
            right: @padding-small-horizontal;
            line-height: 1;
            margin-top: -(@font-size-mini / 2);

            // Icon
            &:after {
                content: '\ed6a';
                font-family: 'icomoon';
                display: block;
                font-size: @font-size-mini;
                -webkit-font-smoothing: antialiased;
                -moz-osx-font-smoothing: grayscale;
            }

            // Hover action
            &:hover {
                .opacity(1);
            }
        }
    }


    //
    // Input field
    //

    // Make typeahead input auto width
    .twitter-typeahead {
        width: auto;
    }

    // Input field
    .token-input {
        direction: ltr;
        background: none;
        width: 90px!important;
        max-width: 50%;
        min-width: 60px;
        padding: (@padding-base-vertical - @tags-spacing) @padding-small-horizontal;
        margin-top: @tags-spacing;
        margin-left: @tags-spacing;
        font-size: @font-size-small;
        line-height: @line-height-small;
        border: 0;
        outline: 0;
    }


    //
    // States
    //

    // Readonly
    &.readonly .token {
        .token-label {
            padding-right: @padding-small-horizontal;
        }

        // Hide close button in readonly
        .close {
            display: none;
        }
    }

    // Disabled
    &.disabled {
        cursor: @cursor-disabled;
        
        // Token style
        .token {

            // Mute tokens
            &,
            .close {
                .opacity(0.5);
            }

            // Revert default background on hover
            &:hover,
            &:focus {
                background-color: @tags-bg;
                color: @tags-color;
            }
        }

        // Add disabled cursor
        &,
        .token-input,
        .token,
        .token .close {
            cursor: @cursor-disabled;
        }
    }
}



// Sizing
// ------------------------------

// Large
.input-group-lg,
.tokenfield.input-lg {

    // Tag look
    .token > .token-label,
    .token > span,
    .token-input {
        font-size: @font-size-base;
        line-height: @line-height-computed;
        padding: (@padding-large-vertical - @tags-spacing) @padding-base-horizontal;
    }

    // Right spacing for close button
    .token > .token-label,
    .token > span {
        padding-right: ((@padding-base-horizontal * 1.5) + @font-size-mini);
    }

    // Close button
    .token > .close {
        right: @padding-base-horizontal;
    }

    // Readonly
    &.readonly .token > .token-label {
        padding-right: @padding-base-horizontal;
    }
}

// Small
.input-group-sm,
.tokenfield.input-sm {

    // Tags
    .token > .token-label,
    .token > span {
        padding: (@padding-small-vertical - @tags-spacing) @padding-small-horizontal;
        padding-right: ((@padding-small-horizontal * 1.5) + @font-size-mini);
    }

    // Input
    .token-input {
        padding: (@padding-small-vertical - @tags-spacing) @padding-small-horizontal;
    }

    // Close button
    .token > .close {
        right: @padding-small-horizontal;
    }

    // Readonly
    &.readonly .token > .token-label {
        padding-right: @padding-small-horizontal;
    }
}
