Add horizontal list group modifier (#27970)

Alternate take to #27683 that builds the modifier class based on min-width, such that list groups are stacked until the class's breakpoint is reached. This is less verbose, matches our primary responsive approach, and prevents an extra class. Unfortunately, I believe supporting flush list groups is too much code here, so I've skipped that and made a note in the docs.

Also added examples generate from our breakpoints data file with a protip for how to do equal width items.
This commit is contained in:
Mark Otto 2019-01-06 17:01:36 -08:00 committed by XhmikosR
parent 42bed436e8
commit e6b1eefc73
5 changed files with 66 additions and 2 deletions

View File

@ -174,11 +174,11 @@
},
{
"path": "./dist/css/bootstrap.css",
"maxSize": "25 kB"
"maxSize": "25.5 kB"
},
{
"path": "./dist/css/bootstrap.min.css",
"maxSize": "22.7 kB"
"maxSize": "23.5 kB"
},
{
"path": "./dist/js/bootstrap.bundle.js",

View File

@ -80,6 +80,39 @@
}
// 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);
@each $value in $displays {
.list-group-horizontal#{$infix} {
flex-direction: row;
.list-group-item {
margin-right: -$list-group-border-width;
margin-bottom: 0;
&:first-child {
@include border-left-radius($list-group-border-radius);
@include border-top-right-radius(0);
}
&:last-child {
margin-right: 0;
@include border-right-radius($list-group-border-radius);
@include border-bottom-left-radius(0);
}
}
}
}
}
}
// Flush list items
//
// Remove borders and border-radius to keep list group items edge-to-edge. Most

View File

@ -37,3 +37,15 @@
border-bottom-left-radius: $radius;
}
}
@mixin border-top-right-radius($radius) {
@if $enable-rounded {
border-top-right-radius: $radius;
}
}
@mixin border-bottom-left-radius($radius) {
@if $enable-rounded {
border-bottom-left-radius: $radius;
}
}

View File

@ -246,6 +246,9 @@
.bd-example > .list-group {
max-width: 400px;
}
.bd-example > [class*="list-group-horizontal"] {
max-width: 100%;
}
// Navbars
.bd-example {

View File

@ -100,6 +100,22 @@ Add `.list-group-flush` to remove some borders and rounded corners to render lis
{% endcapture %}
{% include example.html content=example %}
## Horizontal
Add `.list-group-horizontal` to change the layout of list group items from vertical to horizontal across all breakpoints. Alternatively, choose a responsive variant `.list-group-horizontal-{sm|md|lg|xl}` to make a list group horizontal starting at that breakpoint's `min-width`. Currently **horizontal list groups cannot be combined with flush list groups.**
**ProTip:** Want equal-width list group items when horizontal? Add `.flex-fill` to each list group item.
{% for bp in site.data.breakpoints %}
{% capture example %}
<ul class="list-group list-group-horizontal{{ bp.abbr }}">
<li class="list-group-item">Cras justo odio</li>
<li class="list-group-item">Dapibus ac facilisis in</li>
<li class="list-group-item">Morbi leo risus</li>
</ul>
{% endcapture %}
{% include example.html content=example %}{% endfor %}
## Contextual classes
Use contextual classes to style list items with a stateful background and color.