@carbon/grid 10.41.0 → 10.43.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/index.scss +1 -4
- package/package.json +5 -5
- package/scss/_inlined/_mixins.import.scss +2 -2
- package/scss/_mixins.import.scss +2 -2
- package/scss/modules/_breakpoint.scss +4 -72
- package/scss/modules/_config.scss +77 -1
- package/scss/modules/_css-grid.scss +379 -256
- package/scss/modules/_flex-grid.scss +39 -50
- package/scss/modules/_mixins.scss +11 -11
- package/scss/vendor/@carbon/import-once/import-once.scss +1 -1
- package/scss/vendor/@carbon/layout/_key-height.import.scss +2 -2
- package/scss/vendor/@carbon/layout/modules/_utilities.scss +3 -3
- package/scss/vendor/@carbon/layout/modules/_breakpoint.scss +0 -232
|
@@ -5,343 +5,466 @@
|
|
|
5
5
|
// LICENSE file in the root directory of this source tree.
|
|
6
6
|
//
|
|
7
7
|
|
|
8
|
-
@use 'sass:
|
|
9
|
-
@use "sass:math";
|
|
10
|
-
|
|
8
|
+
@use 'sass:list';
|
|
11
9
|
@use 'sass:map';
|
|
10
|
+
@use 'sass:math';
|
|
11
|
+
@use 'sass:meta';
|
|
12
12
|
@use 'config' as *;
|
|
13
13
|
@use 'breakpoint' as *;
|
|
14
14
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
:
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
15
|
+
/// Emit all the styles related to the CSS Grid, these include:
|
|
16
|
+
/// - The base grid class
|
|
17
|
+
/// - The various grid modes
|
|
18
|
+
/// - The ability to specifiy column span
|
|
19
|
+
/// - The ability to specifiy column start,end position
|
|
20
|
+
/// - Support for subgrid
|
|
21
|
+
/// - Support for hanging content on a grid column
|
|
22
|
+
/// - Support for controlling grid gutter on a cell basis
|
|
23
|
+
/// - Support for specifying content alignment
|
|
24
|
+
///
|
|
25
|
+
///
|
|
26
|
+
/// In general, this mixin is structured in a way to emit the fewest CSS styles
|
|
27
|
+
/// as possible. To do this, we will (as much as possible) not emit a value if
|
|
28
|
+
/// one is already defined at a previous breakpoint.
|
|
29
|
+
///
|
|
30
|
+
/// In addition, this mixin will break down emitting styles into several stages:
|
|
31
|
+
/// 1. Emit styles for the smallest breakpoint without any breakpoint. By
|
|
32
|
+
/// default, these styles will be on
|
|
33
|
+
/// 2. For every other breakpoint, wrap it in a breakpoint so that it only is
|
|
34
|
+
/// triggered when that breakpoint is applied
|
|
35
|
+
/// 3. In situations where it is appropriate, we also will emit "unconditional"
|
|
36
|
+
/// selectors that will always apply. For example, if you wanted a column to
|
|
37
|
+
/// always span four columns
|
|
38
|
+
@mixin css-grid($breakpoints: $grid-breakpoints) {
|
|
39
|
+
/// The :root selector is responsible for setting several top-level CSS Custom
|
|
40
|
+
/// Properties, including the overall grid gutter, grid column count, and grid
|
|
41
|
+
/// margin
|
|
42
|
+
:root {
|
|
43
|
+
--cds-grid-gutter: #{$grid-gutter};
|
|
44
|
+
|
|
45
|
+
// Iterate through the grid breakpoints and only emit the grid-columns and
|
|
46
|
+
// grid-margin CSS Custom Properties if they've changed from the previous
|
|
47
|
+
// breakpoint. By default, we emit the smallest breakpoint values on the
|
|
48
|
+
// :root selector
|
|
49
|
+
@each $key, $value in $breakpoints {
|
|
50
|
+
@if is-smallest-breakpoint($key, $breakpoints) {
|
|
51
|
+
--cds-grid-columns: #{get-column-count($breakpoints, $key)};
|
|
52
|
+
--cds-grid-margin: #{get-margin($breakpoints, $key)};
|
|
53
|
+
} @else {
|
|
54
|
+
$previous-breakpoint: breakpoint-prev($key, $breakpoints);
|
|
55
|
+
$changes: ();
|
|
56
|
+
|
|
57
|
+
@if get-column-count($breakpoints, $key) !=
|
|
58
|
+
get-column-count($breakpoints, $previous-breakpoint)
|
|
59
|
+
{
|
|
60
|
+
$changes: map.set(
|
|
61
|
+
$changes,
|
|
62
|
+
grid-columns,
|
|
63
|
+
get-column-count($breakpoints, $key)
|
|
64
|
+
);
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
@if get-margin($breakpoints, $key) !=
|
|
68
|
+
get-margin($breakpoints, $previous-breakpoint)
|
|
69
|
+
{
|
|
70
|
+
$changes: map.set(
|
|
71
|
+
$changes,
|
|
72
|
+
grid-margin,
|
|
73
|
+
get-margin($breakpoints, $key)
|
|
74
|
+
);
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
@include breakpoint($key) {
|
|
78
|
+
@each $name, $value in $changes {
|
|
79
|
+
--cds-#{$name}: #{$value};
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
}
|
|
50
84
|
}
|
|
51
85
|
|
|
52
|
-
|
|
53
|
-
|
|
86
|
+
// -----------------------------------------------------------------------------
|
|
87
|
+
// Base CSS Grid
|
|
88
|
+
// -----------------------------------------------------------------------------
|
|
89
|
+
.#{$prefix}--css-grid {
|
|
90
|
+
--cds-grid-gutter-start: calc(var(--cds-grid-gutter) / 2);
|
|
91
|
+
--cds-grid-gutter-end: calc(var(--cds-grid-gutter) / 2);
|
|
92
|
+
// We split out a separate "column hang" since "gutter-start" is set
|
|
93
|
+
// dynamically and could be 0
|
|
94
|
+
--cds-grid-column-hang: calc(var(--cds-grid-gutter) / 2);
|
|
95
|
+
|
|
96
|
+
display: grid;
|
|
97
|
+
max-width: get-grid-width(
|
|
98
|
+
$breakpoints,
|
|
99
|
+
largest-breakpoint-name($breakpoints)
|
|
100
|
+
);
|
|
101
|
+
padding-right: var(--cds-grid-margin);
|
|
102
|
+
padding-left: var(--cds-grid-margin);
|
|
103
|
+
margin-right: auto;
|
|
104
|
+
margin-left: auto;
|
|
105
|
+
grid-template-columns: repeat(var(--cds-grid-columns), minmax(0, 1fr));
|
|
54
106
|
}
|
|
55
107
|
|
|
56
|
-
|
|
57
|
-
|
|
108
|
+
// -----------------------------------------------------------------------------
|
|
109
|
+
// Full width
|
|
110
|
+
// -----------------------------------------------------------------------------
|
|
111
|
+
.#{$prefix}--css-grid--full-width {
|
|
112
|
+
max-width: 100%;
|
|
58
113
|
}
|
|
59
|
-
}
|
|
60
114
|
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
115
|
+
// -----------------------------------------------------------------------------
|
|
116
|
+
// Column
|
|
117
|
+
// -----------------------------------------------------------------------------
|
|
118
|
+
|
|
119
|
+
// Add gutter to columns in a CSS Grid. Unfortunately, we cannot use
|
|
120
|
+
// `grid-gap`, `column-gap`, etc. as we need to conditionally remove leading
|
|
121
|
+
// and trailing gutter from a column.
|
|
122
|
+
.#{$prefix}--css-grid-column {
|
|
123
|
+
// grid-mode-start, grid-mode-end are meant to capture the "grid settings"
|
|
124
|
+
// so that subgrids can correctly fit in parent grids by reverting the
|
|
125
|
+
// grid's outer padding
|
|
126
|
+
--cds-grid-mode-start: var(--cds-grid-gutter-start);
|
|
127
|
+
--cds-grid-mode-end: var(--cds-grid-gutter-end);
|
|
128
|
+
|
|
129
|
+
margin-right: var(--cds-grid-gutter-end);
|
|
130
|
+
margin-left: var(--cds-grid-gutter-start);
|
|
131
|
+
|
|
132
|
+
[dir='rtl'] & {
|
|
133
|
+
margin-right: var(--cds-grid-gutter-start);
|
|
134
|
+
margin-left: var(--cds-grid-gutter-end);
|
|
135
|
+
}
|
|
69
136
|
}
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
.#{$prefix}--subgrid {
|
|
73
|
-
@include subgrid();
|
|
74
|
-
}
|
|
75
137
|
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
// -----------------------------------------------------------------------------
|
|
81
|
-
// Condensed
|
|
82
|
-
// -----------------------------------------------------------------------------
|
|
83
|
-
.#{$prefix}--css-grid--condensed {
|
|
84
|
-
--cds-grid-gutter: 1px;
|
|
85
|
-
|
|
86
|
-
column-gap: var(--cds-grid-gutter);
|
|
87
|
-
row-gap: var(--cds-grid-gutter);
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
// condensed subgrid inside wide
|
|
91
|
-
.#{$prefix}--css-grid .bx--subgrid.#{$prefix}--css-grid--condensed {
|
|
92
|
-
margin-right: calc((var(--cds-grid-gutter-wide) / 2) * -1);
|
|
93
|
-
margin-left: calc((var(--cds-grid-gutter-wide) / 2) * -1);
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
// -----------------------------------------------------------------------------
|
|
97
|
-
// No Gutter
|
|
98
|
-
// -----------------------------------------------------------------------------
|
|
99
|
-
.#{$prefix}--css-grid--no-gutter {
|
|
100
|
-
// This is set to 0px (versus 0) so that the calc expression for padding for
|
|
101
|
-
// a grid container works as expected. Without the unit, the calc() will
|
|
102
|
-
// result in a value of 0.
|
|
103
|
-
// stylelint-disable-next-line length-zero-no-unit
|
|
104
|
-
--cds-grid-gutter: 0px;
|
|
105
|
-
|
|
106
|
-
column-gap: var(--cds-grid-gutter);
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
// -----------------------------------------------------------------------------
|
|
110
|
-
// Full width
|
|
111
|
-
// -----------------------------------------------------------------------------
|
|
112
|
-
.#{$prefix}--css-grid--full-width {
|
|
113
|
-
max-width: 100%;
|
|
114
|
-
}
|
|
138
|
+
// -----------------------------------------------------------------------------
|
|
139
|
+
// Grid modes
|
|
140
|
+
// -----------------------------------------------------------------------------
|
|
115
141
|
|
|
116
|
-
//
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
@if $i == 0 {
|
|
121
|
-
display: none;
|
|
122
|
-
} @else {
|
|
123
|
-
--cds-grid-columns: #{$i};
|
|
142
|
+
// Narrow
|
|
143
|
+
.#{$prefix}--css-grid--narrow {
|
|
144
|
+
--cds-grid-gutter-start: 0;
|
|
145
|
+
}
|
|
124
146
|
|
|
125
|
-
|
|
126
|
-
|
|
147
|
+
// Condensed
|
|
148
|
+
.#{$prefix}--css-grid--condensed {
|
|
149
|
+
--cds-grid-gutter: #{$grid-gutter-condensed};
|
|
150
|
+
--cds-grid-column-hang: #{math.div($grid-gutter, 2) -
|
|
151
|
+
math.div($grid-gutter-condensed, 2)};
|
|
127
152
|
}
|
|
128
|
-
}
|
|
129
153
|
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
154
|
+
// -----------------------------------------------------------------------------
|
|
155
|
+
// Subgrid
|
|
156
|
+
// -----------------------------------------------------------------------------
|
|
157
|
+
.#{$prefix}--subgrid {
|
|
158
|
+
display: grid;
|
|
159
|
+
margin-right: calc(var(--cds-grid-mode-end) * -1);
|
|
160
|
+
margin-left: calc(var(--cds-grid-mode-start) * -1);
|
|
161
|
+
grid-template-columns: repeat(var(--cds-grid-columns), minmax(0, 1fr));
|
|
162
|
+
|
|
163
|
+
[dir='rtl'] & {
|
|
164
|
+
margin-right: calc(var(--cds-grid-mode-start) * -1);
|
|
165
|
+
margin-left: calc(var(--cds-grid-mode-end) * -1);
|
|
166
|
+
}
|
|
133
167
|
}
|
|
134
|
-
}
|
|
135
168
|
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
}
|
|
169
|
+
// Support the grid modes in subgrids
|
|
170
|
+
.#{$prefix}--subgrid--wide {
|
|
171
|
+
--cds-grid-gutter-start: #{math.div($grid-gutter, 2)};
|
|
172
|
+
--cds-grid-gutter-end: #{math.div($grid-gutter, 2)};
|
|
173
|
+
--cds-grid-column-hang: 0;
|
|
174
|
+
}
|
|
139
175
|
|
|
140
|
-
.#{$prefix}--
|
|
141
|
-
|
|
142
|
-
}
|
|
176
|
+
.#{$prefix}--subgrid--narrow {
|
|
177
|
+
--cds-grid-gutter-start: 0;
|
|
178
|
+
--cds-grid-gutter-end: #{math.div($grid-gutter, 2)};
|
|
179
|
+
--cds-grid-column-hang: #{math.div($grid-gutter, 2)};
|
|
180
|
+
}
|
|
143
181
|
|
|
144
|
-
.#{$prefix}--
|
|
145
|
-
|
|
182
|
+
.#{$prefix}--subgrid--condensed {
|
|
183
|
+
--cds-grid-gutter-start: #{math.div($grid-gutter-condensed, 2)};
|
|
184
|
+
--cds-grid-gutter-end: #{math.div($grid-gutter-condensed, 2)};
|
|
185
|
+
--cds-grid-column-hang: #{math.div($grid-gutter, 2) -
|
|
186
|
+
math.div($grid-gutter-condensed, 2)};
|
|
187
|
+
}
|
|
146
188
|
|
|
147
|
-
|
|
189
|
+
// -----------------------------------------------------------------------------
|
|
190
|
+
// Column hang
|
|
191
|
+
// -----------------------------------------------------------------------------
|
|
148
192
|
|
|
149
|
-
|
|
150
|
-
|
|
193
|
+
// Helper class to allow for text alignment in columns where the leading
|
|
194
|
+
// gutter is missing (like narrow) or is reduced (like in condensed).
|
|
195
|
+
.#{$prefix}--grid-column-hang {
|
|
196
|
+
margin-left: var(--cds-grid-column-hang);
|
|
151
197
|
|
|
152
|
-
|
|
198
|
+
[dir='rtl'] & {
|
|
199
|
+
margin-right: var(--cds-grid-column-hang);
|
|
200
|
+
margin-left: initial;
|
|
201
|
+
}
|
|
153
202
|
}
|
|
154
203
|
|
|
155
|
-
|
|
156
|
-
|
|
204
|
+
// -----------------------------------------------------------------------------
|
|
205
|
+
// Column span
|
|
206
|
+
// -----------------------------------------------------------------------------
|
|
157
207
|
|
|
158
|
-
|
|
208
|
+
// Generate col-span-{0-16} classes which unconditionally set column span
|
|
209
|
+
// regardless of breakpoint
|
|
210
|
+
@for $i from 0 through get-grid-columns($breakpoints) {
|
|
211
|
+
.#{$prefix}--col-span-#{$i} {
|
|
212
|
+
@include -column-span($i);
|
|
213
|
+
}
|
|
159
214
|
}
|
|
160
|
-
}
|
|
161
|
-
|
|
162
|
-
.#{$prefix}--col-span-50 {
|
|
163
|
-
--cds-grid-columns: 2;
|
|
164
215
|
|
|
165
|
-
|
|
216
|
+
// Responsive column span
|
|
217
|
+
@each $name, $value in $breakpoints {
|
|
218
|
+
// Column span per breakpoint
|
|
219
|
+
@for $i from 0 through get-column-count($breakpoints, $name) {
|
|
220
|
+
@if is-smallest-breakpoint($name, $breakpoints) {
|
|
221
|
+
.#{$prefix}--#{$name}\:col-span-#{$i} {
|
|
222
|
+
@include -column-span($i);
|
|
223
|
+
}
|
|
224
|
+
} @else {
|
|
225
|
+
@include breakpoint($name) {
|
|
226
|
+
.#{$prefix}--#{$name}\:col-span-#{$i} {
|
|
227
|
+
@include -column-span($i);
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
}
|
|
166
232
|
|
|
167
|
-
|
|
168
|
-
|
|
233
|
+
// Percent column span per breakpoint
|
|
234
|
+
@if is-smallest-breakpoint($name, $breakpoints) {
|
|
235
|
+
.#{$prefix}--#{$name}\:col-span-auto {
|
|
236
|
+
grid-column: auto;
|
|
237
|
+
}
|
|
169
238
|
|
|
170
|
-
|
|
171
|
-
|
|
239
|
+
.#{$prefix}--#{$name}\:col-span-100 {
|
|
240
|
+
grid-column: 1 / -1;
|
|
241
|
+
}
|
|
172
242
|
|
|
173
|
-
|
|
174
|
-
--cds-grid-columns: 8;
|
|
243
|
+
$columns: get-column-count($breakpoints, $name);
|
|
175
244
|
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
}
|
|
245
|
+
.#{$prefix}--#{$name}\:col-span-75 {
|
|
246
|
+
$span: $columns * 0.75;
|
|
247
|
+
--cds-grid-columns: #{$span};
|
|
179
248
|
|
|
180
|
-
|
|
181
|
-
|
|
249
|
+
grid-column: span #{$span} / span #{$span};
|
|
250
|
+
}
|
|
182
251
|
|
|
183
|
-
|
|
252
|
+
.#{$prefix}--#{$name}\:col-span-50 {
|
|
253
|
+
$span: $columns * 0.5;
|
|
254
|
+
--cds-grid-columns: #{$span};
|
|
184
255
|
|
|
185
|
-
|
|
186
|
-
|
|
256
|
+
grid-column: span #{$span} / span #{$span};
|
|
257
|
+
}
|
|
187
258
|
|
|
188
|
-
|
|
189
|
-
|
|
259
|
+
.#{$prefix}--#{$name}\:col-span-25 {
|
|
260
|
+
$span: $columns * 0.25;
|
|
261
|
+
--cds-grid-columns: #{$span};
|
|
190
262
|
|
|
191
|
-
|
|
192
|
-
|
|
263
|
+
grid-column: span #{$span} / span #{$span};
|
|
264
|
+
}
|
|
265
|
+
} @else {
|
|
266
|
+
@include breakpoint($name) {
|
|
267
|
+
.#{$prefix}--#{$name}\:col-span-auto {
|
|
268
|
+
grid-column: auto;
|
|
269
|
+
}
|
|
193
270
|
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
}
|
|
271
|
+
.#{$prefix}--#{$name}\:col-span-100 {
|
|
272
|
+
grid-column: 1 / -1;
|
|
273
|
+
}
|
|
197
274
|
|
|
198
|
-
|
|
199
|
-
$columns: map.get($value, columns);
|
|
275
|
+
$columns: get-column-count($breakpoints, $name);
|
|
200
276
|
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
@include -column-span($i);
|
|
205
|
-
}
|
|
206
|
-
}
|
|
277
|
+
.#{$prefix}--#{$name}\:col-span-75 {
|
|
278
|
+
$span: $columns * 0.75;
|
|
279
|
+
--cds-grid-columns: #{$span};
|
|
207
280
|
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
}
|
|
281
|
+
grid-column: span #{$span} / span #{$span};
|
|
282
|
+
}
|
|
211
283
|
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
284
|
+
.#{$prefix}--#{$name}\:col-span-50 {
|
|
285
|
+
$span: $columns * 0.5;
|
|
286
|
+
--cds-grid-columns: #{$span};
|
|
215
287
|
|
|
216
|
-
|
|
288
|
+
grid-column: span #{$span} / span #{$span};
|
|
289
|
+
}
|
|
217
290
|
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
291
|
+
.#{$prefix}--#{$name}\:col-span-25 {
|
|
292
|
+
$span: $columns * 0.25;
|
|
293
|
+
--cds-grid-columns: #{$span};
|
|
221
294
|
|
|
222
|
-
|
|
295
|
+
grid-column: span #{$span} / span #{$span};
|
|
296
|
+
}
|
|
297
|
+
}
|
|
223
298
|
}
|
|
299
|
+
}
|
|
224
300
|
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
301
|
+
// -----------------------------------------------------------------------------
|
|
302
|
+
// Column percent span
|
|
303
|
+
// -----------------------------------------------------------------------------
|
|
304
|
+
.#{$prefix}--col-span-auto {
|
|
305
|
+
grid-column: auto;
|
|
306
|
+
}
|
|
228
307
|
|
|
229
|
-
|
|
230
|
-
|
|
308
|
+
.#{$prefix}--col-span-100 {
|
|
309
|
+
grid-column: 1 / -1;
|
|
310
|
+
}
|
|
231
311
|
|
|
232
|
-
|
|
233
|
-
|
|
312
|
+
.#{$prefix}--col-span-75 {
|
|
313
|
+
@include -percent-column-span($breakpoints, 0.75);
|
|
314
|
+
}
|
|
234
315
|
|
|
235
|
-
|
|
236
|
-
|
|
316
|
+
.#{$prefix}--col-span-50 {
|
|
317
|
+
@include -percent-column-span($breakpoints, 0.5);
|
|
237
318
|
}
|
|
238
|
-
}
|
|
239
319
|
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
// -----------------------------------------------------------------------------
|
|
243
|
-
@for $i from 1 through 17 {
|
|
244
|
-
.#{$prefix}--col-start-#{$i} {
|
|
245
|
-
grid-column-start: $i;
|
|
320
|
+
.#{$prefix}--col-span-25 {
|
|
321
|
+
@include -percent-column-span($breakpoints, 0.25);
|
|
246
322
|
}
|
|
247
323
|
|
|
248
|
-
|
|
249
|
-
|
|
324
|
+
// -----------------------------------------------------------------------------
|
|
325
|
+
// Column offset
|
|
326
|
+
// -----------------------------------------------------------------------------
|
|
327
|
+
// Unconditional column start
|
|
328
|
+
// Note: we start at 1 and end at column-count to match grid lines. We do not
|
|
329
|
+
// start at column-count + 1 since starting at the end of the grid would mean
|
|
330
|
+
// a column would have no width available
|
|
331
|
+
@for $i from 1 through get-grid-columns($breakpoints) {
|
|
332
|
+
.#{$prefix}--col-start-#{$i} {
|
|
333
|
+
grid-column-start: $i;
|
|
334
|
+
}
|
|
250
335
|
}
|
|
251
|
-
}
|
|
252
336
|
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
337
|
+
// Unconditional column end
|
|
338
|
+
// Note: we start at 2 since a column ending at line 1 would have no width. We
|
|
339
|
+
// end at column-count + 1 since grid lines start at 1
|
|
340
|
+
@for $i from 2 through get-grid-columns($breakpoints) + 1 {
|
|
341
|
+
.#{$prefix}--col-end-#{$i} {
|
|
342
|
+
grid-column-end: $i;
|
|
343
|
+
}
|
|
344
|
+
}
|
|
256
345
|
|
|
257
|
-
.#{$prefix}--col-
|
|
258
|
-
|
|
259
|
-
}
|
|
346
|
+
.#{$prefix}--col-start-auto {
|
|
347
|
+
grid-column-start: auto;
|
|
348
|
+
}
|
|
260
349
|
|
|
261
|
-
|
|
262
|
-
|
|
350
|
+
.#{$prefix}--col-end-auto {
|
|
351
|
+
grid-column-end: auto;
|
|
352
|
+
}
|
|
263
353
|
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
354
|
+
// Responsive column start, end
|
|
355
|
+
@each $name, $value in $breakpoints {
|
|
356
|
+
@if is-smallest-breakpoint($name, $breakpoints) {
|
|
357
|
+
// Responsive column start
|
|
358
|
+
@for $i from 1 through get-grid-columns($breakpoints) {
|
|
359
|
+
.#{$prefix}--#{$name}\:col-start-#{$i} {
|
|
360
|
+
grid-column-start: $i;
|
|
361
|
+
}
|
|
271
362
|
}
|
|
272
363
|
|
|
273
|
-
|
|
274
|
-
|
|
364
|
+
// Responsive column end
|
|
365
|
+
@for $i from 2 through get-grid-columns($breakpoints) + 1 {
|
|
366
|
+
.#{$prefix}--#{$name}\:col-end-#{$i} {
|
|
367
|
+
grid-column-end: $i;
|
|
368
|
+
}
|
|
275
369
|
}
|
|
276
|
-
}
|
|
277
370
|
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
371
|
+
.#{$prefix}--#{$name}\:col-start-auto {
|
|
372
|
+
grid-column-start: auto;
|
|
373
|
+
}
|
|
281
374
|
|
|
282
|
-
|
|
283
|
-
|
|
375
|
+
.#{$prefix}--#{$name}\:col-end-auto {
|
|
376
|
+
grid-column-end: auto;
|
|
377
|
+
}
|
|
378
|
+
} @else {
|
|
379
|
+
@include breakpoint($name) {
|
|
380
|
+
// Responsive column start
|
|
381
|
+
@for $i from 1 through get-grid-columns($breakpoints) {
|
|
382
|
+
.#{$prefix}--#{$name}\:col-start-#{$i} {
|
|
383
|
+
grid-column-start: $i;
|
|
384
|
+
}
|
|
385
|
+
}
|
|
386
|
+
|
|
387
|
+
// Responsive column end
|
|
388
|
+
@for $i from 2 through get-grid-columns($breakpoints) + 1 {
|
|
389
|
+
.#{$prefix}--#{$name}\:col-end-#{$i} {
|
|
390
|
+
grid-column-end: $i;
|
|
391
|
+
}
|
|
392
|
+
}
|
|
393
|
+
|
|
394
|
+
.#{$prefix}--#{$name}\:col-start-auto {
|
|
395
|
+
grid-column-start: auto;
|
|
396
|
+
}
|
|
397
|
+
|
|
398
|
+
.#{$prefix}--#{$name}\:col-end-auto {
|
|
399
|
+
grid-column-end: auto;
|
|
400
|
+
}
|
|
401
|
+
}
|
|
284
402
|
}
|
|
285
403
|
}
|
|
286
404
|
}
|
|
287
405
|
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
}
|
|
294
|
-
|
|
295
|
-
// -----------------------------------------------------------------------------
|
|
296
|
-
// Column gutter
|
|
297
|
-
// -----------------------------------------------------------------------------
|
|
298
|
-
.#{$prefix}--gutter {
|
|
299
|
-
padding-right: var(--cds-grid-hang);
|
|
300
|
-
padding-left: var(--cds-grid-hang);
|
|
301
|
-
}
|
|
302
|
-
|
|
303
|
-
.#{$prefix}--gutter-start {
|
|
304
|
-
padding-left: var(--cds-grid-hang);
|
|
305
|
-
}
|
|
406
|
+
/// Generate the styles for a grid column
|
|
407
|
+
@mixin -column-span($i) {
|
|
408
|
+
@if $i == 0 {
|
|
409
|
+
display: none;
|
|
410
|
+
} @else {
|
|
411
|
+
--cds-grid-columns: #{$i};
|
|
306
412
|
|
|
307
|
-
|
|
308
|
-
|
|
413
|
+
display: block;
|
|
414
|
+
grid-column: span $i / span $i;
|
|
415
|
+
}
|
|
309
416
|
}
|
|
310
417
|
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
418
|
+
/// Generate the styles for an unconditional class that represents a percent
|
|
419
|
+
/// span of a grid
|
|
420
|
+
@mixin -percent-column-span($breakpoints, $percent) {
|
|
421
|
+
@each $key, $value in $breakpoints {
|
|
422
|
+
$columns: get-column-count($breakpoints, $key);
|
|
423
|
+
$span: $columns * $percent;
|
|
314
424
|
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
}
|
|
425
|
+
@if is-smallest-breakpoint($key, $breakpoints) {
|
|
426
|
+
--cds-grid-columns: #{$span};
|
|
318
427
|
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
428
|
+
grid-column: span #{$span} / span #{$span};
|
|
429
|
+
} @else {
|
|
430
|
+
$previous-breakpoint: breakpoint-prev($key, $breakpoints);
|
|
431
|
+
$previous-column-count: get-column-count(
|
|
432
|
+
$breakpoints,
|
|
433
|
+
$previous-breakpoint
|
|
434
|
+
);
|
|
435
|
+
$previous-span: $previous-column-count * $percent;
|
|
322
436
|
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
}
|
|
437
|
+
@if $span != $previous-span {
|
|
438
|
+
@include breakpoint($key) {
|
|
439
|
+
--cds-grid-columns: #{$span};
|
|
327
440
|
|
|
328
|
-
|
|
329
|
-
|
|
441
|
+
grid-column: span #{$span} / span #{$span};
|
|
442
|
+
}
|
|
443
|
+
}
|
|
444
|
+
}
|
|
445
|
+
}
|
|
330
446
|
}
|
|
331
447
|
|
|
332
|
-
|
|
333
|
-
|
|
448
|
+
/// Get the grid width for a specific breakpoint name
|
|
449
|
+
@function get-grid-width($breakpoints, $breakpoint) {
|
|
450
|
+
@return map.get(map.get($breakpoints, $breakpoint), width);
|
|
334
451
|
}
|
|
335
452
|
|
|
336
|
-
///
|
|
337
|
-
|
|
338
|
-
|
|
453
|
+
/// Get the grid column count for a specific breakpoint name
|
|
454
|
+
@function get-column-count($breakpoints, $breakpoint) {
|
|
455
|
+
@return map.get(map.get($breakpoints, $breakpoint), columns);
|
|
339
456
|
}
|
|
340
457
|
|
|
341
|
-
|
|
342
|
-
|
|
458
|
+
/// Get the grid margin for a specific breakpoint name
|
|
459
|
+
@function get-margin($breakpoints, $breakpoint) {
|
|
460
|
+
$value: map.get(map.get($breakpoints, $breakpoint), margin);
|
|
461
|
+
@if $value == 0 {
|
|
462
|
+
@return 0;
|
|
463
|
+
}
|
|
464
|
+
@return $value;
|
|
343
465
|
}
|
|
344
466
|
|
|
345
|
-
|
|
346
|
-
|
|
467
|
+
/// Return the largest column count from a set of breakpoints
|
|
468
|
+
@function get-grid-columns($breakpoints) {
|
|
469
|
+
@return get-column-count($breakpoints, largest-breakpoint-name($breakpoints));
|
|
347
470
|
}
|