From: Mark Otto Date: Mon, 7 Jan 2019 01:01:36 +0000 (-0800) Subject: Add horizontal list group modifier (#27970) X-Git-Tag: v4.3.0~112 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=e6b1eefc7392478c4acedaebc3c6b27a47e586c4;p=thirdparty%2Fbootstrap.git 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. --- diff --git a/package.json b/package.json index 6139ce3316..2670085e6c 100644 --- a/package.json +++ b/package.json @@ -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", diff --git a/scss/_list-group.scss b/scss/_list-group.scss index 796cc461f4..e688f959f7 100644 --- a/scss/_list-group.scss +++ b/scss/_list-group.scss @@ -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 diff --git a/scss/mixins/_border-radius.scss b/scss/mixins/_border-radius.scss index f32feca90c..3dbc3a6cc0 100644 --- a/scss/mixins/_border-radius.scss +++ b/scss/mixins/_border-radius.scss @@ -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; + } +} diff --git a/site/docs/4.2/assets/scss/_component-examples.scss b/site/docs/4.2/assets/scss/_component-examples.scss index c508764203..ac65e128ce 100644 --- a/site/docs/4.2/assets/scss/_component-examples.scss +++ b/site/docs/4.2/assets/scss/_component-examples.scss @@ -246,6 +246,9 @@ .bd-example > .list-group { max-width: 400px; } +.bd-example > [class*="list-group-horizontal"] { + max-width: 100%; +} // Navbars .bd-example { diff --git a/site/docs/4.2/components/list-group.md b/site/docs/4.2/components/list-group.md index d3becaefbd..251dae672e 100644 --- a/site/docs/4.2/components/list-group.md +++ b/site/docs/4.2/components/list-group.md @@ -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 %} + +{% endcapture %} +{% include example.html content=example %}{% endfor %} + ## Contextual classes Use contextual classes to style list items with a stateful background and color.