iOS: Implement margin(Start|End) styles for RN
Reviewed By: mmmulani Differential Revision: D5884168 fbshipit-source-id: 4d37583ba79324e6cf8caaa20cecf865f28337f7
This commit is contained in:
parent
0a70c026cb
commit
64284bf66e
|
@ -251,6 +251,24 @@ var LayoutPropTypes = {
|
|||
ReactPropTypes.string,
|
||||
]),
|
||||
|
||||
/**
|
||||
* When direction is `ltr`, `marginStart` is equivalent to `marginLeft`.
|
||||
* When direction is `rtl`, `marginStart` is equivalent to `marginRight`.
|
||||
*/
|
||||
marginStart: ReactPropTypes.oneOfType([
|
||||
ReactPropTypes.number,
|
||||
ReactPropTypes.string,
|
||||
]),
|
||||
|
||||
/**
|
||||
* When direction is `ltr`, `marginEnd` is equivalent to `marginRight`.
|
||||
* When direction is `rtl`, `marginEnd` is equivalent to `marginLeft`.
|
||||
*/
|
||||
marginEnd: ReactPropTypes.oneOfType([
|
||||
ReactPropTypes.number,
|
||||
ReactPropTypes.string,
|
||||
]),
|
||||
|
||||
/** Setting `padding` has the same effect as setting each of
|
||||
* `paddingTop`, `paddingBottom`, `paddingLeft`, and `paddingRight`.
|
||||
* See https://developer.mozilla.org/en-US/docs/Web/CSS/padding
|
||||
|
|
|
@ -135,6 +135,8 @@ typedef void (^RCTApplierBlock)(NSDictionary<NSNumber *, UIView *> *viewRegistry
|
|||
@property (nonatomic, assign) YGValue marginLeft;
|
||||
@property (nonatomic, assign) YGValue marginBottom;
|
||||
@property (nonatomic, assign) YGValue marginRight;
|
||||
@property (nonatomic, assign) YGValue marginStart;
|
||||
@property (nonatomic, assign) YGValue marginEnd;
|
||||
|
||||
/**
|
||||
* Padding. Defaults to { 0, 0, 0, 0 }.
|
||||
|
|
|
@ -122,8 +122,17 @@ static void RCTProcessMetaPropsPadding(const YGValue metaProps[META_PROP_COUNT],
|
|||
}
|
||||
|
||||
static void RCTProcessMetaPropsMargin(const YGValue metaProps[META_PROP_COUNT], YGNodeRef node) {
|
||||
RCT_SET_YGVALUE_AUTO(metaProps[META_PROP_LEFT], YGNodeStyleSetMargin, node, YGEdgeStart);
|
||||
RCT_SET_YGVALUE_AUTO(metaProps[META_PROP_RIGHT], YGNodeStyleSetMargin, node, YGEdgeEnd);
|
||||
if (![[RCTI18nUtil sharedInstance] doesRTLFlipLeftAndRightStyles]) {
|
||||
RCT_SET_YGVALUE_AUTO(metaProps[META_PROP_START], YGNodeStyleSetMargin, node, YGEdgeStart);
|
||||
RCT_SET_YGVALUE_AUTO(metaProps[META_PROP_END], YGNodeStyleSetMargin, node, YGEdgeEnd);
|
||||
RCT_SET_YGVALUE_AUTO(metaProps[META_PROP_LEFT], YGNodeStyleSetMargin, node, YGEdgeLeft);
|
||||
RCT_SET_YGVALUE_AUTO(metaProps[META_PROP_RIGHT], YGNodeStyleSetMargin, node, YGEdgeRight);
|
||||
} else {
|
||||
YGValue start = metaProps[META_PROP_START].unit == YGUnitUndefined ? metaProps[META_PROP_LEFT] : metaProps[META_PROP_START];
|
||||
YGValue end = metaProps[META_PROP_END].unit == YGUnitUndefined ? metaProps[META_PROP_RIGHT] : metaProps[META_PROP_END];
|
||||
RCT_SET_YGVALUE_AUTO(start, YGNodeStyleSetMargin, node, YGEdgeStart);
|
||||
RCT_SET_YGVALUE_AUTO(end, YGNodeStyleSetMargin, node, YGEdgeEnd);
|
||||
}
|
||||
RCT_SET_YGVALUE_AUTO(metaProps[META_PROP_TOP], YGNodeStyleSetMargin, node, YGEdgeTop);
|
||||
RCT_SET_YGVALUE_AUTO(metaProps[META_PROP_BOTTOM], YGNodeStyleSetMargin, node, YGEdgeBottom);
|
||||
RCT_SET_YGVALUE_AUTO(metaProps[META_PROP_HORIZONTAL], YGNodeStyleSetMargin, node, YGEdgeHorizontal);
|
||||
|
@ -537,6 +546,8 @@ RCT_MARGIN_PROPERTY(Top, TOP)
|
|||
RCT_MARGIN_PROPERTY(Left, LEFT)
|
||||
RCT_MARGIN_PROPERTY(Bottom, BOTTOM)
|
||||
RCT_MARGIN_PROPERTY(Right, RIGHT)
|
||||
RCT_MARGIN_PROPERTY(Start, START)
|
||||
RCT_MARGIN_PROPERTY(End, END)
|
||||
|
||||
// Padding
|
||||
|
||||
|
|
|
@ -300,6 +300,8 @@ RCT_EXPORT_SHADOW_PROPERTY(marginTop, YGValue)
|
|||
RCT_EXPORT_SHADOW_PROPERTY(marginRight, YGValue)
|
||||
RCT_EXPORT_SHADOW_PROPERTY(marginBottom, YGValue)
|
||||
RCT_EXPORT_SHADOW_PROPERTY(marginLeft, YGValue)
|
||||
RCT_EXPORT_SHADOW_PROPERTY(marginStart, YGValue)
|
||||
RCT_EXPORT_SHADOW_PROPERTY(marginEnd, YGValue)
|
||||
RCT_EXPORT_SHADOW_PROPERTY(marginVertical, YGValue)
|
||||
RCT_EXPORT_SHADOW_PROPERTY(marginHorizontal, YGValue)
|
||||
RCT_EXPORT_SHADOW_PROPERTY(margin, YGValue)
|
||||
|
|
Loading…
Reference in New Issue