mirror of
https://github.com/facebook/react-native.git
synced 2025-11-01 09:14:26 +00:00
597a1ff60b
Summary: This PR implements logical border block color properties as requested on https://github.com/facebook/react-native/issues/34425. This implementation includes the addition of the following style properties - `borderBlockColor`, equivalent to `borderTopColor` and `borderBottomColor`. - `borderBlockEndColor`, equivalent to `borderBottomColor`. - `borderBlockStartColor`, equivalent to `borderTopColor`. ## Changelog [GENERAL] [ADDED] - Add logical border block color properties Pull Request resolved: https://github.com/facebook/react-native/pull/35999 Test Plan: 1. Open the RNTester app and navigate to the `View` page 2. Test the new style properties through the `Logical Border Color` section <table> <tr> <td>Android</td> <td>iOS</td> </tr> <tr> <td><video src="https://user-images.githubusercontent.com/11707729/215384882-5b96518e-ad70-4157-a7f3-130f488cc41c.mov" alt="1" width="360px" /> </td> <td> <video src="https://user-images.githubusercontent.com/11707729/215392728-cfc6a097-26c1-4ffe-ab0e-f0a5a71a902d.mov"2" width="360px" /> </td> </tr> </table> Reviewed By: cipolleschi Differential Revision: D42849911 Pulled By: jacdebug fbshipit-source-id: 822cff5264689c42031d496105537032b5cd31ef
136 lines
4.8 KiB
Objective-C
136 lines
4.8 KiB
Objective-C
/*
|
|
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
*
|
|
* This source code is licensed under the MIT license found in the
|
|
* LICENSE file in the root directory of this source tree.
|
|
*/
|
|
|
|
#import <UIKit/UIKit.h>
|
|
|
|
#import <React/RCTBorderCurve.h>
|
|
#import <React/RCTBorderStyle.h>
|
|
#import <React/RCTComponent.h>
|
|
#import <React/RCTPointerEvents.h>
|
|
|
|
extern const UIAccessibilityTraits SwitchAccessibilityTrait;
|
|
|
|
@protocol RCTAutoInsetsProtocol;
|
|
|
|
@interface RCTView : UIView
|
|
|
|
/**
|
|
* Accessibility event handlers
|
|
*/
|
|
@property (nonatomic, copy) RCTDirectEventBlock onAccessibilityAction;
|
|
@property (nonatomic, copy) RCTDirectEventBlock onAccessibilityTap;
|
|
@property (nonatomic, copy) RCTDirectEventBlock onMagicTap;
|
|
@property (nonatomic, copy) RCTDirectEventBlock onAccessibilityEscape;
|
|
|
|
/**
|
|
* Used to control how touch events are processed.
|
|
*/
|
|
@property (nonatomic, assign) RCTPointerEvents pointerEvents;
|
|
|
|
+ (void)autoAdjustInsetsForView:(UIView<RCTAutoInsetsProtocol> *)parentView
|
|
withScrollView:(UIScrollView *)scrollView
|
|
updateOffset:(BOOL)updateOffset;
|
|
|
|
/**
|
|
* Layout direction of the view.
|
|
* This is inherited from UIView+React, but we override it here
|
|
* to improve performance and make subclassing/overriding possible/easier.
|
|
*/
|
|
@property (nonatomic, assign) UIUserInterfaceLayoutDirection reactLayoutDirection;
|
|
|
|
/**
|
|
* This is an optimization used to improve performance
|
|
* for large scrolling views with many subviews, such as a
|
|
* list or table. If set to YES, any clipped subviews will
|
|
* be removed from the view hierarchy whenever -updateClippedSubviews
|
|
* is called. This would typically be triggered by a scroll event
|
|
*/
|
|
@property (nonatomic, assign) BOOL removeClippedSubviews;
|
|
|
|
/**
|
|
* Hide subviews if they are outside the view bounds.
|
|
* This is an optimisation used predominantly with RKScrollViews
|
|
* but it is applied recursively to all subviews that have
|
|
* removeClippedSubviews set to YES
|
|
*/
|
|
- (void)updateClippedSubviews;
|
|
|
|
/**
|
|
* Border radii.
|
|
*/
|
|
@property (nonatomic, assign) CGFloat borderRadius;
|
|
@property (nonatomic, assign) CGFloat borderTopLeftRadius;
|
|
@property (nonatomic, assign) CGFloat borderTopRightRadius;
|
|
@property (nonatomic, assign) CGFloat borderTopStartRadius;
|
|
@property (nonatomic, assign) CGFloat borderTopEndRadius;
|
|
@property (nonatomic, assign) CGFloat borderBottomLeftRadius;
|
|
@property (nonatomic, assign) CGFloat borderBottomRightRadius;
|
|
@property (nonatomic, assign) CGFloat borderBottomStartRadius;
|
|
@property (nonatomic, assign) CGFloat borderBottomEndRadius;
|
|
@property (nonatomic, assign) CGFloat borderEndEndRadius;
|
|
@property (nonatomic, assign) CGFloat borderEndStartRadius;
|
|
@property (nonatomic, assign) CGFloat borderStartEndRadius;
|
|
@property (nonatomic, assign) CGFloat borderStartStartRadius;
|
|
|
|
/**
|
|
* Border colors (actually retained).
|
|
*/
|
|
@property (nonatomic, strong) UIColor *borderTopColor;
|
|
@property (nonatomic, strong) UIColor *borderRightColor;
|
|
@property (nonatomic, strong) UIColor *borderBottomColor;
|
|
@property (nonatomic, strong) UIColor *borderLeftColor;
|
|
@property (nonatomic, strong) UIColor *borderStartColor;
|
|
@property (nonatomic, strong) UIColor *borderEndColor;
|
|
@property (nonatomic, strong) UIColor *borderColor;
|
|
@property (nonatomic, strong) UIColor *borderBlockColor;
|
|
@property (nonatomic, strong) UIColor *borderBlockEndColor;
|
|
@property (nonatomic, strong) UIColor *borderBlockStartColor;
|
|
|
|
/**
|
|
* Border widths.
|
|
*/
|
|
@property (nonatomic, assign) CGFloat borderTopWidth;
|
|
@property (nonatomic, assign) CGFloat borderRightWidth;
|
|
@property (nonatomic, assign) CGFloat borderBottomWidth;
|
|
@property (nonatomic, assign) CGFloat borderLeftWidth;
|
|
@property (nonatomic, assign) CGFloat borderStartWidth;
|
|
@property (nonatomic, assign) CGFloat borderEndWidth;
|
|
@property (nonatomic, assign) CGFloat borderWidth;
|
|
// TODO: Implement logical border width logic
|
|
@property (nonatomic, assign) CGFloat borderBlockWidth;
|
|
@property (nonatomic, assign) CGFloat borderBlockEndWidth;
|
|
@property (nonatomic, assign) CGFloat borderBlockStartWidth;
|
|
|
|
/**
|
|
* Border curve.
|
|
*/
|
|
@property (nonatomic, assign) RCTBorderCurve borderCurve;
|
|
|
|
/**
|
|
* Border styles.
|
|
*/
|
|
@property (nonatomic, assign) RCTBorderStyle borderStyle;
|
|
|
|
/**
|
|
* Insets used when hit testing inside this view.
|
|
*/
|
|
@property (nonatomic, assign) UIEdgeInsets hitTestEdgeInsets;
|
|
|
|
/**
|
|
* (Experimental and unused for Paper) Pointer event handlers.
|
|
*/
|
|
@property (nonatomic, assign) RCTBubblingEventBlock onPointerCancel;
|
|
@property (nonatomic, assign) RCTBubblingEventBlock onPointerDown;
|
|
@property (nonatomic, assign) RCTBubblingEventBlock onPointerMove;
|
|
@property (nonatomic, assign) RCTBubblingEventBlock onPointerUp;
|
|
@property (nonatomic, assign) RCTCapturingEventBlock onPointerEnter;
|
|
@property (nonatomic, assign) RCTCapturingEventBlock onPointerLeave;
|
|
@property (nonatomic, assign) RCTBubblingEventBlock onPointerOver;
|
|
@property (nonatomic, assign) RCTBubblingEventBlock onPointerOut;
|
|
|
|
@end
|