-
Notifications
You must be signed in to change notification settings - Fork 29
/
Copy path_list-group.less
190 lines (157 loc) · 4.61 KB
/
_list-group.less
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
// Base class
//
// Easily usable on <ul>, <ol>, or <div>.
.list-group {
display: flex;
flex-direction: column;
// No need to set list-style: none; since .list-group-item is block level
padding-left: 0; // reset padding because ul and ol
margin-bottom: 0;
#border-radius(@list-group-border-radius);
}
// Interactive list items
//
// Use anchor or button elements instead of `li`s or `div`s to create interactive
// list items. Includes an extra `.active` modifier class for selected items.
.list-group-item-action {
width: 100%; // For `<button>`s (anchors become 100% by default though)
color: @list-group-action-color;
text-align: inherit; // For `<button>`s (anchors inherit)
// Hover state
#hover-focus({
z-index: 1; // Place hover/focus items above their siblings for proper border styling
color: @list-group-action-hover-color;
text-decoration: none;
background-color: @list-group-hover-bg;
});
&:active {
color: @list-group-action-active-color;
background-color: @list-group-action-active-bg;
}
}
// Individual list items
//
// Use on `li`s or `div`s within the `.list-group` parent.
.list-group-item {
position: relative;
display: block;
padding: @list-group-item-padding-y @list-group-item-padding-x;
// LESS PORT: Less doesn’t strip “empty” property values so we have to check for a value first.
& when not (@list-group-color = ~"") { color: @list-group-color; }
& when not (@link-decoration = none) { text-decoration: none; }
background-color: @list-group-bg;
border: @list-group-border-width solid @list-group-border-color;
&:first-child {
#border-top-radius(inherit);
}
&:last-child {
#border-bottom-radius(inherit);
}
&.disabled,
&:disabled {
color: @list-group-disabled-color;
pointer-events: none;
background-color: @list-group-disabled-bg;
}
// Include both here for `<a>`s and `<button>`s
&.active {
z-index: 2; // Place active items above their siblings for proper border styling
color: @list-group-active-color;
background-color: @list-group-active-bg;
border-color: @list-group-active-border-color;
}
& + & {
border-top-width: 0;
&.active {
margin-top: -@list-group-border-width;
border-top-width: @list-group-border-width;
}
}
}
// Horizontal
//
// Change the layout of list group items from vertical (default) to horizontal.
//@each $breakpoint in map-keys($grid-breakpoints) {
// @include media-breakpoint-up($breakpoint) {
// $infix: breakpoint-infix($breakpoint, $grid-breakpoints);
//
// .list-group-horizontal#{$infix} {
// flex-direction: row;
//
// .list-group-item {
// &:first-child {
// @include border-bottom-left-radius($list-group-border-radius);
// @include border-top-right-radius(0);
// }
//
// &:last-child {
// @include border-top-right-radius($list-group-border-radius);
// @include border-bottom-left-radius(0);
// }
//
// &.active {
// margin-top: 0;
// }
//
// & + .list-group-item {
// border-top-width: $list-group-border-width;
// border-left-width: 0;
//
// &.active {
// margin-left: -$list-group-border-width;
// border-left-width: $list-group-border-width;
// }
// }
// }
// }
// }
//}
each(map-keys(@grid-breakpoints), #(@breakpoint) {
#media-breakpoint-up(@breakpoint, {
@infix: breakpoint-infix(@breakpoint, @grid-breakpoints);
.list-group-horizontal@{infix} {
flex-direction: row;
> .list-group-item {
&:first-child {
#border-bottom-left-radius(@list-group-border-radius);
#border-top-right-radius(0);
}
&:last-child {
#border-top-right-radius(@list-group-border-radius);
#border-bottom-left-radius(0);
}
&.active {
margin-top: 0;
}
+ .list-group-item {
border-top-width: @list-group-border-width;
border-left-width: 0;
&.active {
margin-left: -@list-group-border-width;
border-left-width: @list-group-border-width;
}
}
}
}
});
});
// Flush list items
//
// Remove borders and border-radius to keep list group items edge-to-edge. Most
// useful within other components (e.g., cards).
.list-group-flush {
#border-radius(0);
> .list-group-item {
border-width: 0 0 @list-group-border-width;
&:last-child {
border-bottom-width: 0;
}
}
}
// Contextual variants
//
// Add modifier classes to change text and background color on individual items.
// Organizationally, this must come after the `:hover` states.
each(@theme-colors, #(@value, @color) {
#list-group-item-variant(@color, theme-color-level(@color, -9), theme-color-level(@color, 6));
});