From f1e4324c378368cec31964500153e400cbcd22b0 Mon Sep 17 00:00:00 2001 From: Adam Wathan Date: Fri, 4 Aug 2017 09:01:34 -0400 Subject: [PATCH 1/2] Make grid generator parameterized instead of using globals Also makes it possible to opt-out of responsive grid --- src/generators/grid.less | 69 ++++++++++++++++++++++++++++++++++++++++ src/utilities/grid.less | 64 +------------------------------------ 2 files changed, 70 insertions(+), 63 deletions(-) create mode 100644 src/generators/grid.less diff --git a/src/generators/grid.less b/src/generators/grid.less new file mode 100644 index 000000000..0a022e2ff --- /dev/null +++ b/src/generators/grid.less @@ -0,0 +1,69 @@ +.generate-grid-columns(@grid-column-count; @prefix; @i: 1) when (@i <= @grid-column-count) { + .@{prefix}col-@{i} { + flex-basis: 100% * (@i / @grid-column-count); + max-width: 100% * (@i / @grid-column-count); + } + + @offset-i: @i - 1; + .@{prefix}offset-@{offset-i} { + margin-left: 100% * (@offset-i / @grid-column-count); + } + + .generate-grid-columns(@grid-column-count; @prefix; @i + 1); +} + +.generate-responsive-grid(@grid-column-count; @screen; @min-width) { + @prefix: ~"@{screen}\:"; + + @media (min-width: @min-width) { + .@{prefix}col { + flex-grow: 1; + flex-basis: 0; + max-width: 100%; + min-width: 0; + } + + .@{prefix}col-first { + order: -1; + } + + .@{prefix}col-last { + order: 1; + } + + .generate-grid-columns(@grid-column-count; @prefix); + } +} + +.generate-responsive-grids(@grid-column-count; @screens; @i: 1) when (@i <= length(@screens)) { + @screen: extract(@screens, @i); + @name: extract(@screen, 1); + @screen-width: extract(@screen, 2); + + .generate-responsive-grid(@grid-column-count; @name; @screen-width); + .generate-responsive-grids(@grid-column-count; @screens; @i + 1); +} + +.generate-all-grids(@grid-column-count) { + .col-auto { + flex-grow: 1; + flex-basis: 0; + max-width: 100%; + } + .col-first { + order: -1; + } + .col-last { + order: 1; + } + .generate-grid-columns(@grid-column-count; ~""); +} + +.generate-all-grids(@grid-column-count; none) { + .generate-all-grids(@grid-column-count); +} + +.generate-all-grids(@grid-column-count; @screens) when not (@screens = none) { + .generate-all-grids(@grid-column-count); + .generate-responsive-grids(@grid-column-count; @screens); +} diff --git a/src/utilities/grid.less b/src/utilities/grid.less index 4c20f8379..723bea4a1 100644 --- a/src/utilities/grid.less +++ b/src/utilities/grid.less @@ -13,66 +13,4 @@ flex-wrap: wrap; } -.generate-grid-columns(@prefix; @i: 1) when (@i <= @grid-column-count) { - .@{prefix}col-@{i} { - flex-basis: 100% * (@i / @grid-column-count); - max-width: 100% * (@i / @grid-column-count); - } - - @offset-i: @i - 1; - .@{prefix}offset-@{offset-i} { - margin-left: 100% * (@offset-i / @grid-column-count); - } - - .generate-grid-columns(@prefix; @i + 1); -} - -.generate-responsive-grid(@screen, @min-width) { - @prefix: ~"@{screen}\:"; - - @media (min-width: @min-width) { - .@{prefix}col { - flex-grow: 1; - flex-basis: 0; - max-width: 100%; - min-width: 0; - } - - .@{prefix}col-first { - order: -1; - } - - .@{prefix}col-last { - order: 1; - } - - .generate-grid-columns(@prefix); - } -} - -.generate-responsive-grids(@i: 1) when (@i <= length(@screens)) { - @screen: extract(@screens, @i); - @name: extract(@screen, 1); - @screen-width: extract(@screen, 2); - - .generate-responsive-grid(@name, @screen-width); - .generate-responsive-grids(@i + 1); -} - -.generate-all-grids() { - .col-auto { - flex-grow: 1; - flex-basis: 0; - max-width: 100%; - } - .col-first { - order: -1; - } - .col-last { - order: 1; - } - .generate-grid-columns(~""); - .generate-responsive-grids(); -} - -.generate-all-grids(); +.generate-all-grids(@grid-column-count; @screens); From 60da4d9b2f7161dc09715236a54013348d5f0134 Mon Sep 17 00:00:00 2001 From: Adam Wathan Date: Fri, 4 Aug 2017 09:05:00 -0400 Subject: [PATCH 2/2] Import grid generator --- src/generators.less | 1 + 1 file changed, 1 insertion(+) diff --git a/src/generators.less b/src/generators.less index d81ee1639..a165f01c1 100644 --- a/src/generators.less +++ b/src/generators.less @@ -5,6 +5,7 @@ @import "generators/backgrounds"; @import "generators/border-colors"; @import "generators/constrain"; +@import "generators/grid"; @import "generators/text-colors"; @import "generators/text-weights"; @import "generators/text-sizes";