react-native-ui-lib 7.46.0 → 7.46.1-snapshot.7298

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (203) hide show
  1. package/babel.config.js +12 -0
  2. package/index.js +1 -0
  3. package/lib/android/build.gradle +5 -5
  4. package/lib/android/src/main/java/com/wix/reactnativeuilib/UiLibPackageList.java +0 -2
  5. package/lib/android/src/main/java/com/wix/reactnativeuilib/highlighterview/HighlighterViewManager.java +31 -23
  6. package/lib/android/src/main/java/com/wix/reactnativeuilib/keyboardinput/utils/RuntimeUtils.java +1 -1
  7. package/lib/components/{HighlighterOverlayView.d.ts → HighlighterOverlayView/index.d.ts} +1 -1
  8. package/lib/components/HighlighterOverlayView/index.js +49 -0
  9. package/lib/components/{HighlighterOverlayView.web.d.ts → HighlighterOverlayView/index.web.d.ts} +1 -1
  10. package/lib/components/Keyboard/{KeyboardInput → KeyboardAccessoryView}/CustomKeyboardView/CustomKeyboardView.android.d.ts +5 -2
  11. package/lib/components/Keyboard/KeyboardAccessoryView/CustomKeyboardView/CustomKeyboardView.android.js +51 -0
  12. package/lib/components/Keyboard/{KeyboardInput → KeyboardAccessoryView}/CustomKeyboardView/CustomKeyboardView.ios.d.ts +1 -1
  13. package/lib/components/Keyboard/{KeyboardInput → KeyboardAccessoryView}/CustomKeyboardView/CustomKeyboardView.ios.js +3 -3
  14. package/lib/components/Keyboard/{KeyboardInput → KeyboardAccessoryView/CustomKeyboardView}/CustomKeyboardViewBase.d.ts +3 -0
  15. package/lib/components/Keyboard/{KeyboardInput → KeyboardAccessoryView/CustomKeyboardView}/CustomKeyboardViewBase.js +1 -1
  16. package/lib/components/Keyboard/{KeyboardInput/utils → KeyboardAccessoryView/KeyboardRegistry/EventEmitterManager}/__tests__/EventEmitterManager.spec.js +1 -1
  17. package/lib/components/Keyboard/{KeyboardInput → KeyboardAccessoryView/KeyboardRegistry}/__tests__/KeyboardRegistry.spec.js +1 -1
  18. package/lib/components/Keyboard/{KeyboardInput/KeyboardRegistry.d.ts → KeyboardAccessoryView/KeyboardRegistry/index.d.ts} +1 -1
  19. package/lib/components/Keyboard/{KeyboardInput/KeyboardRegistry.js → KeyboardAccessoryView/KeyboardRegistry/index.js} +1 -1
  20. package/lib/components/Keyboard/{KeyboardInput → KeyboardAccessoryView/KeyboardRegistry}/keyboardRegistry.api.json +9 -9
  21. package/lib/components/Keyboard/KeyboardAccessoryView/KeyboardUtils/index.d.ts +26 -0
  22. package/lib/components/Keyboard/KeyboardAccessoryView/KeyboardUtils/index.js +91 -0
  23. package/lib/components/Keyboard/{KeyboardInput/KeyboardAccessoryView.d.ts → KeyboardAccessoryView/index.d.ts} +11 -1
  24. package/lib/components/Keyboard/{KeyboardInput/KeyboardAccessoryView.js → KeyboardAccessoryView/index.js} +31 -5
  25. package/lib/components/Keyboard/{KeyboardInput → KeyboardAccessoryView}/keyboardAccessoryView.api.json +5 -5
  26. package/lib/components/Keyboard/{KeyboardTracking/KeyboardAwareInsetsView.d.ts → KeyboardAwareInsetsView/index.d.ts} +1 -1
  27. package/lib/components/Keyboard/{KeyboardTracking/KeyboardAwareInsetsView.js → KeyboardAwareInsetsView/index.js} +1 -1
  28. package/lib/components/Keyboard/{KeyboardTracking/KeyboardTrackingView → KeyboardTrackingView}/KeyboardTrackingView.ios.d.ts +1 -4
  29. package/lib/components/Keyboard/{KeyboardTracking/KeyboardTrackingView → KeyboardTrackingView}/KeyboardTrackingView.ios.js +5 -8
  30. package/lib/components/Keyboard/{KeyboardTracking/KeyboardTrackingView → KeyboardTrackingView}/index.d.ts +2 -2
  31. package/lib/components/Keyboard/{KeyboardTracking/KeyboardTrackingView → KeyboardTrackingView}/keyboardTrackingView.api.json +11 -20
  32. package/lib/components/Keyboard/index.d.ts +6 -6
  33. package/lib/components/Keyboard/index.js +6 -6
  34. package/lib/components/SafeArea/SafeAreaInsetsManager.d.ts +21 -7
  35. package/lib/components/SafeArea/SafeAreaInsetsManager.js +95 -31
  36. package/lib/components/SafeArea/SafeAreaSpacerView.d.ts +2 -2
  37. package/lib/components/SafeArea/SafeAreaSpacerView.js +63 -9
  38. package/lib/components/SafeArea/__tests__/SafeAreaInsetsManager.spec.js +274 -0
  39. package/lib/components/SafeArea/index.d.ts +10 -0
  40. package/lib/components/SafeArea/index.js +11 -0
  41. package/lib/components/index.d.ts +1 -1
  42. package/lib/components/index.js +1 -1
  43. package/lib/ios/reactnativeuilib/keyboardinput/rctcustomInputcontroller/RCTCustomInputControllerTemp.m +52 -8
  44. package/lib/ios/reactnativeuilib/keyboardinput/rctcustomInputcontroller/RCTCustomKeyboardViewControllerTemp.h +1 -7
  45. package/lib/ios/reactnativeuilib/keyboardinput/rctcustomInputcontroller/RCTCustomKeyboardViewControllerTemp.m +1 -1
  46. package/lib/ios/reactnativeuilib/keyboardtrackingview/KeyboardTrackingViewTempManager.m +109 -41
  47. package/lib/package.json +1 -1
  48. package/lib/react-native.config.js +1 -3
  49. package/metro.config.js +2 -2
  50. package/package.json +24 -24
  51. package/panView.d.ts +2 -0
  52. package/panView.js +1 -0
  53. package/react-native.config.js +1 -3
  54. package/src/commons/Constants.js +2 -5
  55. package/src/components/KeyboardAwareScrollView/KeyboardAwareBase.js +5 -1
  56. package/src/components/actionSheet/index.d.ts +2 -12
  57. package/src/components/actionSheet/index.js +3 -42
  58. package/src/components/badge/index.d.ts +107 -47
  59. package/src/components/button/button.api.json +1 -1
  60. package/src/components/button/index.d.ts +53 -23
  61. package/src/components/button/types.d.ts +0 -1
  62. package/src/components/colorPicker/ColorPickerDialog.d.ts +1 -1
  63. package/src/components/colorPicker/ColorPickerDialog.js +1 -1
  64. package/src/components/dateTimePicker/index.d.ts +186 -5
  65. package/src/components/dateTimePicker/index.js +3 -4
  66. package/src/components/dialog/dialog.api.json +31 -37
  67. package/src/{incubator → components}/dialog/dialogHeader.api.json +2 -2
  68. package/src/components/dialog/index.d.ts +13 -105
  69. package/src/components/dialog/index.js +204 -212
  70. package/src/{incubator → components}/dialog/types.d.ts +0 -19
  71. package/src/{incubator → components}/dialog/types.js +1 -3
  72. package/src/{incubator → components}/dialog/useDialogContent.d.ts +1 -1
  73. package/src/components/drawer/Swipeable.js +1 -2
  74. package/src/components/drawer/index.js +31 -25
  75. package/src/components/fadedScrollView/index.js +7 -2
  76. package/src/components/featureHighlight/index.d.ts +1 -1
  77. package/src/components/index.js +0 -19
  78. package/src/components/modal/index.d.ts +5 -0
  79. package/src/components/modal/index.js +14 -10
  80. package/src/components/modal/modal.api.json +5 -0
  81. package/src/{incubator → components}/panView/index.d.ts +3 -3
  82. package/src/{incubator → components}/panView/index.js +4 -4
  83. package/src/{incubator → components}/panView/usePanGesture.d.ts +1 -1
  84. package/src/components/picker/Picker.driver.new.d.ts +2 -2
  85. package/src/components/picker/Picker.driver.new.js +3 -3
  86. package/src/components/picker/PickerItem.js +6 -20
  87. package/src/components/picker/PickerPresenter.d.ts +0 -1
  88. package/src/components/picker/PickerPresenter.js +1 -23
  89. package/src/components/picker/api/picker.api.json +0 -1
  90. package/src/components/picker/api/pickerItem.api.json +0 -5
  91. package/src/components/picker/helpers/useFieldType.d.ts +53 -23
  92. package/src/components/picker/helpers/usePickerLabel.d.ts +1 -1
  93. package/src/components/picker/helpers/usePickerLabel.js +2 -3
  94. package/src/components/picker/helpers/usePickerMigrationWarnings.d.ts +1 -1
  95. package/src/components/picker/helpers/usePickerMigrationWarnings.js +0 -12
  96. package/src/components/picker/helpers/usePickerSearch.d.ts +1 -1
  97. package/src/components/picker/helpers/usePickerSearch.js +4 -8
  98. package/src/components/picker/helpers/usePickerSelection.d.ts +1 -1
  99. package/src/components/picker/helpers/usePickerSelection.js +2 -10
  100. package/src/components/picker/index.js +4 -22
  101. package/src/components/picker/types.d.ts +1 -24
  102. package/src/components/segmentedControl/index.js +3 -3
  103. package/src/components/slider/GradientSlider.d.ts +1 -1
  104. package/src/components/sortableGridList/SortableItem.js +13 -4
  105. package/src/components/sortableList/SortableListItem.js +13 -4
  106. package/src/components/stackAggregator/index.js +16 -11
  107. package/src/components/text/Text.driver.new.d.ts +2 -2
  108. package/src/components/text/Text.driver.new.js +2 -2
  109. package/src/components/textField/Input.js +0 -1
  110. package/src/components/textField/TextField.driver.new.d.ts +2 -2
  111. package/src/components/textField/TextField.driver.new.js +2 -2
  112. package/src/components/textField/presets/outline.d.ts +106 -46
  113. package/src/components/textField/presets/underline.d.ts +106 -46
  114. package/src/components/textField/usePreset.d.ts +72 -44
  115. package/src/{incubator/hooks/useHiddenLocation.web.d.ts → hooks/useHiddenLocation/index.d.ts} +1 -1
  116. package/src/{incubator/hooks/useHiddenLocation.d.ts → hooks/useHiddenLocation/index.web.d.ts} +1 -1
  117. package/src/incubator/expandableOverlay/ExpandableOverlay.driver.js +1 -1
  118. package/src/incubator/expandableOverlay/index.d.ts +42 -3
  119. package/src/incubator/expandableOverlay/index.js +1 -4
  120. package/src/incubator/index.d.ts +0 -2
  121. package/src/incubator/index.js +0 -2
  122. package/src/incubator/toast/index.js +1 -1
  123. package/src/index.d.ts +3 -10
  124. package/src/index.js +41 -160
  125. package/src/style/borderRadiuses.d.ts +2 -0
  126. package/src/style/borderRadiuses.js +1 -0
  127. package/src/style/colors.d.ts +8 -4
  128. package/src/style/colorsPalette.js +1 -1
  129. package/src/style/designTokens.js +6 -8
  130. package/src/testkit/index.d.ts +1 -1
  131. package/src/testkit/index.js +1 -1
  132. package/src/testkit/new/Component.driver.d.ts +4 -1
  133. package/src/testkit/new/Component.driver.js +3 -3
  134. package/lib/android/src/main/java/com/wix/reactnativeuilib/highlighterview/ReactHacks.java +0 -30
  135. package/lib/android/src/main/java/com/wix/reactnativeuilib/highlighterview/ReflectionUtils.java +0 -34
  136. package/lib/android/src/main/java/com/wix/reactnativeuilib/textinput/DefaultKeyListener.java +0 -33
  137. package/lib/android/src/main/java/com/wix/reactnativeuilib/textinput/KeyListenerProxy.java +0 -53
  138. package/lib/android/src/main/java/com/wix/reactnativeuilib/textinput/TextInputDelKeyHandlerModule.java +0 -54
  139. package/lib/android/src/main/java/com/wix/reactnativeuilib/textinput/TextInputDelKeyHandlerPackage.java +0 -28
  140. package/lib/android/src/main/java/com/wix/reactnativeuilib/textinput/ViewUtils.java +0 -36
  141. package/lib/components/HighlighterOverlayView.js +0 -40
  142. package/lib/components/Keyboard/KeyboardInput/CustomKeyboardView/CustomKeyboardView.android.js +0 -28
  143. package/lib/components/Keyboard/KeyboardInput/utils/KeyboardUtils.d.ts +0 -11
  144. package/lib/components/Keyboard/KeyboardInput/utils/KeyboardUtils.js +0 -17
  145. package/panningViews.d.ts +0 -2
  146. package/panningViews.js +0 -1
  147. package/sharedTransition.d.ts +0 -2
  148. package/sharedTransition.js +0 -1
  149. package/src/components/dialog/DialogDismissibleView.d.ts +0 -34
  150. package/src/components/dialog/DialogDismissibleView.js +0 -184
  151. package/src/components/dialog/OverlayFadingBackground.d.ts +0 -14
  152. package/src/components/dialog/OverlayFadingBackground.js +0 -45
  153. package/src/components/panningViews/asPanViewConsumer.d.ts +0 -3
  154. package/src/components/panningViews/asPanViewConsumer.js +0 -16
  155. package/src/components/panningViews/panDismissibleView.d.ts +0 -51
  156. package/src/components/panningViews/panDismissibleView.js +0 -350
  157. package/src/components/panningViews/panGestureView.d.ts +0 -23
  158. package/src/components/panningViews/panGestureView.js +0 -156
  159. package/src/components/panningViews/panListenerView.d.ts +0 -66
  160. package/src/components/panningViews/panListenerView.js +0 -155
  161. package/src/components/panningViews/panResponderView.d.ts +0 -19
  162. package/src/components/panningViews/panResponderView.js +0 -79
  163. package/src/components/panningViews/panningContext.d.ts +0 -3
  164. package/src/components/panningViews/panningContext.js +0 -4
  165. package/src/components/panningViews/panningProvider.d.ts +0 -73
  166. package/src/components/panningViews/panningProvider.js +0 -101
  167. package/src/components/sharedTransition/ShareTransitionContext.js +0 -3
  168. package/src/components/sharedTransition/SharedArea.js +0 -153
  169. package/src/components/sharedTransition/SourceElement.js +0 -44
  170. package/src/components/sharedTransition/TargetElement.js +0 -38
  171. package/src/components/sharedTransition/index.js +0 -9
  172. package/src/incubator/dialog/dialog.api.json +0 -54
  173. package/src/incubator/dialog/index.d.ts +0 -15
  174. package/src/incubator/dialog/index.js +0 -218
  175. /package/lib/components/{HighlighterOverlayView.web.js → HighlighterOverlayView/index.web.js} +0 -0
  176. /package/lib/components/Keyboard/{KeyboardInput → KeyboardAccessoryView}/CustomKeyboardView/index.d.ts +0 -0
  177. /package/lib/components/Keyboard/{KeyboardInput → KeyboardAccessoryView}/CustomKeyboardView/index.js +0 -0
  178. /package/lib/components/Keyboard/{KeyboardInput → KeyboardAccessoryView}/CustomKeyboardView/index.web.d.ts +0 -0
  179. /package/lib/components/Keyboard/{KeyboardInput → KeyboardAccessoryView}/CustomKeyboardView/index.web.js +0 -0
  180. /package/lib/components/Keyboard/{KeyboardInput/utils/EventEmitterManager.d.ts → KeyboardAccessoryView/KeyboardRegistry/EventEmitterManager/index.d.ts} +0 -0
  181. /package/lib/components/Keyboard/{KeyboardInput/utils/EventEmitterManager.js → KeyboardAccessoryView/KeyboardRegistry/EventEmitterManager/index.js} +0 -0
  182. /package/lib/components/Keyboard/{KeyboardInput → KeyboardAccessoryView}/TextInputKeyboardManager/TextInputKeyboardManager.android.d.ts +0 -0
  183. /package/lib/components/Keyboard/{KeyboardInput → KeyboardAccessoryView}/TextInputKeyboardManager/TextInputKeyboardManager.android.js +0 -0
  184. /package/lib/components/Keyboard/{KeyboardInput → KeyboardAccessoryView}/TextInputKeyboardManager/TextInputKeyboardManager.ios.d.ts +0 -0
  185. /package/lib/components/Keyboard/{KeyboardInput → KeyboardAccessoryView}/TextInputKeyboardManager/TextInputKeyboardManager.ios.js +0 -0
  186. /package/lib/components/Keyboard/{KeyboardInput → KeyboardAccessoryView}/TextInputKeyboardManager/index.d.ts +0 -0
  187. /package/lib/components/Keyboard/{KeyboardInput → KeyboardAccessoryView}/TextInputKeyboardManager/index.js +0 -0
  188. /package/lib/components/Keyboard/{KeyboardTracking → KeyboardAwareInsetsView}/keyboardAwareInsetsView.api.json +0 -0
  189. /package/lib/components/Keyboard/{KeyboardTracking/KeyboardTrackingView → KeyboardTrackingView}/KeyboardTrackingView.android.d.ts +0 -0
  190. /package/lib/components/Keyboard/{KeyboardTracking/KeyboardTrackingView → KeyboardTrackingView}/KeyboardTrackingView.android.js +0 -0
  191. /package/lib/components/Keyboard/{KeyboardTracking/KeyboardTrackingView → KeyboardTrackingView}/index.js +0 -0
  192. /package/lib/components/Keyboard/{KeyboardTracking/KeyboardTrackingView → KeyboardTrackingView}/index.web.d.ts +0 -0
  193. /package/lib/components/Keyboard/{KeyboardTracking/KeyboardTrackingView → KeyboardTrackingView}/index.web.js +0 -0
  194. /package/src/{incubator → components}/dialog/Dialog.driver.new.d.ts +0 -0
  195. /package/src/{incubator → components}/dialog/Dialog.driver.new.js +0 -0
  196. /package/src/{incubator → components}/dialog/DialogHeader.d.ts +0 -0
  197. /package/src/{incubator → components}/dialog/DialogHeader.js +0 -0
  198. /package/src/{incubator → components}/dialog/useDialogContent.js +0 -0
  199. /package/src/{incubator → components}/panView/panningUtil.d.ts +0 -0
  200. /package/src/{incubator → components}/panView/panningUtil.js +0 -0
  201. /package/src/{incubator → components}/panView/usePanGesture.js +0 -0
  202. /package/src/{incubator/hooks/useHiddenLocation.js → hooks/useHiddenLocation/index.js} +0 -0
  203. /package/src/{incubator/hooks/useHiddenLocation.web.js → hooks/useHiddenLocation/index.web.js} +0 -0
@@ -11,11 +11,12 @@
11
11
  #import "UIResponder+FirstResponderTemp.h"
12
12
 
13
13
  #import <WebKit/WebKit.h>
14
- #import <React/RCTScrollView.h>
14
+
15
15
  #import <React/RCTBridge.h>
16
16
  #import <React/RCTUIManager.h>
17
17
  #import <React/UIView+React.h>
18
18
  #import <React/RCTUIManagerUtils.h>
19
+ #import <React/RCTSurfaceHostingView.h>
19
20
 
20
21
  #import <objc/runtime.h>
21
22
 
@@ -70,7 +71,7 @@ typedef NS_ENUM(NSUInteger, KeyboardTrackingScrollBehavior) {
70
71
 
71
72
  if (self)
72
73
  {
73
- [self addObserver:self forKeyPath:@"bounds" options:NSKeyValueObservingOptionInitial | NSKeyValueObservingOptionNew context:NULL];
74
+ [self addObserver:self forKeyPath:@"frame" options:NSKeyValueObservingOptionInitial | NSKeyValueObservingOptionNew context:NULL];
74
75
  _inputViewsMap = [NSMapTable weakToWeakObjectsMapTable];
75
76
  _deferedInitializeAccessoryViewsCount = 0;
76
77
 
@@ -93,20 +94,21 @@ typedef NS_ENUM(NSUInteger, KeyboardTrackingScrollBehavior) {
93
94
  return self;
94
95
  }
95
96
 
96
- -(RCTRootView*)getRootView
97
+ -(UIView*)getRootView
97
98
  {
98
99
  UIView *view = self;
99
100
  while (view.superview != nil)
100
101
  {
101
102
  view = view.superview;
102
- if ([view isKindOfClass:[RCTRootView class]])
103
+ if ([view isKindOfClass:[RCTSurfaceHostingView class]]) {
103
104
  break;
105
+ }
104
106
  }
105
107
 
106
- if ([view isKindOfClass:[RCTRootView class]])
107
- {
108
- return (RCTRootView*)view;
108
+ if ([view isKindOfClass:[RCTSurfaceHostingView class]]) {
109
+ return view;
109
110
  }
111
+
110
112
  return nil;
111
113
  }
112
114
 
@@ -169,10 +171,20 @@ typedef NS_ENUM(NSUInteger, KeyboardTrackingScrollBehavior) {
169
171
  [self updateBottomViewFrame];
170
172
  }
171
173
 
174
+ - (UIScrollView*)extractUIScrollView:(UIView*)view
175
+ {
176
+ for (UIView* subview in view.subviews) {
177
+ if ([subview isKindOfClass:[UIScrollView class]]) {
178
+ return (UIScrollView*)subview;
179
+ }
180
+ }
181
+
182
+ return nil;
183
+ }
184
+
172
185
  - (void)initializeAccessoryViewsAndHandleInsets
173
186
  {
174
187
  NSArray<UIView*>* allSubviews = [self getBreadthFirstSubviewsForView:[self getRootView]];
175
- NSMutableArray<RCTScrollView*>* rctScrollViewsArray = [NSMutableArray array];
176
188
 
177
189
  for (UIView* subview in allSubviews)
178
190
  {
@@ -180,27 +192,30 @@ typedef NS_ENUM(NSUInteger, KeyboardTrackingScrollBehavior) {
180
192
  {
181
193
  if(_scrollViewToManage == nil)
182
194
  {
183
- if(_requiresSameParentToManageScrollView && [subview isKindOfClass:[RCTScrollView class]] && subview.superview == self.superview)
184
- {
185
- _scrollViewToManage = ((RCTScrollView*)subview).scrollView;
186
- }
187
- else if(!_requiresSameParentToManageScrollView && [subview isKindOfClass:[UIScrollView class]])
188
- {
189
- _scrollViewToManage = (UIScrollView*)subview;
190
- }
191
-
192
- if(_scrollViewToManage != nil)
193
- {
194
- _scrollIsInverted = CGAffineTransformEqualToTransform(_scrollViewToManage.superview.transform, CGAffineTransformMakeScale(1, -1));
195
+ if ([NSStringFromClass([subview class]) isEqualToString:@"RCTScrollViewComponentView"]) {
196
+ UIScrollView *scrollView = [self extractUIScrollView:subview];
197
+
198
+ if ([scrollView isKindOfClass:[UIScrollView class]])
199
+ {
200
+ if(_requiresSameParentToManageScrollView && subview.superview == self.superview)
201
+ {
202
+ _scrollViewToManage = scrollView;
203
+ }
204
+ else if(!_requiresSameParentToManageScrollView)
205
+ {
206
+ _scrollViewToManage = scrollView;
207
+ }
208
+
209
+ if(_scrollViewToManage != nil)
210
+ {
211
+ _scrollIsInverted = CGAffineTransformEqualToTransform(subview.superview.transform, CGAffineTransformMakeScale(1, -1));
212
+ }
213
+ }
195
214
  }
196
215
  }
197
-
198
- if([subview isKindOfClass:[RCTScrollView class]])
199
- {
200
- [rctScrollViewsArray addObject:(RCTScrollView*)subview];
201
- }
202
216
  }
203
217
 
218
+
204
219
  if ([subview isKindOfClass:NSClassFromString(@"RCTTextField")])
205
220
  {
206
221
  UITextField *textField = nil;
@@ -223,17 +238,30 @@ typedef NS_ENUM(NSUInteger, KeyboardTrackingScrollBehavior) {
223
238
  {
224
239
  [self setupTextView:[subview valueForKey:@"_backedTextInputView"]];
225
240
  }
226
- else if ([subview isKindOfClass:NSClassFromString(@"RCTTextView")])
241
+ else if ([subview isKindOfClass:NSClassFromString(@"RCTTextView")] ||
242
+ [subview isKindOfClass:NSClassFromString(@"RCTTextInputComponentView")])
227
243
  {
244
+
228
245
  UITextView *textView = nil;
229
- Ivar backedTextInputIvar = class_getInstanceVariable([subview class], "_backedTextInput");
230
- if (backedTextInputIvar != NULL)
231
- {
232
- textView = [subview valueForKey:@"_backedTextInput"];
233
- }
234
- else if([subview isKindOfClass:[UITextView class]])
235
- {
236
- textView = (UITextView*)subview;
246
+
247
+ if ([subview isKindOfClass:NSClassFromString(@"RCTTextInputComponentView")]) {
248
+ Ivar textFieldIvar = class_getInstanceVariable([subview class], "_backedTextInputView");
249
+ if (textFieldIvar != NULL)
250
+ {
251
+ textView = [subview valueForKey:@"_backedTextInputView"];
252
+ }
253
+
254
+ } else {
255
+
256
+ Ivar backedTextInputIvar = class_getInstanceVariable([subview class], "_backedTextInput");
257
+ if (backedTextInputIvar != NULL)
258
+ {
259
+ textView = [subview valueForKey:@"_backedTextInput"];
260
+ }
261
+ else if([subview isKindOfClass:[UITextView class]])
262
+ {
263
+ textView = (UITextView*)subview;
264
+ }
237
265
  }
238
266
  [self setupTextView:textView];
239
267
  }
@@ -247,13 +275,11 @@ typedef NS_ENUM(NSUInteger, KeyboardTrackingScrollBehavior) {
247
275
  }
248
276
  }
249
277
 
250
- for (RCTScrollView *scrollView in rctScrollViewsArray)
278
+ if(_scrollViewToManage != nil)
251
279
  {
252
- if(scrollView.scrollView == _scrollViewToManage)
280
+ if(_scrollViewToManage.delegate == nil)
253
281
  {
254
- [scrollView removeScrollListener:self];
255
- [scrollView addScrollListener:self];
256
- break;
282
+ _scrollViewToManage.delegate = self;
257
283
  }
258
284
  }
259
285
 
@@ -270,6 +296,8 @@ typedef NS_ENUM(NSUInteger, KeyboardTrackingScrollBehavior) {
270
296
  _originalHeight = _ObservingInputAccessoryViewTemp.height;
271
297
 
272
298
  [self addBottomViewIfNecessary];
299
+
300
+ [self ensureLegacyViewManagerTouchDelegation];
273
301
  }
274
302
 
275
303
  - (void)setupTextView:(UITextView*)textView
@@ -338,12 +366,12 @@ typedef NS_ENUM(NSUInteger, KeyboardTrackingScrollBehavior) {
338
366
 
339
367
  -(void)dealloc
340
368
  {
341
- [self removeObserver:self forKeyPath:@"bounds"];
369
+ [self removeObserver:self forKeyPath:@"frame"];
342
370
  }
343
371
 
344
372
  - (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary<NSKeyValueChangeKey,id> *)change context:(void *)context
345
373
  {
346
- _ObservingInputAccessoryViewTemp.height = self.bounds.size.height;
374
+ _ObservingInputAccessoryViewTemp.height = self.frame.size.height;
347
375
  }
348
376
 
349
377
  - (void)ObservingInputAccessoryViewTempKeyboardWillDisappear:(ObservingInputAccessoryViewTemp *)ObservingInputAccessoryViewTemp
@@ -551,9 +579,48 @@ typedef NS_ENUM(NSUInteger, KeyboardTrackingScrollBehavior) {
551
579
  [self updateBottomViewFrame];
552
580
 
553
581
  self.transform = CGAffineTransformMakeTranslation(0, accessoryTranslation);
582
+
554
583
  [self _updateScrollViewInsets];
555
584
  }
556
585
 
586
+ - (void)ensureLegacyViewManagerTouchDelegation {
587
+ UIView *superview = self.superview;
588
+ if (superview) {
589
+ if ([NSStringFromClass([superview class]) isEqualToString:@"RCTLegacyViewManagerInteropComponentView"]) {
590
+ [self changeLegacyViewManagerHitTestDelegation:superview];
591
+ }
592
+ }
593
+ }
594
+
595
+ - (void)changeLegacyViewManagerHitTestDelegation:(UIView *)wrapperView {
596
+ static dispatch_once_t onceToken;
597
+ static IMP originalHitTestIMP = NULL;
598
+
599
+ dispatch_once(&onceToken, ^{
600
+ Class wrapperClass = [wrapperView class];
601
+
602
+ Method originalMethod = class_getInstanceMethod(wrapperClass, @selector(hitTest:withEvent:));
603
+ if (originalMethod) {
604
+ originalHitTestIMP = method_getImplementation(originalMethod);
605
+
606
+ IMP customHitTest = imp_implementationWithBlock(^UIView*(id self, CGPoint point, UIEvent *event) {
607
+ UIView *subview = [self subviews].firstObject;
608
+ if (subview &&
609
+ [subview isKindOfClass:[KeyboardTrackingViewTemp class]]) {
610
+ CGPoint convertedPoint = [self convertPoint:point toView:subview];
611
+ UIView *result = [subview hitTest:convertedPoint withEvent:event];
612
+ return result;
613
+ }
614
+
615
+ UIView* (*originalFunc)(id, SEL, CGPoint, UIEvent*) = (void*)originalHitTestIMP;
616
+ return originalFunc(self, @selector(hitTest:withEvent:), point, event);
617
+ });
618
+
619
+ method_setImplementation(originalMethod, customHitTest);
620
+ }
621
+ });
622
+ }
623
+
557
624
  - (void)performScrollToFocusedInput
558
625
  {
559
626
  if (_scrollViewToManage != nil && self.scrollToFocusedInput)
@@ -735,3 +802,4 @@ RCT_EXPORT_METHOD(scrollToStart:(nonnull NSNumber *)reactTag)
735
802
  }
736
803
 
737
804
  @end
805
+
package/lib/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "uilib-native",
3
- "version": "4.5.2",
3
+ "version": "5.0.0-snapshot.7298",
4
4
  "homepage": "https://github.com/wix/react-native-ui-lib",
5
5
  "description": "uilib native components (separated from js components)",
6
6
  "main": "components/index",
@@ -10,11 +10,9 @@ module.exports = {
10
10
  sourceDir: './android/',
11
11
  packageImportPath: `import com.wix.reactnativeuilib.dynamicfont.DynamicFontPackage;
12
12
  import com.wix.reactnativeuilib.highlighterview.HighlighterViewPackage;
13
- import com.wix.reactnativeuilib.keyboardinput.KeyboardInputPackage;
14
- import com.wix.reactnativeuilib.textinput.TextInputDelKeyHandlerPackage;`,
13
+ import com.wix.reactnativeuilib.keyboardinput.KeyboardInputPackage;`,
15
14
  packageInstance: `new DynamicFontPackage(),
16
15
  new HighlighterViewPackage(),
17
- new TextInputDelKeyHandlerPackage(),
18
16
  new KeyboardInputPackage(getApplication())`
19
17
  }
20
18
  }
package/metro.config.js CHANGED
@@ -5,9 +5,9 @@ const {assetExts, sourceExts} = defaultConfig.resolver;
5
5
 
6
6
  /**
7
7
  * Metro configuration
8
- * https://facebook.github.io/metro/docs/configuration
8
+ * https://reactnative.dev/docs/metro
9
9
  *
10
- * @type {import('metro-config').MetroConfig}
10
+ * @type {import('@react-native/metro-config').MetroConfig}
11
11
  */
12
12
 
13
13
  const config = {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-native-ui-lib",
3
- "version": "7.46.0",
3
+ "version": "7.46.1-snapshot.7298",
4
4
  "main": "src/index.js",
5
5
  "types": "src/index.d.ts",
6
6
  "author": "Ethan Sharabi <ethan.shar@gmail.com>",
@@ -56,15 +56,15 @@
56
56
  "react-native-redash": "^12.0.3",
57
57
  "semver": "^5.5.0",
58
58
  "tinycolor2": "^1.4.2",
59
- "uilib-native": "4.5.1",
59
+ "uilib-native": "5.0.0-snapshot.7266",
60
60
  "url-parse": "^1.2.0",
61
61
  "wix-react-native-text-size": "1.0.9"
62
62
  },
63
63
  "devDependencies": {
64
64
  "@babel/cli": "^7.16.8",
65
- "@babel/core": "^7.24.4",
65
+ "@babel/core": "^7.25.2",
66
66
  "@babel/plugin-transform-modules-commonjs": "^7.17.9",
67
- "@babel/preset-env": "^7.20.0",
67
+ "@babel/preset-env": "^7.25.3",
68
68
  "@babel/preset-react": "^7.10.1",
69
69
  "@babel/runtime": "^7.26.10",
70
70
  "@formatjs/intl-datetimeformat": "^6.0.3",
@@ -73,28 +73,29 @@
73
73
  "@formatjs/intl-numberformat": "^8.0.4",
74
74
  "@formatjs/intl-pluralrules": "^5.0.3",
75
75
  "@react-native-community/blur": "4.4.1",
76
- "@react-native-community/datetimepicker": "^3.4.6",
77
- "@react-native-community/netinfo": "^5.6.2",
78
- "@react-native/babel-preset": "0.73.21",
79
- "@react-native/eslint-config": "0.73.2",
80
- "@react-native/metro-config": "0.73.5",
81
- "@react-native/typescript-config": "0.73.1",
76
+ "@react-native-community/cli": "15.0.1",
77
+ "@react-native-community/cli-platform-android": "15.0.1",
78
+ "@react-native-community/cli-platform-ios": "15.0.1",
79
+ "@react-native-community/datetimepicker": "8.2.0",
80
+ "@react-native-community/netinfo": "11.3.3",
81
+ "@react-native/babel-preset": "0.77.2",
82
+ "@react-native/eslint-config": "0.77.2",
83
+ "@react-native/metro-config": "0.77.2",
84
+ "@react-native/typescript-config": "0.77.2",
82
85
  "@shopify/flash-list": "1.7.6",
83
86
  "@testing-library/react-hooks": "^8.0.1",
84
87
  "@testing-library/react-native": "^11.5.1",
85
88
  "@types/hoist-non-react-statics": "^3.3.1",
86
- "@types/jest": "^29.2.1",
89
+ "@types/jest": "^29.5.13",
87
90
  "@types/lodash": "^4.0.0",
88
91
  "@types/prop-types": "^15.5.3",
89
92
  "@types/react": "18.3.7",
90
- "@types/react-native": "0.73.0",
91
93
  "@types/react-test-renderer": "^18.3.0",
92
94
  "@types/tinycolor2": "^1.4.2",
93
95
  "@types/url-parse": "^1.4.3",
94
96
  "@typescript-eslint/eslint-plugin": "^5.3.1",
95
97
  "@typescript-eslint/parser": "^5.3.1",
96
98
  "@welldone-software/why-did-you-render": "^3.2.1",
97
- "babel-jest": "^29.6.3",
98
99
  "babel-plugin-lodash": "^3.3.4",
99
100
  "babel-plugin-module-resolver": "^5.0.0",
100
101
  "eslint": "8.19.0",
@@ -104,7 +105,6 @@
104
105
  "eslint-plugin-react-native": "^4.0.0",
105
106
  "jest": "^29.6.3",
106
107
  "light-date": "^1.2.0",
107
- "metro-react-native-babel-preset": "0.73.10",
108
108
  "moment": "^2.24.0",
109
109
  "object-hash": "^3.0.0",
110
110
  "postcss": "^8.4.21",
@@ -114,27 +114,28 @@
114
114
  "react": "18.2.0",
115
115
  "react-autobind": "^1.0.6",
116
116
  "react-dom": "^18.2.0",
117
- "react-native": "0.73.9",
117
+ "react-native": "0.77.2",
118
118
  "react-native-fs": "^2.20.0",
119
- "react-native-gesture-handler": "2.14.1",
119
+ "react-native-gesture-handler": "2.22.1",
120
120
  "react-native-haptic-feedback": "^1.11.0",
121
121
  "react-native-linear-gradient": "2.6.2",
122
- "react-native-mmkv": "2.11.0",
123
- "react-native-navigation": "7.40.1",
122
+ "react-native-mmkv": "3.2.0",
123
+ "react-native-navigation": "8.1.2",
124
124
  "react-native-reanimated": "3.16.7",
125
125
  "react-native-shimmer-placeholder": "^2.0.6",
126
- "react-native-svg": "15.2.0",
126
+ "react-native-svg": "15.11.2",
127
127
  "react-native-svg-transformer": "1.5.0",
128
- "react-test-renderer": "18.2.0",
128
+ "react-test-renderer": "18.3.1",
129
129
  "reassure": "^0.4.1",
130
+ "setimmediate": "^1.0.5",
130
131
  "shell-utils": "^1.0.10",
131
132
  "typescript": "5.0.4"
132
133
  },
133
134
  "peerDependencies": {
134
135
  "react": ">=17.0.1",
135
- "react-native": ">=0.64.1",
136
- "react-native-gesture-handler": ">=2.5.0",
137
- "react-native-reanimated": ">=2.0.0",
136
+ "react-native": ">=0.76.0",
137
+ "react-native-gesture-handler": ">=2.22.0",
138
+ "react-native-reanimated": ">=3.16.7",
138
139
  "react-native-ui-lib": "*"
139
140
  },
140
141
  "jest": {
@@ -162,7 +163,6 @@
162
163
  "engines": {
163
164
  "node": ">=18"
164
165
  },
165
- "packageManager": "yarn@3.4.1",
166
166
  "files": [
167
167
  "*.js",
168
168
  "*.d.ts",
package/panView.d.ts ADDED
@@ -0,0 +1,2 @@
1
+ import {PanView} from './src';
2
+ export default PanView;
package/panView.js ADDED
@@ -0,0 +1 @@
1
+ module.exports = require('./src/components/panView').default;
@@ -10,11 +10,9 @@ module.exports = {
10
10
  sourceDir: '../uilib-native/android/',
11
11
  packageImportPath: `import com.wix.reactnativeuilib.dynamicfont.DynamicFontPackage;
12
12
  import com.wix.reactnativeuilib.highlighterview.HighlighterViewPackage;
13
- import com.wix.reactnativeuilib.keyboardinput.KeyboardInputPackage;
14
- import com.wix.reactnativeuilib.textinput.TextInputDelKeyHandlerPackage;`,
13
+ import com.wix.reactnativeuilib.keyboardinput.KeyboardInputPackage;`,
15
14
  packageInstance: `new DynamicFontPackage(),
16
15
  new HighlighterViewPackage(),
17
- new TextInputDelKeyHandlerPackage(),
18
16
  new KeyboardInputPackage(getApplication())`
19
17
  }
20
18
  }
@@ -24,11 +24,8 @@ function setStatusBarHeight() {
24
24
  const {
25
25
  StatusBarManager
26
26
  } = NativeModules;
27
- statusBarHeight = (StatusBar.currentHeight ?? StatusBarManager?.HEIGHT) || 0;
28
- if (isIOS && StatusBarManager) {
29
- // override guesstimate height with the actual height from StatusBarManager
30
- StatusBarManager.getHeight(data => statusBarHeight = data.height);
31
- }
27
+ // override guesstimate height with the actual height from StatusBarManager
28
+ statusBarHeight = (StatusBar.currentHeight ?? StatusBarManager?.getConstants?.()?.HEIGHT) || 0;
32
29
  }
33
30
  function getAspectRatio() {
34
31
  return screenWidth < screenHeight ? screenHeight / screenWidth : screenWidth / screenHeight;
@@ -107,7 +107,7 @@ export default class KeyboardAwareBase extends Component {
107
107
  setTimeout(() => {
108
108
  this._keyboardAwareView
109
109
  .getScrollResponder()
110
- .scrollResponderScrollNativeHandleToKeyboard(ReactNative.findNodeHandle(textInputRef),
110
+ .scrollResponderScrollNativeHandleToKeyboard(this.findNodeHandle(textInputRef),
111
111
  this.props.scrollToInputAdditionalOffset,
112
112
  true);
113
113
  }, 0);
@@ -117,6 +117,10 @@ export default class KeyboardAwareBase extends Component {
117
117
  }
118
118
  }
119
119
 
120
+ findNodeHandle(ref) {
121
+ return ref.current?.getNodeHandle?.() || ref?.getNodeHandle?.() || ReactNative.findNodeHandle(ref.current || ref);
122
+ }
123
+
120
124
  _onKeyboardWillShow(event) {
121
125
  this._scrollToFocusedTextInput();
122
126
 
@@ -1,14 +1,9 @@
1
1
  import React from 'react';
2
2
  import { StyleProp, ViewStyle } from 'react-native';
3
- import { DialogProps } from '../dialog';
4
3
  import { ButtonProps } from '../button';
5
- import { DialogProps as IncubatorDialogProps } from '../../incubator';
4
+ import { type DialogProps } from '../dialog';
6
5
  type ActionSheetOnOptionPress = (index: number) => void;
7
6
  type ActionSheetProps = {
8
- /**
9
- * Migrate to the Incubator.Dialog component
10
- */
11
- migrateDialog?: boolean;
12
7
  /**
13
8
  * Whether to show the action sheet or not
14
9
  */
@@ -68,11 +63,6 @@ type ActionSheetProps = {
68
63
  * Note: you will need to call onOptionPress so the option's onPress will be called
69
64
  */
70
65
  renderAction?: (option: ButtonProps, index: number, onOptionPress: ActionSheetOnOptionPress) => JSX.Element;
71
- /**
72
- * @deprecated
73
- * Called once the modal has been dismissed completely
74
- */
75
- onModalDismissed?: DialogProps['onDialogDismissed'];
76
66
  /**
77
67
  * Whether or not to handle SafeArea
78
68
  */
@@ -80,7 +70,7 @@ type ActionSheetProps = {
80
70
  /**
81
71
  * Additional props to send to the Dialog
82
72
  */
83
- dialogProps?: Omit<DialogProps, 'useSafeArea' | 'testID' | 'containerStyle' | 'visible' | 'onDismiss' | 'onDialogDismissed'> | IncubatorDialogProps;
73
+ dialogProps?: Omit<DialogProps, 'useSafeArea' | 'testID' | 'containerStyle' | 'visible' | 'onDismiss' | 'onDialogDismissed'> | DialogProps;
84
74
  /**
85
75
  * testID for e2e tests
86
76
  */
@@ -6,15 +6,12 @@ import React, { Component } from 'react';
6
6
  import { ActionSheetIOS, StyleSheet } from 'react-native';
7
7
  import { Colors } from "../../style";
8
8
  import { asBaseComponent, Constants } from "../../commons/new";
9
- import Dialog from "../dialog";
10
9
  import View from "../view";
11
10
  import Text from "../text";
12
11
  import Image from "../image";
13
12
  //@ts-ignore
14
13
  import ListItem from "../listItem";
15
- import PanningProvider from "../panningViews/panningProvider";
16
- import { Dialog as IncubatorDialog } from "../../incubator";
17
- import { LogService } from "../../services";
14
+ import Dialog from "../dialog";
18
15
  const VERTICAL_PADDING = 8;
19
16
  /**
20
17
  * @description: Cross platform Action Sheet, with a support for native iOS solution
@@ -130,55 +127,19 @@ class ActionSheet extends Component {
130
127
  {this.renderActions()}
131
128
  </View>;
132
129
  }
133
- renderOldDialog() {
130
+ render() {
134
131
  const {
135
- useNativeIOS,
136
132
  visible,
137
133
  onDismiss,
138
134
  dialogStyle,
139
- onModalDismissed,
140
135
  testID,
141
136
  useSafeArea,
142
137
  dialogProps
143
138
  } = this.props;
144
- if (Constants.isIOS && useNativeIOS) {
145
- return null;
146
- }
147
- return <Dialog bottom centerH width="100%" panDirection={PanningProvider.Directions.DOWN} {...dialogProps} useSafeArea={useSafeArea} testID={testID} containerStyle={[styles.dialog, dialogStyle]} visible={visible} onDismiss={onDismiss} onDialogDismissed={onModalDismissed}>
139
+ return <Dialog bottom centerH width="100%" direction={Dialog.directions.DOWN} {...dialogProps} useSafeArea={useSafeArea} testID={testID} containerStyle={[styles.incubatorDialog, dialogStyle]} visible={visible} onDismiss={onDismiss}>
148
140
  {this.renderSheet()}
149
141
  </Dialog>;
150
142
  }
151
- renderNewDialog() {
152
- const {
153
- visible,
154
- onDismiss,
155
- dialogStyle,
156
- onModalDismissed,
157
- testID,
158
- useSafeArea,
159
- dialogProps
160
- } = this.props;
161
- if (onModalDismissed) {
162
- LogService.deprecationWarn({
163
- component: 'ActionSheet',
164
- oldProp: 'onModalDismissed',
165
- newProp: 'onDismiss'
166
- });
167
- }
168
- return <IncubatorDialog bottom centerH width="100%" direction={PanningProvider.Directions.DOWN} {...dialogProps} useSafeArea={useSafeArea} testID={testID} containerStyle={[styles.incubatorDialog, dialogStyle]} visible={visible} onDismiss={onDismiss}>
169
- {this.renderSheet()}
170
- </IncubatorDialog>;
171
- }
172
- render() {
173
- const {
174
- migrateDialog
175
- } = this.props;
176
- if (migrateDialog) {
177
- return this.renderNewDialog();
178
- } else {
179
- return this.renderOldDialog();
180
- }
181
- }
182
143
  }
183
144
  export default asBaseComponent(ActionSheet);
184
145
  const styles = StyleSheet.create({