UNPKG

4.62 kBSCSSView Raw
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// States: `uk-active`
16//
17// ========================================================================
18
19
20// Variables
21// ========================================================================
22
23$dropdown-z-index: $global-z-index + 20 !default;
24$dropdown-min-width: 200px !default;
25$dropdown-padding: 15px !default;
26$dropdown-background: $global-muted-background !default;
27$dropdown-color: $global-color !default;
28$dropdown-margin: $global-small-margin !default;
29
30$dropdown-nav-item-color: $global-muted-color !default;
31$dropdown-nav-item-hover-color: $global-color !default;
32$dropdown-nav-header-color: $global-emphasis-color !default;
33$dropdown-nav-divider-border-width: $global-border-width !default;
34$dropdown-nav-divider-border: $global-border !default;
35$dropdown-nav-sublist-item-color: $global-muted-color !default;
36$dropdown-nav-sublist-item-hover-color: $global-color !default;
37
38
39/* ========================================================================
40 Component: Dropdown
41 ========================================================================== */
42
43/*
44 * 1. Hide by default
45 * 2. Set position
46 * 3. Set a default width
47 * 4. Style
48 */
49
50.uk-dropdown {
51 /* 1 */
52 display: none;
53 /* 2 */
54 position: absolute;
55 z-index: $dropdown-z-index;
56 /* 3 */
57 box-sizing: border-box;
58 min-width: $dropdown-min-width;
59 /* 4 */
60 padding: $dropdown-padding;
61 background: $dropdown-background;
62 color: $dropdown-color;
63 @if(mixin-exists(hook-dropdown)) {@include hook-dropdown();}
64}
65
66/* Show */
67.uk-dropdown.uk-open { display: block; }
68
69
70/* Nav
71 * Adopts `uk-nav`
72 ========================================================================== */
73
74.uk-dropdown-nav {
75 white-space: nowrap;
76 @if(mixin-exists(hook-dropdown-nav)) {@include hook-dropdown-nav();}
77}
78
79/*
80 * Items
81 */
82
83.uk-dropdown-nav > li > a {
84 color: $dropdown-nav-item-color;
85 @if(mixin-exists(hook-dropdown-nav-item)) {@include hook-dropdown-nav-item();}
86}
87
88/* Hover + Focus + Active */
89.uk-dropdown-nav > li > a:hover,
90.uk-dropdown-nav > li > a:focus,
91.uk-dropdown-nav > li.uk-active > a {
92 color: $dropdown-nav-item-hover-color;
93 @if(mixin-exists(hook-dropdown-nav-item-hover)) {@include hook-dropdown-nav-item-hover();}
94}
95
96/*
97 * Header
98 */
99
100.uk-dropdown-nav .uk-nav-header {
101 color: $dropdown-nav-header-color;
102 @if(mixin-exists(hook-dropdown-nav-header)) {@include hook-dropdown-nav-header();}
103}
104
105/*
106 * Divider
107 */
108
109.uk-dropdown-nav .uk-nav-divider {
110 border-top: $dropdown-nav-divider-border-width solid $dropdown-nav-divider-border;
111 @if(mixin-exists(hook-dropdown-nav-divider)) {@include hook-dropdown-nav-divider();}
112}
113
114/*
115 * Sublists
116 */
117
118.uk-dropdown-nav .uk-nav-sub a { color: $dropdown-nav-sublist-item-color; }
119
120.uk-dropdown-nav .uk-nav-sub a:hover,
121.uk-dropdown-nav .uk-nav-sub a:focus,
122.uk-dropdown-nav .uk-nav-sub li.uk-active > a { color: $dropdown-nav-sublist-item-hover-color; }
123
124
125/* Direction / Alignment modifiers
126 ========================================================================== */
127
128/* Direction */
129[class*='uk-dropdown-top'] { margin-top: (-$dropdown-margin); }
130[class*='uk-dropdown-bottom'] { margin-top: $dropdown-margin; }
131[class*='uk-dropdown-left'] { margin-left: (-$dropdown-margin); }
132[class*='uk-dropdown-right'] { margin-left: $dropdown-margin; }
133
134
135/* Grid modifiers
136 ========================================================================== */
137
138.uk-dropdown-stack .uk-dropdown-grid > * { width: 100% !important; }
139
140
141
142// Hooks
143// ========================================================================
144
145@if(mixin-exists(hook-dropdown-misc)) {@include hook-dropdown-misc();}
146
147// @mixin hook-dropdown(){}
148// @mixin hook-dropdown-nav(){}
149// @mixin hook-dropdown-nav-item(){}
150// @mixin hook-dropdown-nav-item-hover(){}
151// @mixin hook-dropdown-nav-header(){}
152// @mixin hook-dropdown-nav-divider(){}
153// @mixin hook-dropdown-misc(){}