bootstrap-generators 3.1.1.3 → 3.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (142) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +4 -5
  3. data/README.md +8 -8
  4. data/Rakefile +7 -5
  5. data/lib/bootstrap/generators/version.rb +1 -1
  6. data/lib/generators/bootstrap/install/templates/assets/stylesheets/bootstrap-variables.less +40 -23
  7. data/lib/generators/bootstrap/install/templates/assets/stylesheets/bootstrap-variables.scss +41 -24
  8. data/vendor/assets/javascripts/bootstrap.js +6 -6
  9. data/vendor/assets/javascripts/bootstrap/affix.js +19 -14
  10. data/vendor/assets/javascripts/bootstrap/alert.js +10 -6
  11. data/vendor/assets/javascripts/bootstrap/button.js +11 -8
  12. data/vendor/assets/javascripts/bootstrap/carousel.js +49 -31
  13. data/vendor/assets/javascripts/bootstrap/collapse.js +22 -22
  14. data/vendor/assets/javascripts/bootstrap/dropdown.js +17 -13
  15. data/vendor/assets/javascripts/bootstrap/modal.js +66 -29
  16. data/vendor/assets/javascripts/bootstrap/popover.js +10 -7
  17. data/vendor/assets/javascripts/bootstrap/scrollspy.js +40 -23
  18. data/vendor/assets/javascripts/bootstrap/tab.js +11 -8
  19. data/vendor/assets/javascripts/bootstrap/tooltip.js +115 -57
  20. data/vendor/assets/javascripts/bootstrap/transition.js +18 -7
  21. data/vendor/assets/stylesheets/bootstrap.css.erb +2740 -2322
  22. data/vendor/twitter/bootstrap/less/alerts.less +4 -3
  23. data/vendor/twitter/bootstrap/less/badges.less +18 -18
  24. data/vendor/twitter/bootstrap/less/bootstrap.less +3 -2
  25. data/vendor/twitter/bootstrap/less/button-groups.less +16 -2
  26. data/vendor/twitter/bootstrap/less/buttons.less +0 -2
  27. data/vendor/twitter/bootstrap/less/carousel.less +15 -4
  28. data/vendor/twitter/bootstrap/less/code.less +6 -1
  29. data/vendor/twitter/bootstrap/less/component-animations.less +6 -4
  30. data/vendor/twitter/bootstrap/less/dropdowns.less +2 -0
  31. data/vendor/twitter/bootstrap/less/forms.less +144 -42
  32. data/vendor/twitter/bootstrap/less/glyphicons.less +5 -5
  33. data/vendor/twitter/bootstrap/less/input-groups.less +6 -2
  34. data/vendor/twitter/bootstrap/less/jumbotron.less +4 -0
  35. data/vendor/twitter/bootstrap/less/labels.less +1 -1
  36. data/vendor/twitter/bootstrap/less/list-group.less +22 -1
  37. data/vendor/twitter/bootstrap/less/mixins.less +35 -925
  38. data/vendor/twitter/bootstrap/less/mixins/alerts.less +14 -0
  39. data/vendor/twitter/bootstrap/less/mixins/background-variant.less +8 -0
  40. data/vendor/twitter/bootstrap/less/mixins/border-radius.less +18 -0
  41. data/vendor/twitter/bootstrap/less/mixins/buttons.less +50 -0
  42. data/vendor/twitter/bootstrap/less/mixins/center-block.less +7 -0
  43. data/vendor/twitter/bootstrap/less/mixins/clearfix.less +22 -0
  44. data/vendor/twitter/bootstrap/less/mixins/forms.less +81 -0
  45. data/vendor/twitter/bootstrap/less/mixins/gradients.less +59 -0
  46. data/vendor/twitter/bootstrap/less/mixins/grid-framework.less +91 -0
  47. data/vendor/twitter/bootstrap/less/mixins/grid.less +122 -0
  48. data/vendor/twitter/bootstrap/less/mixins/hide-text.less +21 -0
  49. data/vendor/twitter/bootstrap/less/mixins/image.less +34 -0
  50. data/vendor/twitter/bootstrap/less/mixins/labels.less +12 -0
  51. data/vendor/twitter/bootstrap/less/mixins/list-group.less +29 -0
  52. data/vendor/twitter/bootstrap/less/mixins/nav-divider.less +10 -0
  53. data/vendor/twitter/bootstrap/less/mixins/nav-vertical-align.less +9 -0
  54. data/vendor/twitter/bootstrap/less/mixins/opacity.less +8 -0
  55. data/vendor/twitter/bootstrap/less/mixins/pagination.less +23 -0
  56. data/vendor/twitter/bootstrap/less/mixins/panels.less +24 -0
  57. data/vendor/twitter/bootstrap/less/mixins/progress-bar.less +10 -0
  58. data/vendor/twitter/bootstrap/less/mixins/reset-filter.less +8 -0
  59. data/vendor/twitter/bootstrap/less/mixins/resize.less +6 -0
  60. data/vendor/twitter/bootstrap/less/mixins/responsive-visibility.less +15 -0
  61. data/vendor/twitter/bootstrap/less/mixins/size.less +10 -0
  62. data/vendor/twitter/bootstrap/less/mixins/tab-focus.less +9 -0
  63. data/vendor/twitter/bootstrap/less/mixins/table-row.less +28 -0
  64. data/vendor/twitter/bootstrap/less/mixins/text-emphasis.less +8 -0
  65. data/vendor/twitter/bootstrap/less/mixins/text-overflow.less +8 -0
  66. data/vendor/twitter/bootstrap/less/mixins/vendor-prefixes.less +224 -0
  67. data/vendor/twitter/bootstrap/less/modals.less +18 -7
  68. data/vendor/twitter/bootstrap/less/navbar.less +41 -2
  69. data/vendor/twitter/bootstrap/less/navs.less +1 -1
  70. data/vendor/twitter/bootstrap/less/normalize.less +20 -18
  71. data/vendor/twitter/bootstrap/less/panels.less +8 -6
  72. data/vendor/twitter/bootstrap/less/popovers.less +1 -1
  73. data/vendor/twitter/bootstrap/less/progress-bars.less +27 -2
  74. data/vendor/twitter/bootstrap/less/responsive-embed.less +34 -0
  75. data/vendor/twitter/bootstrap/less/responsive-utilities.less +103 -1
  76. data/vendor/twitter/bootstrap/less/scaffolding.less +17 -1
  77. data/vendor/twitter/bootstrap/less/tables.less +4 -4
  78. data/vendor/twitter/bootstrap/less/theme.less +11 -0
  79. data/vendor/twitter/bootstrap/less/type.less +32 -12
  80. data/vendor/twitter/bootstrap/less/utilities.less +1 -0
  81. data/vendor/twitter/bootstrap/less/variables.less +40 -23
  82. data/vendor/twitter/bootstrap/sass/_alerts.scss +4 -3
  83. data/vendor/twitter/bootstrap/sass/_badges.scss +13 -11
  84. data/vendor/twitter/bootstrap/sass/_button-groups.scss +16 -2
  85. data/vendor/twitter/bootstrap/sass/_buttons.scss +0 -2
  86. data/vendor/twitter/bootstrap/sass/_carousel.scss +15 -4
  87. data/vendor/twitter/bootstrap/sass/_code.scss +6 -1
  88. data/vendor/twitter/bootstrap/sass/_component-animations.scss +10 -4
  89. data/vendor/twitter/bootstrap/sass/_dropdowns.scss +2 -0
  90. data/vendor/twitter/bootstrap/sass/_forms.scss +144 -42
  91. data/vendor/twitter/bootstrap/sass/_glyphicons.scss +4 -0
  92. data/vendor/twitter/bootstrap/sass/_input-groups.scss +6 -2
  93. data/vendor/twitter/bootstrap/sass/_jumbotron.scss +4 -0
  94. data/vendor/twitter/bootstrap/sass/_labels.scss +11 -9
  95. data/vendor/twitter/bootstrap/sass/_list-group.scss +22 -1
  96. data/vendor/twitter/bootstrap/sass/_mixins.scss +35 -943
  97. data/vendor/twitter/bootstrap/sass/_modals.scss +18 -7
  98. data/vendor/twitter/bootstrap/sass/_navbar.scss +41 -2
  99. data/vendor/twitter/bootstrap/sass/_navs.scss +1 -1
  100. data/vendor/twitter/bootstrap/sass/_normalize.scss +20 -18
  101. data/vendor/twitter/bootstrap/sass/_panels.scss +8 -6
  102. data/vendor/twitter/bootstrap/sass/_popovers.scss +1 -1
  103. data/vendor/twitter/bootstrap/sass/_progress-bars.scss +27 -2
  104. data/vendor/twitter/bootstrap/sass/_responsive-embed.scss +34 -0
  105. data/vendor/twitter/bootstrap/sass/_responsive-utilities.scss +101 -1
  106. data/vendor/twitter/bootstrap/sass/_scaffolding.scss +17 -1
  107. data/vendor/twitter/bootstrap/sass/_tables.scss +4 -4
  108. data/vendor/twitter/bootstrap/sass/_theme.scss +11 -0
  109. data/vendor/twitter/bootstrap/sass/_type.scss +32 -12
  110. data/vendor/twitter/bootstrap/sass/_utilities.scss +1 -0
  111. data/vendor/twitter/bootstrap/sass/_variables.scss +41 -24
  112. data/vendor/twitter/bootstrap/sass/bootstrap.scss +3 -2
  113. data/vendor/twitter/bootstrap/sass/mixins/_alerts.scss +14 -0
  114. data/vendor/twitter/bootstrap/sass/mixins/_background-variant.scss +11 -0
  115. data/vendor/twitter/bootstrap/sass/mixins/_border-radius.scss +18 -0
  116. data/vendor/twitter/bootstrap/sass/mixins/_buttons.scss +50 -0
  117. data/vendor/twitter/bootstrap/sass/mixins/_center-block.scss +7 -0
  118. data/vendor/twitter/bootstrap/sass/mixins/_clearfix.scss +22 -0
  119. data/vendor/twitter/bootstrap/sass/mixins/_forms.scss +84 -0
  120. data/vendor/twitter/bootstrap/sass/mixins/_gradients.scss +58 -0
  121. data/vendor/twitter/bootstrap/sass/mixins/_grid-framework.scss +81 -0
  122. data/vendor/twitter/bootstrap/sass/mixins/_grid.scss +122 -0
  123. data/vendor/twitter/bootstrap/sass/mixins/_hide-text.scss +21 -0
  124. data/vendor/twitter/bootstrap/sass/mixins/_image.scss +34 -0
  125. data/vendor/twitter/bootstrap/sass/mixins/_labels.scss +12 -0
  126. data/vendor/twitter/bootstrap/sass/mixins/_list-group.scss +31 -0
  127. data/vendor/twitter/bootstrap/sass/mixins/_nav-divider.scss +10 -0
  128. data/vendor/twitter/bootstrap/sass/mixins/_nav-vertical-align.scss +9 -0
  129. data/vendor/twitter/bootstrap/sass/mixins/_opacity.scss +8 -0
  130. data/vendor/twitter/bootstrap/sass/mixins/_pagination.scss +23 -0
  131. data/vendor/twitter/bootstrap/sass/mixins/_panels.scss +24 -0
  132. data/vendor/twitter/bootstrap/sass/mixins/_progress-bar.scss +10 -0
  133. data/vendor/twitter/bootstrap/sass/mixins/_reset-filter.scss +8 -0
  134. data/vendor/twitter/bootstrap/sass/mixins/_resize.scss +6 -0
  135. data/vendor/twitter/bootstrap/sass/mixins/_responsive-visibility.scss +21 -0
  136. data/vendor/twitter/bootstrap/sass/mixins/_size.scss +10 -0
  137. data/vendor/twitter/bootstrap/sass/mixins/_tab-focus.scss +9 -0
  138. data/vendor/twitter/bootstrap/sass/mixins/_table-row.scss +28 -0
  139. data/vendor/twitter/bootstrap/sass/mixins/_text-emphasis.scss +11 -0
  140. data/vendor/twitter/bootstrap/sass/mixins/_text-overflow.scss +8 -0
  141. data/vendor/twitter/bootstrap/sass/mixins/_vendor-prefixes.scss +219 -0
  142. metadata +62 -2
@@ -0,0 +1,14 @@
1
+ // Alerts
2
+
3
+ .alert-variant(@background; @border; @text-color) {
4
+ background-color: @background;
5
+ border-color: @border;
6
+ color: @text-color;
7
+
8
+ hr {
9
+ border-top-color: darken(@border, 5%);
10
+ }
11
+ .alert-link {
12
+ color: darken(@text-color, 10%);
13
+ }
14
+ }
@@ -0,0 +1,8 @@
1
+ // Contextual backgrounds
2
+
3
+ .bg-variant(@color) {
4
+ background-color: @color;
5
+ a&:hover {
6
+ background-color: darken(@color, 10%);
7
+ }
8
+ }
@@ -0,0 +1,18 @@
1
+ // Single side border-radius
2
+
3
+ .border-top-radius(@radius) {
4
+ border-top-right-radius: @radius;
5
+ border-top-left-radius: @radius;
6
+ }
7
+ .border-right-radius(@radius) {
8
+ border-bottom-right-radius: @radius;
9
+ border-top-right-radius: @radius;
10
+ }
11
+ .border-bottom-radius(@radius) {
12
+ border-bottom-right-radius: @radius;
13
+ border-bottom-left-radius: @radius;
14
+ }
15
+ .border-left-radius(@radius) {
16
+ border-bottom-left-radius: @radius;
17
+ border-top-left-radius: @radius;
18
+ }
@@ -0,0 +1,50 @@
1
+ // Button variants
2
+ //
3
+ // Easily pump out default styles, as well as :hover, :focus, :active,
4
+ // and disabled options for all buttons
5
+
6
+ .button-variant(@color; @background; @border) {
7
+ color: @color;
8
+ background-color: @background;
9
+ border-color: @border;
10
+
11
+ &:hover,
12
+ &:focus,
13
+ &:active,
14
+ &.active,
15
+ .open > .dropdown-toggle& {
16
+ color: @color;
17
+ background-color: darken(@background, 10%);
18
+ border-color: darken(@border, 12%);
19
+ }
20
+ &:active,
21
+ &.active,
22
+ .open > .dropdown-toggle& {
23
+ background-image: none;
24
+ }
25
+ &.disabled,
26
+ &[disabled],
27
+ fieldset[disabled] & {
28
+ &,
29
+ &:hover,
30
+ &:focus,
31
+ &:active,
32
+ &.active {
33
+ background-color: @background;
34
+ border-color: @border;
35
+ }
36
+ }
37
+
38
+ .badge {
39
+ color: @background;
40
+ background-color: @color;
41
+ }
42
+ }
43
+
44
+ // Button sizes
45
+ .button-size(@padding-vertical; @padding-horizontal; @font-size; @line-height; @border-radius) {
46
+ padding: @padding-vertical @padding-horizontal;
47
+ font-size: @font-size;
48
+ line-height: @line-height;
49
+ border-radius: @border-radius;
50
+ }
@@ -0,0 +1,7 @@
1
+ // Center-align a block level element
2
+
3
+ .center-block() {
4
+ display: block;
5
+ margin-left: auto;
6
+ margin-right: auto;
7
+ }
@@ -0,0 +1,22 @@
1
+ // Clearfix
2
+ //
3
+ // For modern browsers
4
+ // 1. The space content is one way to avoid an Opera bug when the
5
+ // contenteditable attribute is included anywhere else in the document.
6
+ // Otherwise it causes space to appear at the top and bottom of elements
7
+ // that are clearfixed.
8
+ // 2. The use of `table` rather than `block` is only necessary if using
9
+ // `:before` to contain the top-margins of child elements.
10
+ //
11
+ // Source: http://nicolasgallagher.com/micro-clearfix-hack/
12
+
13
+ .clearfix() {
14
+ &:before,
15
+ &:after {
16
+ content: " "; // 1
17
+ display: table; // 2
18
+ }
19
+ &:after {
20
+ clear: both;
21
+ }
22
+ }
@@ -0,0 +1,81 @@
1
+ // Form validation states
2
+ //
3
+ // Used in forms.less to generate the form validation CSS for warnings, errors,
4
+ // and successes.
5
+
6
+ .form-control-validation(@text-color: #555; @border-color: #ccc; @background-color: #f5f5f5) {
7
+ // Color the label and help text
8
+ .help-block,
9
+ .control-label,
10
+ .radio,
11
+ .checkbox,
12
+ .radio-inline,
13
+ .checkbox-inline {
14
+ color: @text-color;
15
+ }
16
+ // Set the border and box shadow on specific inputs to match
17
+ .form-control {
18
+ border-color: @border-color;
19
+ .box-shadow(inset 0 1px 1px rgba(0,0,0,.075)); // Redeclare so transitions work
20
+ &:focus {
21
+ border-color: darken(@border-color, 10%);
22
+ @shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 6px lighten(@border-color, 20%);
23
+ .box-shadow(@shadow);
24
+ }
25
+ }
26
+ // Set validation states also for addons
27
+ .input-group-addon {
28
+ color: @text-color;
29
+ border-color: @border-color;
30
+ background-color: @background-color;
31
+ }
32
+ // Optional feedback icon
33
+ .form-control-feedback {
34
+ color: @text-color;
35
+ }
36
+ }
37
+
38
+
39
+ // Form control focus state
40
+ //
41
+ // Generate a customized focus state and for any input with the specified color,
42
+ // which defaults to the `@input-border-focus` variable.
43
+ //
44
+ // We highly encourage you to not customize the default value, but instead use
45
+ // this to tweak colors on an as-needed basis. This aesthetic change is based on
46
+ // WebKit's default styles, but applicable to a wider range of browsers. Its
47
+ // usability and accessibility should be taken into account with any change.
48
+ //
49
+ // Example usage: change the default blue border and shadow to white for better
50
+ // contrast against a dark gray background.
51
+ .form-control-focus(@color: @input-border-focus) {
52
+ @color-rgba: rgba(red(@color), green(@color), blue(@color), .6);
53
+ &:focus {
54
+ border-color: @color;
55
+ outline: 0;
56
+ .box-shadow(~"inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px @{color-rgba}");
57
+ }
58
+ }
59
+
60
+ // Form control sizing
61
+ //
62
+ // Relative text size, padding, and border-radii changes for form controls. For
63
+ // horizontal sizing, wrap controls in the predefined grid classes. `<select>`
64
+ // element gets special love because it's special, and that's a fact!
65
+ .input-size(@input-height; @padding-vertical; @padding-horizontal; @font-size; @line-height; @border-radius) {
66
+ height: @input-height;
67
+ padding: @padding-vertical @padding-horizontal;
68
+ font-size: @font-size;
69
+ line-height: @line-height;
70
+ border-radius: @border-radius;
71
+
72
+ select& {
73
+ height: @input-height;
74
+ line-height: @input-height;
75
+ }
76
+
77
+ textarea&,
78
+ select[multiple]& {
79
+ height: auto;
80
+ }
81
+ }
@@ -0,0 +1,59 @@
1
+ // Gradients
2
+
3
+ #gradient {
4
+
5
+ // Horizontal gradient, from left to right
6
+ //
7
+ // Creates two color stops, start and end, by specifying a color and position for each color stop.
8
+ // Color stops are not available in IE9 and below.
9
+ .horizontal(@start-color: #555; @end-color: #333; @start-percent: 0%; @end-percent: 100%) {
10
+ background-image: -webkit-linear-gradient(left, @start-color @start-percent, @end-color @end-percent); // Safari 5.1-6, Chrome 10+
11
+ background-image: -o-linear-gradient(left, @start-color @start-percent, @end-color @end-percent); // Opera 12
12
+ background-image: linear-gradient(to right, @start-color @start-percent, @end-color @end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+
13
+ background-repeat: repeat-x;
14
+ filter: e(%("progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)",argb(@start-color),argb(@end-color))); // IE9 and down
15
+ }
16
+
17
+ // Vertical gradient, from top to bottom
18
+ //
19
+ // Creates two color stops, start and end, by specifying a color and position for each color stop.
20
+ // Color stops are not available in IE9 and below.
21
+ .vertical(@start-color: #555; @end-color: #333; @start-percent: 0%; @end-percent: 100%) {
22
+ background-image: -webkit-linear-gradient(top, @start-color @start-percent, @end-color @end-percent); // Safari 5.1-6, Chrome 10+
23
+ background-image: -o-linear-gradient(top, @start-color @start-percent, @end-color @end-percent); // Opera 12
24
+ background-image: linear-gradient(to bottom, @start-color @start-percent, @end-color @end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+
25
+ background-repeat: repeat-x;
26
+ filter: e(%("progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)",argb(@start-color),argb(@end-color))); // IE9 and down
27
+ }
28
+
29
+ .directional(@start-color: #555; @end-color: #333; @deg: 45deg) {
30
+ background-repeat: repeat-x;
31
+ background-image: -webkit-linear-gradient(@deg, @start-color, @end-color); // Safari 5.1-6, Chrome 10+
32
+ background-image: -o-linear-gradient(@deg, @start-color, @end-color); // Opera 12
33
+ background-image: linear-gradient(@deg, @start-color, @end-color); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+
34
+ }
35
+ .horizontal-three-colors(@start-color: #00b3ee; @mid-color: #7a43b6; @color-stop: 50%; @end-color: #c3325f) {
36
+ background-image: -webkit-linear-gradient(left, @start-color, @mid-color @color-stop, @end-color);
37
+ background-image: -o-linear-gradient(left, @start-color, @mid-color @color-stop, @end-color);
38
+ background-image: linear-gradient(to right, @start-color, @mid-color @color-stop, @end-color);
39
+ background-repeat: no-repeat;
40
+ filter: e(%("progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)",argb(@start-color),argb(@end-color))); // IE9 and down, gets no color-stop at all for proper fallback
41
+ }
42
+ .vertical-three-colors(@start-color: #00b3ee; @mid-color: #7a43b6; @color-stop: 50%; @end-color: #c3325f) {
43
+ background-image: -webkit-linear-gradient(@start-color, @mid-color @color-stop, @end-color);
44
+ background-image: -o-linear-gradient(@start-color, @mid-color @color-stop, @end-color);
45
+ background-image: linear-gradient(@start-color, @mid-color @color-stop, @end-color);
46
+ background-repeat: no-repeat;
47
+ filter: e(%("progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)",argb(@start-color),argb(@end-color))); // IE9 and down, gets no color-stop at all for proper fallback
48
+ }
49
+ .radial(@inner-color: #555; @outer-color: #333) {
50
+ background-image: -webkit-radial-gradient(circle, @inner-color, @outer-color);
51
+ background-image: radial-gradient(circle, @inner-color, @outer-color);
52
+ background-repeat: no-repeat;
53
+ }
54
+ .striped(@color: rgba(255,255,255,.15); @angle: 45deg) {
55
+ background-image: -webkit-linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);
56
+ background-image: -o-linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);
57
+ background-image: linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);
58
+ }
59
+ }
@@ -0,0 +1,91 @@
1
+ // Framework grid generation
2
+ //
3
+ // Used only by Bootstrap to generate the correct number of grid classes given
4
+ // any value of `@grid-columns`.
5
+
6
+ .make-grid-columns() {
7
+ // Common styles for all sizes of grid columns, widths 1-12
8
+ .col(@index) when (@index = 1) { // initial
9
+ @item: ~".col-xs-@{index}, .col-sm-@{index}, .col-md-@{index}, .col-lg-@{index}";
10
+ .col((@index + 1), @item);
11
+ }
12
+ .col(@index, @list) when (@index =< @grid-columns) { // general; "=<" isn't a typo
13
+ @item: ~".col-xs-@{index}, .col-sm-@{index}, .col-md-@{index}, .col-lg-@{index}";
14
+ .col((@index + 1), ~"@{list}, @{item}");
15
+ }
16
+ .col(@index, @list) when (@index > @grid-columns) { // terminal
17
+ @{list} {
18
+ position: relative;
19
+ // Prevent columns from collapsing when empty
20
+ min-height: 1px;
21
+ // Inner gutter via padding
22
+ padding-left: (@grid-gutter-width / 2);
23
+ padding-right: (@grid-gutter-width / 2);
24
+ }
25
+ }
26
+ .col(1); // kickstart it
27
+ }
28
+
29
+ .float-grid-columns(@class) {
30
+ .col(@index) when (@index = 1) { // initial
31
+ @item: ~".col-@{class}-@{index}";
32
+ .col((@index + 1), @item);
33
+ }
34
+ .col(@index, @list) when (@index =< @grid-columns) { // general
35
+ @item: ~".col-@{class}-@{index}";
36
+ .col((@index + 1), ~"@{list}, @{item}");
37
+ }
38
+ .col(@index, @list) when (@index > @grid-columns) { // terminal
39
+ @{list} {
40
+ float: left;
41
+ }
42
+ }
43
+ .col(1); // kickstart it
44
+ }
45
+
46
+ .calc-grid-column(@index, @class, @type) when (@type = width) and (@index > 0) {
47
+ .col-@{class}-@{index} {
48
+ width: percentage((@index / @grid-columns));
49
+ }
50
+ }
51
+ .calc-grid-column(@index, @class, @type) when (@type = push) and (@index > 0) {
52
+ .col-@{class}-push-@{index} {
53
+ left: percentage((@index / @grid-columns));
54
+ }
55
+ }
56
+ .calc-grid-column(@index, @class, @type) when (@type = push) and (@index = 0) {
57
+ .col-@{class}-push-0 {
58
+ left: auto;
59
+ }
60
+ }
61
+ .calc-grid-column(@index, @class, @type) when (@type = pull) and (@index > 0) {
62
+ .col-@{class}-pull-@{index} {
63
+ right: percentage((@index / @grid-columns));
64
+ }
65
+ }
66
+ .calc-grid-column(@index, @class, @type) when (@type = pull) and (@index = 0) {
67
+ .col-@{class}-pull-0 {
68
+ right: auto;
69
+ }
70
+ }
71
+ .calc-grid-column(@index, @class, @type) when (@type = offset) {
72
+ .col-@{class}-offset-@{index} {
73
+ margin-left: percentage((@index / @grid-columns));
74
+ }
75
+ }
76
+
77
+ // Basic looping in LESS
78
+ .loop-grid-columns(@index, @class, @type) when (@index >= 0) {
79
+ .calc-grid-column(@index, @class, @type);
80
+ // next iteration
81
+ .loop-grid-columns((@index - 1), @class, @type);
82
+ }
83
+
84
+ // Create grid for specific class
85
+ .make-grid(@class) {
86
+ .float-grid-columns(@class);
87
+ .loop-grid-columns(@grid-columns, @class, width);
88
+ .loop-grid-columns(@grid-columns, @class, pull);
89
+ .loop-grid-columns(@grid-columns, @class, push);
90
+ .loop-grid-columns(@grid-columns, @class, offset);
91
+ }
@@ -0,0 +1,122 @@
1
+ // Grid system
2
+ //
3
+ // Generate semantic grid columns with these mixins.
4
+
5
+ // Centered container element
6
+ .container-fixed(@gutter: @grid-gutter-width) {
7
+ margin-right: auto;
8
+ margin-left: auto;
9
+ padding-left: (@gutter / 2);
10
+ padding-right: (@gutter / 2);
11
+ &:extend(.clearfix all);
12
+ }
13
+
14
+ // Creates a wrapper for a series of columns
15
+ .make-row(@gutter: @grid-gutter-width) {
16
+ margin-left: (@gutter / -2);
17
+ margin-right: (@gutter / -2);
18
+ &:extend(.clearfix all);
19
+ }
20
+
21
+ // Generate the extra small columns
22
+ .make-xs-column(@columns; @gutter: @grid-gutter-width) {
23
+ position: relative;
24
+ float: left;
25
+ width: percentage((@columns / @grid-columns));
26
+ min-height: 1px;
27
+ padding-left: (@gutter / 2);
28
+ padding-right: (@gutter / 2);
29
+ }
30
+ .make-xs-column-offset(@columns) {
31
+ margin-left: percentage((@columns / @grid-columns));
32
+ }
33
+ .make-xs-column-push(@columns) {
34
+ left: percentage((@columns / @grid-columns));
35
+ }
36
+ .make-xs-column-pull(@columns) {
37
+ right: percentage((@columns / @grid-columns));
38
+ }
39
+
40
+ // Generate the small columns
41
+ .make-sm-column(@columns; @gutter: @grid-gutter-width) {
42
+ position: relative;
43
+ min-height: 1px;
44
+ padding-left: (@gutter / 2);
45
+ padding-right: (@gutter / 2);
46
+
47
+ @media (min-width: @screen-sm-min) {
48
+ float: left;
49
+ width: percentage((@columns / @grid-columns));
50
+ }
51
+ }
52
+ .make-sm-column-offset(@columns) {
53
+ @media (min-width: @screen-sm-min) {
54
+ margin-left: percentage((@columns / @grid-columns));
55
+ }
56
+ }
57
+ .make-sm-column-push(@columns) {
58
+ @media (min-width: @screen-sm-min) {
59
+ left: percentage((@columns / @grid-columns));
60
+ }
61
+ }
62
+ .make-sm-column-pull(@columns) {
63
+ @media (min-width: @screen-sm-min) {
64
+ right: percentage((@columns / @grid-columns));
65
+ }
66
+ }
67
+
68
+ // Generate the medium columns
69
+ .make-md-column(@columns; @gutter: @grid-gutter-width) {
70
+ position: relative;
71
+ min-height: 1px;
72
+ padding-left: (@gutter / 2);
73
+ padding-right: (@gutter / 2);
74
+
75
+ @media (min-width: @screen-md-min) {
76
+ float: left;
77
+ width: percentage((@columns / @grid-columns));
78
+ }
79
+ }
80
+ .make-md-column-offset(@columns) {
81
+ @media (min-width: @screen-md-min) {
82
+ margin-left: percentage((@columns / @grid-columns));
83
+ }
84
+ }
85
+ .make-md-column-push(@columns) {
86
+ @media (min-width: @screen-md-min) {
87
+ left: percentage((@columns / @grid-columns));
88
+ }
89
+ }
90
+ .make-md-column-pull(@columns) {
91
+ @media (min-width: @screen-md-min) {
92
+ right: percentage((@columns / @grid-columns));
93
+ }
94
+ }
95
+
96
+ // Generate the large columns
97
+ .make-lg-column(@columns; @gutter: @grid-gutter-width) {
98
+ position: relative;
99
+ min-height: 1px;
100
+ padding-left: (@gutter / 2);
101
+ padding-right: (@gutter / 2);
102
+
103
+ @media (min-width: @screen-lg-min) {
104
+ float: left;
105
+ width: percentage((@columns / @grid-columns));
106
+ }
107
+ }
108
+ .make-lg-column-offset(@columns) {
109
+ @media (min-width: @screen-lg-min) {
110
+ margin-left: percentage((@columns / @grid-columns));
111
+ }
112
+ }
113
+ .make-lg-column-push(@columns) {
114
+ @media (min-width: @screen-lg-min) {
115
+ left: percentage((@columns / @grid-columns));
116
+ }
117
+ }
118
+ .make-lg-column-pull(@columns) {
119
+ @media (min-width: @screen-lg-min) {
120
+ right: percentage((@columns / @grid-columns));
121
+ }
122
+ }