From e2bd4df179abd807100504123dabe79f181045cc Mon Sep 17 00:00:00 2001 From: Will H McMahan Date: Sun, 17 Jul 2016 23:15:40 -0400 Subject: [PATCH] Add full width default for `grid-column` on `null` `grid-column` now defaults to a full width grid object. This will likely also help avoid people using private functions to retrive grid settings. --- contrib/patterns/_grid.scss | 2 +- core/_neat.scss | 1 + core/neat/functions/_neat-column-default.scss | 23 ++++++++++++ core/neat/mixins/_grid-column.scss | 5 +-- .../functions/neat-column-default.scss | 22 ++++++++++++ .../functions/neat_column_default_spec.rb | 35 +++++++++++++++++++ 6 files changed, 85 insertions(+), 3 deletions(-) create mode 100644 core/neat/functions/_neat-column-default.scss create mode 100644 spec/fixtures/functions/neat-column-default.scss create mode 100644 spec/neat/functions/neat_column_default_spec.rb diff --git a/contrib/patterns/_grid.scss b/contrib/patterns/_grid.scss index 8b96f18a..78c29a04 100644 --- a/contrib/patterns/_grid.scss +++ b/contrib/patterns/_grid.scss @@ -3,7 +3,7 @@ } .grid__column { - @include grid-column; + @include grid-column(1); } .grid__column--thirds { diff --git a/core/_neat.scss b/core/_neat.scss index 21fe3394..b36371cd 100644 --- a/core/_neat.scss +++ b/core/_neat.scss @@ -7,6 +7,7 @@ @import "neat/settings/settings"; @import "neat/functions/retrieve-neat-settings"; +@import "neat/functions/neat-column-default"; @import "neat/functions/neat-column-width"; @import "neat/functions/neat-column-ratio"; @import "neat/functions/neat-parse-columns"; diff --git a/core/neat/functions/_neat-column-default.scss b/core/neat/functions/_neat-column-default.scss new file mode 100644 index 00000000..4d687d3d --- /dev/null +++ b/core/neat/functions/_neat-column-default.scss @@ -0,0 +1,23 @@ +@charset "UTF-8"; +/// Determine if a column count has been given. +/// If no columns have been given return the grid's total column count. +/// +/// @argument {map} $grid +/// +/// @argument {number (unitless) | null} $columns +/// +/// @return {number} +/// +/// @example scss +/// _neat-column-default($neat-grid, 4) +/// +/// @access private + +@function _neat-column-default($grid, $columns) { + @if $columns == null { + $_grid-columns: _retrieve-neat-setting($grid, columns); + @return $_grid-columns; + } @else { + @return $columns; + } +} diff --git a/core/neat/mixins/_grid-column.scss b/core/neat/mixins/_grid-column.scss index 0f5ef7d4..61427fc4 100644 --- a/core/neat/mixins/_grid-column.scss +++ b/core/neat/mixins/_grid-column.scss @@ -1,7 +1,7 @@ @charset "UTF-8"; /// Creates Neat a grid column of requested size. /// -/// @argument {number (unitless)} $columns [1] +/// @argument {number (unitless)} $columns [null] /// /// @argument {map} $grid [$neat-grid] /// The grid used to generate the column. @@ -18,7 +18,8 @@ /// margin-left: 20px; /// } -@mixin grid-column($columns: 1, $grid: $neat-grid) { +@mixin grid-column($columns: null, $grid: $neat-grid) { + $columns: _neat-column-default($grid, $columns); $_grid-columns: _retrieve-neat-setting($grid, columns); $_grid-gutter: _retrieve-neat-setting($grid, gutter); diff --git a/spec/fixtures/functions/neat-column-default.scss b/spec/fixtures/functions/neat-column-default.scss new file mode 100644 index 00000000..7439d37c --- /dev/null +++ b/spec/fixtures/functions/neat-column-default.scss @@ -0,0 +1,22 @@ +@import "setup"; + +$eighteen-grid: ( + columns: 18, + gutter: 33px, +); + +.neat-column-default-grid { + content: _neat-column-default($neat-grid, null); +} + +.neat-column-default-grid-custom-col { + content: _neat-column-default($neat-grid, 10); +} + +.neat-column-custom-grid { + content: _neat-column-default($eighteen-grid, null); +} + +.neat-column-custom-grid-custom-col { + content: _neat-column-default($eighteen-grid, 10); +} diff --git a/spec/neat/functions/neat_column_default_spec.rb b/spec/neat/functions/neat_column_default_spec.rb new file mode 100644 index 00000000..dffba559 --- /dev/null +++ b/spec/neat/functions/neat_column_default_spec.rb @@ -0,0 +1,35 @@ +require "spec_helper" + +describe "neat-column-default" do + before(:all) do + ParserSupport.parse_file("functions/neat-column-default") + end + + context "called with default grid" do + it "gets default columns" do + rule = "content: 12" + + expect(".neat-column-default-grid").to have_rule(rule) + end + + it "gets custom columns" do + rule = "content: 10" + + expect(".neat-column-default-grid-custom-col").to have_rule(rule) + end + end + + context "called with custom grid" do + it "gets default columns" do + rule = "content: 18" + + expect(".neat-column-custom-grid").to have_rule(rule) + end + + it "gets custom columns" do + rule = "content: 10" + + expect(".neat-column-custom-grid-custom-col").to have_rule(rule) + end + end +end