Skip to content

Commit f35250b

Browse files
committed
✨ Add default option to Flex component
1 parent 6db7706 commit f35250b

File tree

3 files changed

+28
-7
lines changed

3 files changed

+28
-7
lines changed

src/pages/components/flex.astro

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ const sections = getSections({
1717
})
1818
1919
const gap = {
20+
default: 'xxs',
2021
xs: 'xs',
2122
sm: 'sm',
2223
md: 'md',

src/tests/getLayoutClasses.test.ts

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,11 +18,12 @@ describe('getLayoutClasses', () => {
1818
expect(getLayoutClasses({ gap: 'xl5' })).toBe('xl5')
1919

2020
expect(getLayoutClasses({ gap: {
21+
default: 'sm',
2122
xs: 'xl2',
2223
sm: 'xl3',
2324
md: 'xl4',
2425
lg: 'xl5'
25-
} })).toBe('xs-xl2 sm-xl3 md-xl4 lg-xl5')
26+
} })).toBe('sm xs-xl2 sm-xl3 md-xl4 lg-xl5')
2627
})
2728

2829
it('should return the correct classes for alignment', () => {
@@ -46,6 +47,10 @@ describe('getLayoutClasses', () => {
4647
} })).toBe('center')
4748

4849
expect(getLayoutClasses({ alignment: {
50+
default: {
51+
horizontal: 'around',
52+
vertical: 'stretch'
53+
},
4954
xs: {
5055
horizontal: 'start',
5156
vertical: 'start'
@@ -63,6 +68,8 @@ describe('getLayoutClasses', () => {
6368
vertical: 'baseline'
6469
}
6570
} })).toBe([
71+
'justify-around',
72+
'items-stretch',
6673
'xs-justify-start',
6774
'xs-items-start',
6875
'sm-center',
@@ -80,11 +87,12 @@ describe('getLayoutClasses', () => {
8087
expect(getLayoutClasses({ direction: 'column-reverse' })).toBe('column-reverse')
8188

8289
expect(getLayoutClasses({ direction: {
90+
default: 'column',
8391
xs: 'row',
8492
sm: 'column',
8593
md: 'row-reverse',
8694
lg: 'column-reverse'
87-
} })).toBe('xs-row sm-column md-row-reverse lg-column-reverse')
95+
} })).toBe('column xs-row sm-column md-row-reverse lg-column-reverse')
8896
})
8997

9098
it('should return the correct classes for wrap', () => {
@@ -93,11 +101,12 @@ describe('getLayoutClasses', () => {
93101
expect(getLayoutClasses({ wrap: 'wrap-reverse' })).toBe('wrap-reverse')
94102

95103
expect(getLayoutClasses({ wrap: {
104+
default: 'nowrap',
96105
xs: 'wrap',
97106
sm: 'nowrap',
98107
md: 'wrap-reverse',
99108
lg: 'wrap'
100-
} })).toBe('xs-wrap sm-nowrap md-wrap-reverse lg-wrap')
109+
} })).toBe('nowrap xs-wrap sm-nowrap md-wrap-reverse lg-wrap')
101110
})
102111

103112
it('should return the correct combined classes', () => {
@@ -112,6 +121,7 @@ describe('getLayoutClasses', () => {
112121

113122
expect(getLayoutClasses({
114123
gap: {
124+
default: 'xs',
115125
xs: 'default',
116126
sm: 'lg'
117127
},
@@ -130,17 +140,20 @@ describe('getLayoutClasses', () => {
130140
sm: 'column'
131141
},
132142
wrap: {
143+
default: 'wrap-reverse',
133144
xs: 'nowrap',
134145
sm: 'wrap'
135146
}
136147
})).toBe([
148+
'xs',
137149
'xs-default',
138150
'sm-lg',
139151
'xs-center',
140152
'sm-justify-start',
141153
'sm-items-end',
142154
'xs-row',
143155
'sm-column',
156+
'wrap-reverse',
144157
'xs-nowrap',
145158
'sm-wrap'
146159
].join(' '))

src/utils/getLayoutClasses.ts

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ export type Wrap = 'wrap'
4242
| ''
4343

4444
export type Responsive<T> = T | {
45+
default?: T
4546
xs?: T
4647
sm?: T
4748
md?: T
@@ -68,15 +69,21 @@ export const getLayoutClasses = ({
6869
}: getLayoutClassesProps) => {
6970
const gaps = typeof gap === 'string'
7071
? gap
71-
: Object.entries(gap || {}).map(([key, value]) => `${key}-${value}`)
72+
: Object.entries(gap || {}).map(([key, value]) => key === 'default'
73+
? value
74+
: `${key}-${value}`)
7275

7376
const directions = typeof direction === 'string'
7477
? direction
75-
: Object.entries(direction || {}).map(([key, value]) => `${key}-${value}`)
78+
: Object.entries(direction || {}).map(([key, value]) => key === 'default'
79+
? value
80+
: `${key}-${value}`)
7681

7782
const wraps = typeof wrap === 'string'
7883
? wrap
79-
: Object.entries(wrap || {}).map(([key, value]) => `${key}-${value}`)
84+
: Object.entries(wrap || {}).map(([key, value]) => key === 'default'
85+
? value
86+
: `${key}-${value}`)
8087

8188
// Flatten alignments, eg.: { xs: { horizontal: 'center' } } to { xs-justify: 'center' }
8289
const flattenAlignments = (obj: Responsive<Alignment>, prefix = ''): Responsive<Alignment> => {
@@ -89,7 +96,7 @@ export const getLayoutClasses = ({
8996
return { ...acc, ...flattenAlignments(value, newKey) }
9097
}
9198

92-
return { ...acc, [newKey]: value }
99+
return { ...acc, [newKey.replace('default-', '')]: value }
93100
}, {})
94101
}
95102

0 commit comments

Comments
 (0)