Skip to content

Commit ba6987f

Browse files
authored
Merge pull request #5 from nanogiants/feat/offset
Feature: Offset
2 parents 5002e9e + b7f1bd8 commit ba6987f

File tree

3 files changed

+104
-36
lines changed

3 files changed

+104
-36
lines changed

README.md

Lines changed: 29 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -88,18 +88,20 @@ An example of how to use the library:
8888
```vue
8989
<template>
9090
<row container :gutter="12">
91-
<column :xs="12" :md="4" :lg="3">
92-
xs=12 md=4 lg=3
93-
</column>
94-
<column :xs="12" :md="4" :lg="3">
95-
xs=12 md=4 lg=3
96-
</column>
97-
<column :xs="12" :md="4" :lg="3">
98-
xs=12 md=4 lg=3
99-
</column>
100-
<column :xs="12" :md="4" :lg="3">
101-
xs=12 md=4 lg=3
102-
</column>
91+
<column :xs="12" :md="4" :lg="3"> xs=12 md=4 lg=3 </column>
92+
<column :xs="12" :md="4" :lg="3"> xs=12 md=4 lg=3 </column>
93+
<column :xs="12" :md="4" :lg="3"> xs=12 md=4 lg=3 </column>
94+
<column :xs="12" :md="4" :lg="3"> xs=12 md=4 lg=3 </column>
95+
</row>
96+
</template>
97+
```
98+
99+
An example how to use offset in addition with a columns:
100+
101+
```vue
102+
<template>
103+
<row container :gutter="12">
104+
<column :md="8" :mdOffset="2" :lg="6" :lgOffset="3"> </column>
103105
</row>
104106
</template>
105107
```
@@ -109,15 +111,9 @@ Using the hidden component:
109111
```vue
110112
<template>
111113
<div>
112-
<hidden :xs="true">
113-
hidden xs
114-
</hidden>
115-
<hidden :md="true">
116-
hidden md
117-
</hidden>
118-
<hidden :xl="true">
119-
hidden xl
120-
</hidden>
114+
<hidden :xs="true"> hidden xs </hidden>
115+
<hidden :md="true"> hidden md </hidden>
116+
<hidden :xl="true"> hidden xl </hidden>
121117
</div>
122118
</template>
123119
```
@@ -145,6 +141,8 @@ Component props:
145141

146142
### Column Component props
147143

144+
#### Basic Size
145+
148146
| Prop | Default | Type | Description |
149147
| ---- | ------- | ------ | -------------------------- |
150148
| xs | - | number | Size in extra small screen |
@@ -153,6 +151,16 @@ Component props:
153151
| lg | - | number | Size in large screen |
154152
| xl | - | number | Size in extra large screen |
155153

154+
#### Offset
155+
156+
| Prop | Default | Type | Description |
157+
| -------- | ------- | ------ | ---------------------------- |
158+
| xsOffset | - | number | Offset in extra small screen |
159+
| smOffset | - | number | Offset in small screen |
160+
| mdOffset | - | number | Offset in medium screen |
161+
| lgOffset | - | number | Offset in large screen |
162+
| xlOffset | - | number | Offset in extra large screen |
163+
156164
### Hidden Component props
157165

158166
| Prop | Default | Type | Description |

src/Column.vue

Lines changed: 68 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,33 @@
77
<script>
88
export default {
99
name: 'Col',
10+
props: {
11+
xs: Number,
12+
sm: Number,
13+
md: Number,
14+
lg: Number,
15+
xl: Number,
16+
xsOffset: {
17+
required: false,
18+
type: Number
19+
},
20+
smOffset: {
21+
required: false,
22+
type: Number
23+
},
24+
mdOffset: {
25+
required: false,
26+
type: Number
27+
},
28+
lgOffset: {
29+
required: false,
30+
type: Number
31+
},
32+
xlOffset: {
33+
required: false,
34+
type: Number
35+
}
36+
},
1037
data() {
1138
let styleGeneral = this.createStyleSize();
1239
@@ -21,13 +48,6 @@ export default {
2148
styleGeneral
2249
};
2350
},
24-
props: {
25-
xs: Number,
26-
sm: Number,
27-
md: Number,
28-
lg: Number,
29-
xl: Number
30-
},
3151
methods: {
3252
getValue(breakpoint) {
3353
const localColumns = this.$parent.columns;
@@ -38,18 +58,25 @@ export default {
3858
return breakpoint ? `${(breakpoint / localColumns) * 100}%` : false;
3959
},
4060
createClassSize() {
41-
let newClass = 'colVGR-xs ';
61+
let newClass = 'grid-column colVGR-xs ';
4262
4363
newClass += this.sm ? 'colVGR-sm ' : '';
4464
newClass += this.md ? 'colVGR-md ' : '';
4565
newClass += this.lg ? 'colVGR-lg ' : '';
4666
newClass += this.xl ? 'colVGR-xl ' : '';
4767
68+
newClass += this.xsOffset ? 'colVGR-Offset-xs ' : '';
69+
newClass += this.smOffset ? 'colVGR-Offset-sm ' : '';
70+
newClass += this.mdOffset ? 'colVGR-Offset-md ' : '';
71+
newClass += this.lgOffset ? 'colVGR-Offset-lg ' : '';
72+
newClass += this.xlOffset ? 'colVGR-Offset-xl ' : '';
73+
4874
return newClass;
4975
},
5076
createStyleSize() {
5177
let newStyle = '';
5278
79+
// Scale
5380
newStyle += this.xs
5481
? `--xsWidthVGR:${this.getValue(this.xs)}; `
5582
: `--xsWidthVGR:100%; `;
@@ -58,6 +85,23 @@ export default {
5885
newStyle += this.lg ? `--lgWidthVGR:${this.getValue(this.lg)}; ` : '';
5986
newStyle += this.xl ? `--xlWidthVGR:${this.getValue(this.xl)}; ` : '';
6087
88+
// Offset
89+
newStyle += this.xsOffset
90+
? `--xsOffset:${this.getValue(this.xsOffset)}; `
91+
: ``;
92+
newStyle += this.smOffset
93+
? `--smOffset:${this.getValue(this.smOffset)}; `
94+
: '';
95+
newStyle += this.mdOffset
96+
? `--mdOffset:${this.getValue(this.mdOffset)}; `
97+
: '';
98+
newStyle += this.lgOffset
99+
? `--lgOffset:${this.getValue(this.lgOffset)}; `
100+
: '';
101+
newStyle += this.xlOffset
102+
? `--xlOffset:${this.getValue(this.xlOffset)}; `
103+
: '';
104+
61105
return newStyle;
62106
}
63107
}
@@ -76,31 +120,47 @@ export default {
76120
max-width: var(--xsWidthVGR);
77121
}
78122
123+
.colVGR-Offset-xs {
124+
margin-left: var(--xsOffset);
125+
}
126+
79127
@media (min-width: 576px) {
80128
.colVGR-sm {
81129
flex-basis: var(--smWidthVGR);
82130
max-width: var(--smWidthVGR);
83131
}
132+
.colVGR-Offset-sm {
133+
margin-left: var(--smOffset);
134+
}
84135
}
85136
86137
@media (min-width: 768px) {
87138
.colVGR-md {
88139
flex-basis: var(--mdWidthVGR);
89140
max-width: var(--mdWidthVGR);
90141
}
142+
.colVGR-Offset-md {
143+
margin-left: var(--mdOffset);
144+
}
91145
}
92146
93147
@media (min-width: 992px) {
94148
.colVGR-lg {
95149
flex-basis: var(--lgWidthVGR);
96150
max-width: var(--lgWidthVGR);
97151
}
152+
.colVGR-Offset-lg {
153+
margin-left: var(--lgOffset);
154+
}
98155
}
99156
100157
@media (min-width: 1200px) {
101158
.colVGR-xl {
102159
flex-basis: var(--xlWidthVGR);
103160
max-width: var(--xlWidthVGR);
104161
}
162+
.colVGR-Offset-xl {
163+
margin-left: var(--xlOffset);
164+
}
105165
}
106166
</style>

src/Row.vue

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,24 @@
11
<template>
2-
<div :style="styleGeneral" class="container">
2+
<div :style="styleGeneral" class="grid-row">
33
<slot />
44
</div>
55
</template>
66

77
<script>
88
export default {
99
name: 'Row',
10-
data() {
11-
return {
12-
styleGeneral: this.createGutter(this.gutter)
13-
};
14-
},
1510
props: {
1611
gutter: Number,
1712
columns: {
1813
type: Number,
1914
default: 12
2015
}
2116
},
17+
data() {
18+
return {
19+
styleGeneral: this.createGutter(this.gutter)
20+
};
21+
},
2222
methods: {
2323
createGutter(gutter) {
2424
return gutter
@@ -30,7 +30,7 @@ export default {
3030
</script>
3131

3232
<style scoped>
33-
.container {
33+
.grid-row {
3434
box-sizing: border-box;
3535
display: flex;
3636
flex-wrap: wrap;

0 commit comments

Comments
 (0)