Skip to content

Commit a56a889

Browse files
committed
Update Box props (add alignSelf)
1 parent 84d20f7 commit a56a889

File tree

2 files changed

+36
-2
lines changed

2 files changed

+36
-2
lines changed

src/Box/index.tsx

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import {
66
resolveAlign,
77
resolveJustify,
88
resolveWrap,
9+
resolveAlignSelf,
910
AxisX,
1011
AxisY,
1112
Space,
@@ -46,21 +47,22 @@ type StyleProps = ResponsiveProps<
4647

4748
export interface Props<T extends Direction> extends StyleProps, ViewProps {
4849
children?: React.ReactNode
49-
flex?: Flex
50+
flex?: ResponsiveProps<Flex>
5051
direction?: ResponsiveProp<T>
5152
paddingX?: ResponsiveProp<number>
5253
paddingY?: ResponsiveProp<number>
5354
marginX?: ResponsiveProp<number>
5455
marginY?: ResponsiveProp<number>
5556
alignX?: ResponsiveProp<ExtractAlignX<T>>
5657
alignY?: ResponsiveProp<ExtractAlignY<T>>
58+
alignSelf?: ResponsiveProp<ExtractAlignY<T>>
5759
wrap?: Wrap
5860
}
5961

6062
export const Box = <T extends Direction>(props: Props<T>) => {
6163
const {
6264
children,
63-
flex = 'content',
65+
flex: responsiveFlex = 'content',
6466
direction: responsiveDirection = 'column',
6567
padding,
6668
paddingX,
@@ -82,6 +84,7 @@ export const Box = <T extends Direction>(props: Props<T>) => {
8284
marginStart,
8385
alignX: responsiveAlignX,
8486
alignY: responsiveAlignY,
87+
alignSelf: responsiveAlignSelf,
8588
style,
8689
wrap,
8790
...rest
@@ -116,6 +119,9 @@ export const Box = <T extends Direction>(props: Props<T>) => {
116119
const direction = resolveResponsiveProp(responsiveDirection)
117120
const alignX = resolveResponsiveProp(responsiveAlignX)
118121
const alignY = resolveResponsiveProp(responsiveAlignY)
122+
const alignSelf = resolveResponsiveProp(responsiveAlignSelf)
123+
const flex = resolveResponsiveProp(responsiveFlex)
124+
119125
const alignments =
120126
direction === 'column' || direction === 'column-reverse'
121127
? [resolveAlign(alignX as AxisX), resolveJustify(alignY)]
@@ -129,6 +135,7 @@ export const Box = <T extends Direction>(props: Props<T>) => {
129135
resolveFlex(flex),
130136
resolveDirection(direction as Direction),
131137
resolveWrap(wrap),
138+
resolveAlignSelf(alignSelf),
132139
debugStyle,
133140
...alignments,
134141
]}

src/utils.ts

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -154,6 +154,18 @@ export const styles = StyleSheet.create({
154154
alignStretch: {
155155
alignItems: 'stretch',
156156
},
157+
alignSelfStart: {
158+
alignSelf: 'flex-start',
159+
},
160+
alignSelfCenter: {
161+
alignSelf: 'center',
162+
},
163+
alignSelfEnd: {
164+
alignSelf: 'flex-end',
165+
},
166+
alignSelfStretch: {
167+
alignSelf: 'stretch',
168+
},
157169
justifyStart: {
158170
justifyContent: 'flex-start',
159171
},
@@ -234,6 +246,21 @@ export const resolveAlign = (dir?: AxisX | AxisY) => {
234246
}
235247
}
236248

249+
export const resolveAlignSelf = (dir?: AxisX | AxisY) => {
250+
switch (dir) {
251+
case 'center':
252+
return styles.alignSelfCenter
253+
case 'bottom':
254+
case 'right':
255+
return styles.alignSelfEnd
256+
case 'top':
257+
case 'left':
258+
return styles.alignSelfStart
259+
case 'stretch':
260+
return styles.alignSelfStretch
261+
}
262+
}
263+
237264
export const resolveJustify = (dir?: AxisX | AxisY | Space) => {
238265
switch (dir) {
239266
case 'center':

0 commit comments

Comments
 (0)