Project

General

Profile

1
// Name:            Dropdown
2
// Description:     Component to create dropdown menus
3
//
4
// Component:       `uk-dropdown`
5
//
6
// Adopted:         `uk-dropdown-nav`
7
//
8
// Modifiers:       `uk-dropdown-top-*`
9
//                  `uk-dropdown-bottom-*`
10
//                  `uk-dropdown-left-*`
11
//                  `uk-dropdown-right-*`
12
//                  `uk-dropdown-stack`
13
//                  `uk-dropdown-grid`
14
//
15
// ========================================================================
16

    
17

    
18
// Variables
19
// ========================================================================
20

    
21
$dropdown-z-index:                               $global-z-index + 20 !default;
22
$dropdown-min-width:                             200px !default;
23
$dropdown-padding:                               15px !default;
24
$dropdown-background:                            $global-muted-background !default;
25
$dropdown-color:                                 $global-color !default;
26
$dropdown-margin:                                $global-small-margin !default;
27

    
28
$dropdown-nav-item-color:                        $global-muted-color !default;
29
$dropdown-nav-item-hover-color:                  $global-color !default;
30
$dropdown-nav-header-color:                      $global-emphasis-color !default;
31
$dropdown-nav-divider-border-width:              $global-border-width !default;
32
$dropdown-nav-divider-border:                    $global-border !default;
33
$dropdown-nav-sublist-item-color:                $global-muted-color !default;
34
$dropdown-nav-sublist-item-hover-color:          $global-color !default;
35

    
36

    
37
/* ========================================================================
38
   Component: Dropdown
39
 ========================================================================== */
40

    
41
/*
42
 * 1. Hide by default
43
 * 2. Set position
44
 * 3. Set a default width
45
 * 4. Style
46
 */
47

    
48
.uk-dropdown {
49
    /* 1 */
50
    display: none;
51
    /* 2 */
52
    position: absolute;
53
    z-index: $dropdown-z-index;
54
    /* 3 */
55
    box-sizing: border-box;
56
    min-width: $dropdown-min-width;
57
    /* 4 */
58
    padding: $dropdown-padding;
59
    background: $dropdown-background;
60
    color: $dropdown-color;
61
    @if(mixin-exists(hook-dropdown)) {@include hook-dropdown();}
62
}
63

    
64
/* Show */
65
.uk-dropdown.uk-open { display: block; }
66

    
67

    
68
/* Nav
69
 * Adopts `uk-nav`
70
 ========================================================================== */
71

    
72
.uk-dropdown-nav {
73
    white-space: nowrap;
74
    @if(mixin-exists(hook-dropdown-nav)) {@include hook-dropdown-nav();}
75
}
76

    
77
/*
78
 * Items
79
 */
80

    
81
.uk-dropdown-nav > li > a {
82
    color: $dropdown-nav-item-color;
83
    @if(mixin-exists(hook-dropdown-nav-item)) {@include hook-dropdown-nav-item();}
84
}
85

    
86
/* Hover + Focus + Active */
87
.uk-dropdown-nav > li > a:hover,
88
.uk-dropdown-nav > li > a:focus,
89
.uk-dropdown-nav > li.uk-active > a {
90
    color: $dropdown-nav-item-hover-color;
91
    @if(mixin-exists(hook-dropdown-nav-item-hover)) {@include hook-dropdown-nav-item-hover();}
92
}
93

    
94
/*
95
 * Header
96
 */
97

    
98
.uk-dropdown-nav .uk-nav-header {
99
    color: $dropdown-nav-header-color;
100
    @if(mixin-exists(hook-dropdown-nav-header)) {@include hook-dropdown-nav-header();}
101
}
102

    
103
/*
104
 * Divider
105
 */
106

    
107
.uk-dropdown-nav .uk-nav-divider {
108
    border-top: $dropdown-nav-divider-border-width solid $dropdown-nav-divider-border;
109
    @if(mixin-exists(hook-dropdown-nav-divider)) {@include hook-dropdown-nav-divider();}
110
}
111

    
112
/*
113
 * Sublists
114
 */
115

    
116
.uk-dropdown-nav .uk-nav-sub a { color: $dropdown-nav-sublist-item-color; }
117

    
118
.uk-dropdown-nav .uk-nav-sub a:hover,
119
.uk-dropdown-nav .uk-nav-sub a:focus { color: $dropdown-nav-sublist-item-hover-color; }
120

    
121

    
122
/* Direction / Alignment modifiers
123
 ========================================================================== */
124

    
125
/* Direction */
126
[class*='uk-dropdown-top'] { margin-top: (-$dropdown-margin); }
127
[class*='uk-dropdown-bottom'] { margin-top: $dropdown-margin; }
128
[class*='uk-dropdown-left'] { margin-left: (-$dropdown-margin); }
129
[class*='uk-dropdown-right'] { margin-left: $dropdown-margin; }
130

    
131

    
132
/* Grid modifiers
133
 ========================================================================== */
134

    
135
.uk-dropdown-stack .uk-dropdown-grid > * { width: 100% !important; }
136

    
137

    
138

    
139
// Hooks
140
// ========================================================================
141

    
142
@if(mixin-exists(hook-dropdown-misc)) {@include hook-dropdown-misc();}
143

    
144
// @mixin hook-dropdown(){}
145
// @mixin hook-dropdown-nav(){}
146
// @mixin hook-dropdown-nav-item(){}
147
// @mixin hook-dropdown-nav-item-hover(){}
148
// @mixin hook-dropdown-nav-header(){}
149
// @mixin hook-dropdown-nav-divider(){}
150
// @mixin hook-dropdown-misc(){}
(23-23/66)