// Name:            Dropdown
// Description:     Defines styles for a toggleable dropdown
//
// Component:       `uk-dropdown`
//
// Sub-objects:     `uk-dropdown-overlay`
//
// Modifiers:       `uk-dropdown-blank`
//                  `uk-dropdown-top`
//                  `uk-dropdown-bottom`
//                  `uk-dropdown-left`
//                  `uk-dropdown-right`
//                  `uk-dropdown-justify`
//                  `uk-dropdown-grid`
//                  `uk-dropdown-width-2`
//                  `uk-dropdown-width-3`
//                  `uk-dropdown-width-4`
//                  `uk-dropdown-width-5`
//                  `uk-dropdown-stack`
//                  `uk-dropdown-small`
//                  `uk-dropdown-navbar`
//                  `uk-dropdown-scrollable`
//
// States:          `uk-open`
//
// Uses:            Animation
//                  Grid: `uk-width-*`
//                  Panel: `uk-panel`
//                  Nav: `uk-nav`
//
// ========================================================================


// Variables
// ========================================================================

$dropdown-z-index:                               970 !default;
$dropdown-width:                                 200px !default;
$dropdown-margin-top:                            5px !default;
$dropdown-padding:                               15px !default;
$dropdown-background:                            #f5f5f5 !default;
$dropdown-color:                                 #444 !default;
$dropdown-font-size:                             1rem !default;
$dropdown-animation:                             uk-fade !default;

$dropdown-divider-border-width:                  1px !default;
$dropdown-divider-border:                        #ddd !default;

$dropdown-small-padding:                         5px !default;

$dropdown-navbar-margin:                         0 !default;
$dropdown-navbar-background:                     #f5f5f5 !default;
$dropdown-navbar-color:                          #444 !default;
$dropdown-navbar-animation:                      uk-slide-top-fixed !default;

$dropdown-scrollable-height:                     200px !default;


/* ========================================================================
   Component: Dropdown
 ========================================================================== */

/*
 * 1. Hide by default
 * 2. Set position
 * 3. Box-sizing is needed for `uk-dropdown-justify`
 * 4. Set width
 */

.uk-dropdown,
.uk-dropdown-blank {
    /* 1 */
    display: none;
    /* 2 */
    position: absolute;
    z-index: $dropdown-z-index;
    /* 3 */
    box-sizing: border-box;
    /* 4 */
    width: $dropdown-width;
}

/*
 * Dropdown style
 * 1. Reset button group whitespace hack
 */

.uk-dropdown {
    padding: $dropdown-padding;
    background: $dropdown-background;
    color: $dropdown-color;
    /* 1 */
    font-size: $dropdown-font-size;
    vertical-align: top;
    @include hook-dropdown();
}

/*
 * 1. Show dropdown
 * 2. Set animation
 * 3. Needed for scale animation
 */

.uk-open > .uk-dropdown,
.uk-open > .uk-dropdown-blank {
    /* 1 */
    display: block;
    /* 2 */
    -webkit-animation: $dropdown-animation 0.2s ease-in-out;
    animation: $dropdown-animation 0.2s ease-in-out;
    /* 3 */
    -webkit-transform-origin: 0 0;
    transform-origin: 0 0;
}

/* Alignment modifiers
 ========================================================================== */

/*
 * Modifier
 */

.uk-dropdown-top { margin-top: (-1 * $dropdown-margin-top); }
.uk-dropdown-bottom { margin-top: $dropdown-margin-top; }
.uk-dropdown-left { margin-left: (-1 * $dropdown-margin-top); }
.uk-dropdown-right { margin-left: $dropdown-margin-top; }


/* Nav in dropdown
 ========================================================================== */

.uk-dropdown .uk-nav { margin: 0 (-$dropdown-padding); }


/* Grid and panel in dropdown
 ========================================================================== */

/*
* Vertical gutter
*/

/*
 * Grid
 * Higher specificity to override large gutter
 */

.uk-grid .uk-dropdown-grid + .uk-dropdown-grid { margin-top: $dropdown-padding; }

/* Panels */
.uk-dropdown-grid > [class*='uk-width-'] > .uk-panel + .uk-panel { margin-top: $dropdown-padding; }

/* Tablet and bigger */
@media (min-width: $breakpoint-medium) {

    /*
     * Horizontal gutter
     */

    .uk-dropdown:not(.uk-dropdown-stack) > .uk-dropdown-grid {
        margin-left: -$dropdown-padding ;
        margin-right: -$dropdown-padding;
    }

    .uk-dropdown:not(.uk-dropdown-stack) > .uk-dropdown-grid > [class*='uk-width-'] {
        padding-left: $dropdown-padding;
        padding-right: $dropdown-padding;
    }

    /*
     * Column divider
     */

    .uk-dropdown:not(.uk-dropdown-stack) > .uk-dropdown-grid > [class*='uk-width-']:nth-child(n+2) { border-left: $dropdown-divider-border-width solid $dropdown-divider-border; }

    /*
     * Width multiplier for dropdown columns
     */

    .uk-dropdown-width-2:not(.uk-dropdown-stack) { width: ($dropdown-width * 2); }
    .uk-dropdown-width-3:not(.uk-dropdown-stack) { width: ($dropdown-width * 3); }
    .uk-dropdown-width-4:not(.uk-dropdown-stack) { width: ($dropdown-width * 4); }
    .uk-dropdown-width-5:not(.uk-dropdown-stack) { width: ($dropdown-width * 5); }

}

/* Phone landscape and smaller */
@media (max-width: $breakpoint-small-max) {

    /*
     * Stack columns and take full width
     */

    .uk-dropdown-grid > [class*='uk-width-'] { width: 100%; }

    /*
     * Vertical gutter
     */

    .uk-dropdown-grid > [class*='uk-width-']:nth-child(n+2) { margin-top: $dropdown-padding; }

}

/*
* Stack grid columns
*/

.uk-dropdown-stack > .uk-dropdown-grid > [class*='uk-width-'] { width: 100%; }

.uk-dropdown-stack > .uk-dropdown-grid > [class*='uk-width-']:nth-child(n+2) { margin-top: $dropdown-padding; }



/* Modifier `uk-dropdown-small`
 ========================================================================== */

/*
 * Set min-width and text expands dropdown if needed
 */

.uk-dropdown-small {
    min-width: 150px;
    width: auto;
    padding: $dropdown-small-padding;
    white-space: nowrap;
}

/*
 * Nav in dropdown
 */

.uk-dropdown-small .uk-nav { margin: 0 (-$dropdown-small-padding); }


/* Modifier: `uk-dropdown-navbar`
 ========================================================================== */

.uk-dropdown-navbar {
    margin-top: $dropdown-navbar-margin;
    background: $dropdown-navbar-background;
    color: $dropdown-navbar-color;
    @include hook-dropdown-navbar();
}

.uk-open > .uk-dropdown-navbar {
    -webkit-animation: $dropdown-navbar-animation 0.2s ease-in-out;
    animation: $dropdown-navbar-animation 0.2s ease-in-out;
}


/* Modifier `uk-dropdown-scrollable`
 ========================================================================== */

/*
 * Usefull for long lists
 */

.uk-dropdown-scrollable {
    overflow-y: auto;
    max-height: $dropdown-scrollable-height;
}


/* Sub-object: `uk-dropdown-overlay`
 ========================================================================== */

.uk-dropdown-overlay {
    @include hook-dropdown-overlay();
}



// Hooks
// ========================================================================

@include hook-dropdown-misc();

// @mixin hook-dropdown(){}
// @mixin hook-dropdown-navbar(){}
// @mixin hook-dropdown-overlay(){}
// @mixin hook-dropdown-misc(){}
