react-native-ui-lib 7.46.3-snapshot.7360 → 7.46.3-snapshot.7367
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.
- package/babel.config.js +0 -12
- package/index.js +0 -1
- package/lib/android/build.gradle +5 -5
- package/lib/android/src/main/java/com/wix/reactnativeuilib/UiLibPackageList.java +2 -0
- package/lib/android/src/main/java/com/wix/reactnativeuilib/highlighterview/HighlighterViewManager.java +23 -31
- package/lib/android/src/main/java/com/wix/reactnativeuilib/highlighterview/ReactHacks.java +30 -0
- package/lib/android/src/main/java/com/wix/reactnativeuilib/highlighterview/ReflectionUtils.java +34 -0
- package/lib/android/src/main/java/com/wix/reactnativeuilib/keyboardinput/utils/RuntimeUtils.java +1 -1
- package/lib/android/src/main/java/com/wix/reactnativeuilib/textinput/DefaultKeyListener.java +33 -0
- package/lib/android/src/main/java/com/wix/reactnativeuilib/textinput/KeyListenerProxy.java +53 -0
- package/lib/android/src/main/java/com/wix/reactnativeuilib/textinput/TextInputDelKeyHandlerModule.java +54 -0
- package/lib/android/src/main/java/com/wix/reactnativeuilib/textinput/TextInputDelKeyHandlerPackage.java +28 -0
- package/lib/android/src/main/java/com/wix/reactnativeuilib/textinput/ViewUtils.java +36 -0
- package/lib/components/{HighlighterOverlayView/index.d.ts → HighlighterOverlayView.d.ts} +1 -1
- package/lib/components/HighlighterOverlayView.js +40 -0
- package/lib/components/{HighlighterOverlayView/index.web.d.ts → HighlighterOverlayView.web.d.ts} +1 -1
- package/lib/components/Keyboard/{KeyboardAccessoryView → KeyboardInput}/CustomKeyboardView/CustomKeyboardView.android.d.ts +2 -5
- package/lib/components/Keyboard/KeyboardInput/CustomKeyboardView/CustomKeyboardView.android.js +28 -0
- package/lib/components/Keyboard/{KeyboardAccessoryView → KeyboardInput}/CustomKeyboardView/CustomKeyboardView.ios.d.ts +1 -1
- package/lib/components/Keyboard/{KeyboardAccessoryView → KeyboardInput}/CustomKeyboardView/CustomKeyboardView.ios.js +3 -3
- package/lib/components/Keyboard/{KeyboardAccessoryView/CustomKeyboardView → KeyboardInput}/CustomKeyboardViewBase.d.ts +0 -3
- package/lib/components/Keyboard/{KeyboardAccessoryView/CustomKeyboardView → KeyboardInput}/CustomKeyboardViewBase.js +1 -1
- package/lib/components/Keyboard/{KeyboardAccessoryView/index.d.ts → KeyboardInput/KeyboardAccessoryView.d.ts} +1 -11
- package/lib/components/Keyboard/{KeyboardAccessoryView/index.js → KeyboardInput/KeyboardAccessoryView.js} +5 -31
- package/lib/components/Keyboard/{KeyboardAccessoryView/KeyboardRegistry/index.d.ts → KeyboardInput/KeyboardRegistry.d.ts} +1 -1
- package/lib/components/Keyboard/{KeyboardAccessoryView/KeyboardRegistry/index.js → KeyboardInput/KeyboardRegistry.js} +1 -1
- package/lib/components/Keyboard/{KeyboardAccessoryView/KeyboardRegistry → KeyboardInput}/__tests__/KeyboardRegistry.spec.js +1 -1
- package/lib/components/Keyboard/{KeyboardAccessoryView → KeyboardInput}/keyboardAccessoryView.api.json +5 -5
- package/lib/components/Keyboard/{KeyboardAccessoryView/KeyboardRegistry → KeyboardInput}/keyboardRegistry.api.json +9 -9
- package/lib/components/Keyboard/KeyboardInput/utils/KeyboardUtils.d.ts +11 -0
- package/lib/components/Keyboard/KeyboardInput/utils/KeyboardUtils.js +17 -0
- package/lib/components/Keyboard/{KeyboardAccessoryView/KeyboardRegistry/EventEmitterManager → KeyboardInput/utils}/__tests__/EventEmitterManager.spec.js +1 -1
- package/lib/components/Keyboard/{KeyboardAwareInsetsView/index.d.ts → KeyboardTracking/KeyboardAwareInsetsView.d.ts} +1 -1
- package/lib/components/Keyboard/{KeyboardAwareInsetsView/index.js → KeyboardTracking/KeyboardAwareInsetsView.js} +1 -1
- package/lib/components/Keyboard/{KeyboardTrackingView → KeyboardTracking/KeyboardTrackingView}/KeyboardTrackingView.ios.d.ts +4 -1
- package/lib/components/Keyboard/{KeyboardTrackingView → KeyboardTracking/KeyboardTrackingView}/KeyboardTrackingView.ios.js +8 -5
- package/lib/components/Keyboard/{KeyboardTrackingView → KeyboardTracking/KeyboardTrackingView}/index.d.ts +2 -2
- package/lib/components/Keyboard/{KeyboardTrackingView → KeyboardTracking/KeyboardTrackingView}/keyboardTrackingView.api.json +20 -11
- package/lib/components/Keyboard/index.d.ts +6 -6
- package/lib/components/Keyboard/index.js +6 -6
- package/lib/components/SafeArea/SafeAreaInsetsManager.d.ts +7 -21
- package/lib/components/SafeArea/SafeAreaInsetsManager.js +31 -95
- package/lib/components/SafeArea/SafeAreaSpacerView.d.ts +2 -2
- package/lib/components/SafeArea/SafeAreaSpacerView.js +9 -63
- package/lib/components/index.d.ts +1 -1
- package/lib/components/index.js +1 -1
- package/lib/ios/reactnativeuilib/keyboardinput/rctcustomInputcontroller/RCTCustomInputControllerTemp.m +8 -52
- package/lib/ios/reactnativeuilib/keyboardinput/rctcustomInputcontroller/RCTCustomKeyboardViewControllerTemp.h +7 -1
- package/lib/ios/reactnativeuilib/keyboardinput/rctcustomInputcontroller/RCTCustomKeyboardViewControllerTemp.m +1 -1
- package/lib/ios/reactnativeuilib/keyboardtrackingview/KeyboardTrackingViewTempManager.m +41 -109
- package/lib/package.json +3 -3
- package/lib/react-native.config.js +3 -1
- package/metro.config.js +2 -2
- package/package.json +29 -29
- package/panningViews.d.ts +2 -0
- package/panningViews.js +1 -0
- package/react-native.config.js +3 -1
- package/sharedTransition.d.ts +2 -0
- package/sharedTransition.js +1 -0
- package/src/commons/Constants.js +5 -2
- package/src/components/KeyboardAwareScrollView/KeyboardAwareBase.js +1 -5
- package/src/components/actionSheet/index.d.ts +12 -2
- package/src/components/actionSheet/index.js +42 -3
- package/src/components/animatedImage/index.js +6 -16
- package/src/components/badge/index.d.ts +47 -107
- package/src/components/button/button.api.json +1 -1
- package/src/components/button/index.d.ts +23 -53
- package/src/components/button/types.d.ts +1 -0
- package/src/components/colorPicker/ColorPickerDialog.d.ts +1 -1
- package/src/components/colorPicker/ColorPickerDialog.js +1 -1
- package/src/components/dateTimePicker/index.d.ts +5 -186
- package/src/components/dateTimePicker/index.js +4 -3
- package/src/components/dialog/DialogDismissibleView.d.ts +34 -0
- package/src/components/dialog/DialogDismissibleView.js +184 -0
- package/src/components/dialog/OverlayFadingBackground.d.ts +14 -0
- package/src/components/dialog/OverlayFadingBackground.js +45 -0
- package/src/components/dialog/dialog.api.json +37 -31
- package/src/components/dialog/index.d.ts +105 -13
- package/src/components/dialog/index.js +212 -204
- package/src/components/drawer/Swipeable.js +2 -1
- package/src/components/drawer/index.js +25 -31
- package/src/components/fadedScrollView/index.js +2 -7
- package/src/components/featureHighlight/index.d.ts +1 -1
- package/src/components/index.js +19 -0
- package/src/components/marquee/types.js +1 -4
- package/src/components/modal/index.d.ts +0 -5
- package/src/components/modal/index.js +10 -14
- package/src/components/modal/modal.api.json +0 -5
- package/src/components/panningViews/asPanViewConsumer.d.ts +3 -0
- package/src/components/panningViews/asPanViewConsumer.js +16 -0
- package/src/components/panningViews/panDismissibleView.d.ts +51 -0
- package/src/components/panningViews/panDismissibleView.js +350 -0
- package/src/components/panningViews/panGestureView.d.ts +23 -0
- package/src/components/panningViews/panGestureView.js +156 -0
- package/src/components/panningViews/panListenerView.d.ts +66 -0
- package/src/components/panningViews/panListenerView.js +155 -0
- package/src/components/panningViews/panResponderView.d.ts +19 -0
- package/src/components/panningViews/panResponderView.js +79 -0
- package/src/components/panningViews/panningContext.d.ts +3 -0
- package/src/components/panningViews/panningContext.js +4 -0
- package/src/components/panningViews/panningProvider.d.ts +73 -0
- package/src/components/panningViews/panningProvider.js +101 -0
- package/src/components/picker/Picker.driver.new.d.ts +2 -2
- package/src/components/picker/Picker.driver.new.js +3 -3
- package/src/components/picker/PickerItem.js +20 -6
- package/src/components/picker/PickerPresenter.d.ts +1 -0
- package/src/components/picker/PickerPresenter.js +23 -1
- package/src/components/picker/api/picker.api.json +1 -0
- package/src/components/picker/api/pickerItem.api.json +5 -0
- package/src/components/picker/helpers/useFieldType.d.ts +23 -53
- package/src/components/picker/helpers/usePickerLabel.d.ts +1 -1
- package/src/components/picker/helpers/usePickerLabel.js +3 -2
- package/src/components/picker/helpers/usePickerMigrationWarnings.d.ts +1 -1
- package/src/components/picker/helpers/usePickerMigrationWarnings.js +12 -0
- package/src/components/picker/helpers/usePickerSearch.d.ts +1 -1
- package/src/components/picker/helpers/usePickerSearch.js +8 -4
- package/src/components/picker/helpers/usePickerSelection.d.ts +1 -1
- package/src/components/picker/helpers/usePickerSelection.js +10 -2
- package/src/components/picker/index.js +22 -4
- package/src/components/picker/types.d.ts +24 -1
- package/src/components/segmentedControl/index.js +3 -3
- package/src/components/sharedTransition/ShareTransitionContext.js +3 -0
- package/src/components/sharedTransition/SharedArea.js +153 -0
- package/src/components/sharedTransition/SourceElement.js +44 -0
- package/src/components/sharedTransition/TargetElement.js +38 -0
- package/src/components/sharedTransition/index.js +9 -0
- package/src/components/slider/GradientSlider.d.ts +1 -1
- package/src/components/sortableGridList/SortableItem.js +4 -13
- package/src/components/sortableList/SortableListItem.js +4 -13
- package/src/components/stackAggregator/index.js +11 -16
- package/src/components/text/Text.driver.new.d.ts +2 -2
- package/src/components/text/Text.driver.new.js +2 -2
- package/src/components/textField/Input.js +1 -0
- package/src/components/textField/TextField.driver.new.d.ts +2 -2
- package/src/components/textField/TextField.driver.new.js +2 -2
- package/src/components/textField/presets/outline.d.ts +46 -106
- package/src/components/textField/presets/underline.d.ts +46 -106
- package/src/components/textField/types.js +0 -1
- package/src/components/textField/usePreset.d.ts +44 -72
- package/src/components/timeline/types.js +0 -3
- package/src/incubator/dialog/dialog.api.json +54 -0
- package/src/{components → incubator}/dialog/dialogHeader.api.json +2 -2
- package/src/incubator/dialog/index.d.ts +15 -0
- package/src/incubator/dialog/index.js +218 -0
- package/src/{components → incubator}/dialog/types.d.ts +19 -0
- package/src/{components → incubator}/dialog/types.js +3 -1
- package/src/{components → incubator}/dialog/useDialogContent.d.ts +1 -1
- package/src/incubator/expandableOverlay/ExpandableOverlay.driver.js +1 -1
- package/src/incubator/expandableOverlay/index.d.ts +3 -42
- package/src/incubator/expandableOverlay/index.js +4 -1
- package/src/{hooks/useHiddenLocation/index.d.ts → incubator/hooks/useHiddenLocation.d.ts} +1 -1
- package/src/{hooks/useHiddenLocation/index.web.d.ts → incubator/hooks/useHiddenLocation.web.d.ts} +1 -1
- package/src/incubator/index.d.ts +2 -0
- package/src/incubator/index.js +2 -0
- package/src/{components → incubator}/panView/index.d.ts +3 -3
- package/src/{components → incubator}/panView/index.js +4 -4
- package/src/{components → incubator}/panView/usePanGesture.d.ts +1 -1
- package/src/incubator/toast/index.js +1 -1
- package/src/index.d.ts +10 -3
- package/src/index.js +162 -42
- package/src/testkit/index.d.ts +1 -1
- package/src/testkit/index.js +1 -1
- package/src/testkit/new/Component.driver.d.ts +1 -4
- package/src/testkit/new/Component.driver.js +3 -3
- package/lib/components/HighlighterOverlayView/index.js +0 -49
- package/lib/components/Keyboard/KeyboardAccessoryView/CustomKeyboardView/CustomKeyboardView.android.js +0 -51
- package/lib/components/Keyboard/KeyboardAccessoryView/KeyboardUtils/index.d.ts +0 -26
- package/lib/components/Keyboard/KeyboardAccessoryView/KeyboardUtils/index.js +0 -91
- package/lib/components/SafeArea/__tests__/SafeAreaInsetsManager.spec.js +0 -274
- package/lib/components/SafeArea/index.d.ts +0 -10
- package/lib/components/SafeArea/index.js +0 -11
- package/panView.d.ts +0 -2
- package/panView.js +0 -1
- /package/lib/components/{HighlighterOverlayView/index.web.js → HighlighterOverlayView.web.js} +0 -0
- /package/lib/components/Keyboard/{KeyboardAccessoryView → KeyboardInput}/CustomKeyboardView/index.d.ts +0 -0
- /package/lib/components/Keyboard/{KeyboardAccessoryView → KeyboardInput}/CustomKeyboardView/index.js +0 -0
- /package/lib/components/Keyboard/{KeyboardAccessoryView → KeyboardInput}/CustomKeyboardView/index.web.d.ts +0 -0
- /package/lib/components/Keyboard/{KeyboardAccessoryView → KeyboardInput}/CustomKeyboardView/index.web.js +0 -0
- /package/lib/components/Keyboard/{KeyboardAccessoryView → KeyboardInput}/TextInputKeyboardManager/TextInputKeyboardManager.android.d.ts +0 -0
- /package/lib/components/Keyboard/{KeyboardAccessoryView → KeyboardInput}/TextInputKeyboardManager/TextInputKeyboardManager.android.js +0 -0
- /package/lib/components/Keyboard/{KeyboardAccessoryView → KeyboardInput}/TextInputKeyboardManager/TextInputKeyboardManager.ios.d.ts +0 -0
- /package/lib/components/Keyboard/{KeyboardAccessoryView → KeyboardInput}/TextInputKeyboardManager/TextInputKeyboardManager.ios.js +0 -0
- /package/lib/components/Keyboard/{KeyboardAccessoryView → KeyboardInput}/TextInputKeyboardManager/index.d.ts +0 -0
- /package/lib/components/Keyboard/{KeyboardAccessoryView → KeyboardInput}/TextInputKeyboardManager/index.js +0 -0
- /package/lib/components/Keyboard/{KeyboardAccessoryView/KeyboardRegistry/EventEmitterManager/index.d.ts → KeyboardInput/utils/EventEmitterManager.d.ts} +0 -0
- /package/lib/components/Keyboard/{KeyboardAccessoryView/KeyboardRegistry/EventEmitterManager/index.js → KeyboardInput/utils/EventEmitterManager.js} +0 -0
- /package/lib/components/Keyboard/{KeyboardTrackingView → KeyboardTracking/KeyboardTrackingView}/KeyboardTrackingView.android.d.ts +0 -0
- /package/lib/components/Keyboard/{KeyboardTrackingView → KeyboardTracking/KeyboardTrackingView}/KeyboardTrackingView.android.js +0 -0
- /package/lib/components/Keyboard/{KeyboardTrackingView → KeyboardTracking/KeyboardTrackingView}/index.js +0 -0
- /package/lib/components/Keyboard/{KeyboardTrackingView → KeyboardTracking/KeyboardTrackingView}/index.web.d.ts +0 -0
- /package/lib/components/Keyboard/{KeyboardTrackingView → KeyboardTracking/KeyboardTrackingView}/index.web.js +0 -0
- /package/lib/components/Keyboard/{KeyboardAwareInsetsView → KeyboardTracking}/keyboardAwareInsetsView.api.json +0 -0
- /package/src/{components → incubator}/dialog/Dialog.driver.new.d.ts +0 -0
- /package/src/{components → incubator}/dialog/Dialog.driver.new.js +0 -0
- /package/src/{components → incubator}/dialog/DialogHeader.d.ts +0 -0
- /package/src/{components → incubator}/dialog/DialogHeader.js +0 -0
- /package/src/{components → incubator}/dialog/useDialogContent.js +0 -0
- /package/src/{hooks/useHiddenLocation/index.js → incubator/hooks/useHiddenLocation.js} +0 -0
- /package/src/{hooks/useHiddenLocation/index.web.js → incubator/hooks/useHiddenLocation.web.js} +0 -0
- /package/src/{components → incubator}/panView/panningUtil.d.ts +0 -0
- /package/src/{components → incubator}/panView/panningUtil.js +0 -0
- /package/src/{components → incubator}/panView/usePanGesture.js +0 -0
|
@@ -1,15 +1,107 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import
|
|
3
|
-
import {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
}
|
|
9
|
-
export interface
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
1
|
+
import React, { Component } from 'react';
|
|
2
|
+
import { StyleProp, ViewStyle, ModalPropsIOS, AccessibilityProps, type DimensionValue } from 'react-native';
|
|
3
|
+
import { AlignmentModifiers } from '../../commons/modifiers';
|
|
4
|
+
import { ModalProps } from '../modal';
|
|
5
|
+
import { PanningDirections, PanningDirectionsEnum } from '../panningViews/panningProvider';
|
|
6
|
+
export { PanningDirections as DialogDirections, PanningDirectionsEnum as DialogDirectionsEnum };
|
|
7
|
+
interface RNPartialProps extends Pick<ModalPropsIOS, 'supportedOrientations'>, Pick<AccessibilityProps, 'accessibilityLabel'> {
|
|
8
|
+
}
|
|
9
|
+
export interface DialogProps extends AlignmentModifiers, RNPartialProps {
|
|
10
|
+
/**
|
|
11
|
+
* Control visibility of the dialog
|
|
12
|
+
*/
|
|
13
|
+
visible?: boolean;
|
|
14
|
+
/**
|
|
15
|
+
* Dismiss callback for when clicking on the background
|
|
16
|
+
*/
|
|
17
|
+
onDismiss?: (props?: any) => void;
|
|
18
|
+
/**
|
|
19
|
+
* Whether or not to ignore background press
|
|
20
|
+
*/
|
|
21
|
+
ignoreBackgroundPress?: boolean;
|
|
22
|
+
/**
|
|
23
|
+
* The color of the overlay background
|
|
24
|
+
*/
|
|
25
|
+
overlayBackgroundColor?: string;
|
|
26
|
+
/**
|
|
27
|
+
* The dialog width (default: 90%)
|
|
28
|
+
*/
|
|
29
|
+
width?: DimensionValue;
|
|
30
|
+
/**
|
|
31
|
+
* The dialog height (default: undefined)
|
|
32
|
+
*/
|
|
33
|
+
height?: DimensionValue;
|
|
34
|
+
/**
|
|
35
|
+
* The direction of the allowed pan (default is DOWN).
|
|
36
|
+
* Types: UP, DOWN, LEFT and RIGHT (using PanningProvider.Directions.###).
|
|
37
|
+
* Pass null to remove pan.
|
|
38
|
+
*/
|
|
39
|
+
panDirection?: PanningDirections;
|
|
40
|
+
/**
|
|
41
|
+
* Whether or not to handle SafeArea
|
|
42
|
+
*/
|
|
43
|
+
useSafeArea?: boolean;
|
|
44
|
+
/**
|
|
45
|
+
* Called once the dialog has been dismissed completely
|
|
46
|
+
*/
|
|
47
|
+
onDialogDismissed?: (props: any) => void;
|
|
48
|
+
/**
|
|
49
|
+
* If this is added only the header will be pannable;
|
|
50
|
+
* this allows for scrollable content (the children of the dialog)
|
|
51
|
+
* props are transferred to the renderPannableHeader
|
|
52
|
+
*/
|
|
53
|
+
renderPannableHeader?: (props: any) => JSX.Element;
|
|
54
|
+
/**
|
|
55
|
+
* The props that will be passed to the pannable header
|
|
56
|
+
*/
|
|
57
|
+
pannableHeaderProps?: any;
|
|
58
|
+
/**
|
|
59
|
+
* Additional props for the modal.
|
|
60
|
+
*/
|
|
61
|
+
modalProps?: ModalProps;
|
|
62
|
+
/**
|
|
63
|
+
* The Dialog`s container style
|
|
64
|
+
*/
|
|
65
|
+
containerStyle?: StyleProp<ViewStyle>;
|
|
66
|
+
/**
|
|
67
|
+
* Used as a testing identifier
|
|
68
|
+
*/
|
|
69
|
+
testID?: string;
|
|
13
70
|
children?: React.ReactNode;
|
|
14
|
-
}
|
|
71
|
+
}
|
|
72
|
+
interface DialogState {
|
|
73
|
+
alignments: AlignmentModifiers;
|
|
74
|
+
modalVisibility?: boolean;
|
|
75
|
+
dialogVisibility?: boolean;
|
|
76
|
+
fadeOut?: boolean;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* @description: Dialog component for displaying custom content inside a popup dialog
|
|
80
|
+
* @notes: Use alignment modifiers to control the dialog position
|
|
81
|
+
* (top, bottom, centerV, centerH, etc... by default the dialog is aligned to center)
|
|
82
|
+
* @modifiers: alignment
|
|
83
|
+
* @example: https://github.com/wix/react-native-ui-lib/blob/master/demo/src/screens/componentScreens/DialogScreen.js
|
|
84
|
+
* @gif: https://github.com/wix/react-native-ui-lib/blob/master/demo/showcase/Dialog/Dialog.gif?raw=true
|
|
85
|
+
*/
|
|
86
|
+
declare class Dialog extends Component<DialogProps, DialogState> {
|
|
87
|
+
static displayName: string;
|
|
88
|
+
static directions: typeof PanningDirectionsEnum;
|
|
89
|
+
static defaultProps: {
|
|
90
|
+
overlayBackgroundColor: string | undefined;
|
|
91
|
+
};
|
|
92
|
+
private styles;
|
|
93
|
+
constructor(props: DialogProps);
|
|
94
|
+
UNSAFE_componentWillReceiveProps(nextProps: DialogProps): void;
|
|
95
|
+
setAlignment(): void;
|
|
96
|
+
onFadeDone: () => void;
|
|
97
|
+
_onDismiss: () => void;
|
|
98
|
+
onDismiss: () => void;
|
|
99
|
+
hideDialogView: () => void;
|
|
100
|
+
renderPannableHeader: (directions: PanningDirections[]) => React.JSX.Element | undefined;
|
|
101
|
+
getContainerType: () => React.ForwardRefExoticComponent<import("../view").ViewProps & React.RefAttributes<import("react-native").View>> | React.ComponentClass<import("../panningViews/panListenerView").PanListenerViewProps, any>;
|
|
102
|
+
renderDialogView: () => React.JSX.Element;
|
|
103
|
+
renderDialogContainer: () => React.JSX.Element;
|
|
104
|
+
render: () => React.JSX.Element;
|
|
105
|
+
}
|
|
106
|
+
declare const _default: React.ForwardRefExoticComponent<DialogProps & React.RefAttributes<any>> & typeof Dialog;
|
|
15
107
|
export default _default;
|
|
@@ -1,218 +1,226 @@
|
|
|
1
|
-
import
|
|
1
|
+
import _isEmpty from "lodash/isEmpty";
|
|
2
|
+
import React, { Component } from 'react';
|
|
2
3
|
import { StyleSheet } from 'react-native';
|
|
3
|
-
import
|
|
4
|
-
import { Extrapolation, interpolate, runOnJS, useAnimatedStyle, useSharedValue, withSpring, withTiming } from 'react-native-reanimated';
|
|
5
|
-
import { Gesture, GestureDetector } from 'react-native-gesture-handler';
|
|
6
|
-
import { Spacings, Colors, BorderRadiuses } from "../../style";
|
|
7
|
-
import { useDidUpdate } from "../../hooks";
|
|
8
|
-
import { asBaseComponent, Constants } from "../../commons/new";
|
|
9
|
-
import View from "../../components/view";
|
|
10
|
-
import Modal from "../../components/modal";
|
|
4
|
+
import { Colors } from "../../style";
|
|
11
5
|
import { extractAlignmentsValues } from "../../commons/modifiers";
|
|
12
|
-
import
|
|
13
|
-
import
|
|
14
|
-
import
|
|
15
|
-
import
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
visible = false,
|
|
21
|
-
headerProps,
|
|
22
|
-
showCloseButton,
|
|
23
|
-
closeButtonProps,
|
|
24
|
-
containerStyle: propsContainerStyle,
|
|
25
|
-
containerProps: propsContainerProps,
|
|
26
|
-
width,
|
|
27
|
-
height,
|
|
28
|
-
onDismiss,
|
|
29
|
-
direction = DialogDirectionsEnum.DOWN,
|
|
30
|
-
ignoreBackgroundPress,
|
|
31
|
-
modalProps = {},
|
|
32
|
-
useSafeArea,
|
|
33
|
-
testID,
|
|
34
|
-
children
|
|
35
|
-
} = props;
|
|
36
|
-
const {
|
|
37
|
-
overlayBackgroundColor = Colors.rgba(Colors.grey10, 0.65),
|
|
38
|
-
...otherModalProps
|
|
39
|
-
} = modalProps;
|
|
40
|
-
const visibility = useSharedValue(0); // value between 0 (closed) and 1 (open)
|
|
41
|
-
const initialTranslation = useSharedValue(0);
|
|
42
|
-
const [modalVisibility, setModalVisibility] = useState(visible); // unfortunately this is needed when changing visibility by the user (clicking on an option etc)
|
|
43
|
-
|
|
44
|
-
const {
|
|
45
|
-
setRef,
|
|
46
|
-
onLayout,
|
|
47
|
-
hiddenLocation: _hiddenLocation
|
|
48
|
-
} = useHiddenLocation();
|
|
49
|
-
const hiddenLocation = _hiddenLocation[direction];
|
|
50
|
-
const wasMeasured = _hiddenLocation.wasMeasured;
|
|
51
|
-
const isVertical = useMemo(() => {
|
|
52
|
-
'worklet';
|
|
6
|
+
import { Constants, asBaseComponent } from "../../commons/new";
|
|
7
|
+
import Modal from "../modal";
|
|
8
|
+
import View from "../view";
|
|
9
|
+
import PanListenerView from "../panningViews/panListenerView";
|
|
10
|
+
import DialogDismissibleView from "./DialogDismissibleView";
|
|
11
|
+
import OverlayFadingBackground from "./OverlayFadingBackground";
|
|
12
|
+
import PanningProvider, { PanningDirections, PanningDirectionsEnum } from "../panningViews/panningProvider";
|
|
13
|
+
export { PanningDirections as DialogDirections, PanningDirectionsEnum as DialogDirectionsEnum };
|
|
53
14
|
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
15
|
+
// TODO: KNOWN ISSUES
|
|
16
|
+
// 1. iOS pressing on the background while enter animation is happening will not call onDismiss
|
|
17
|
+
// Touch events are not registered?
|
|
18
|
+
// 2. SafeArea is transparent
|
|
19
|
+
// 3. Check why we need the state change in DialogDismissibleView -> onLayout -> animateTo
|
|
58
20
|
|
|
59
|
-
|
|
60
|
-
}, [hiddenLocation]);
|
|
61
|
-
const getTranslationReverseInterpolation = useCallback(value => {
|
|
62
|
-
'worklet';
|
|
21
|
+
const DEFAULT_OVERLAY_BACKGROUND_COLOR = Colors.rgba(Colors.$backgroundInverted, 0.3);
|
|
63
22
|
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
if (visible) {
|
|
85
|
-
setModalVisibility(true);
|
|
86
|
-
} else if (wasMeasured && modalVisibility) {
|
|
87
|
-
// Close when sending visible = false
|
|
88
|
-
close();
|
|
89
|
-
}
|
|
90
|
-
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
91
|
-
}, [visible, wasMeasured]);
|
|
92
|
-
useDidUpdate(() => {
|
|
93
|
-
if (wasMeasured) {
|
|
94
|
-
if (modalVisibility) {
|
|
95
|
-
open();
|
|
96
|
-
} else if (Constants.isAndroid) {
|
|
97
|
-
onDismiss?.();
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
101
|
-
}, [modalVisibility, wasMeasured]);
|
|
102
|
-
const alignmentStyle = useMemo(() => {
|
|
103
|
-
return {
|
|
104
|
-
flex: 1,
|
|
105
|
-
alignItems: 'center',
|
|
106
|
-
...extractAlignmentsValues(props)
|
|
23
|
+
/**
|
|
24
|
+
* @description: Dialog component for displaying custom content inside a popup dialog
|
|
25
|
+
* @notes: Use alignment modifiers to control the dialog position
|
|
26
|
+
* (top, bottom, centerV, centerH, etc... by default the dialog is aligned to center)
|
|
27
|
+
* @modifiers: alignment
|
|
28
|
+
* @example: https://github.com/wix/react-native-ui-lib/blob/master/demo/src/screens/componentScreens/DialogScreen.js
|
|
29
|
+
* @gif: https://github.com/wix/react-native-ui-lib/blob/master/demo/showcase/Dialog/Dialog.gif?raw=true
|
|
30
|
+
*/
|
|
31
|
+
class Dialog extends Component {
|
|
32
|
+
static displayName = 'Dialog';
|
|
33
|
+
static directions = PanningDirectionsEnum;
|
|
34
|
+
static defaultProps = {
|
|
35
|
+
overlayBackgroundColor: DEFAULT_OVERLAY_BACKGROUND_COLOR
|
|
36
|
+
};
|
|
37
|
+
constructor(props) {
|
|
38
|
+
super(props);
|
|
39
|
+
this.state = {
|
|
40
|
+
alignments: extractAlignmentsValues(props),
|
|
41
|
+
modalVisibility: props.visible,
|
|
42
|
+
dialogVisibility: props.visible
|
|
107
43
|
};
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
44
|
+
this.styles = createStyles(this.props);
|
|
45
|
+
this.setAlignment();
|
|
46
|
+
}
|
|
47
|
+
UNSAFE_componentWillReceiveProps(nextProps) {
|
|
48
|
+
const {
|
|
49
|
+
visible: nexVisible
|
|
50
|
+
} = nextProps;
|
|
51
|
+
const {
|
|
52
|
+
visible
|
|
53
|
+
} = this.props;
|
|
54
|
+
if (nexVisible && !visible) {
|
|
55
|
+
this.setState({
|
|
56
|
+
modalVisibility: true,
|
|
57
|
+
dialogVisibility: true
|
|
58
|
+
});
|
|
59
|
+
} else if (visible && !nexVisible) {
|
|
60
|
+
this.hideDialogView();
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
setAlignment() {
|
|
64
|
+
const {
|
|
65
|
+
alignments
|
|
66
|
+
} = this.state;
|
|
67
|
+
if (_isEmpty(alignments)) {
|
|
68
|
+
this.styles.alignments = this.styles.centerContent;
|
|
130
69
|
} else {
|
|
131
|
-
|
|
132
|
-
transform: [{
|
|
133
|
-
translateX: getTranslationInterpolation(visibility.value)
|
|
134
|
-
}]
|
|
135
|
-
};
|
|
70
|
+
this.styles.alignments = alignments;
|
|
136
71
|
}
|
|
137
|
-
}
|
|
138
|
-
const style = useMemo(() => {
|
|
139
|
-
return [styles.defaultDialogStyle, {
|
|
140
|
-
backgroundColor: Colors.$backgroundDefault
|
|
141
|
-
}, containerStyle, animatedStyle, width ? {
|
|
142
|
-
width
|
|
143
|
-
} : undefined, height ? {
|
|
144
|
-
height
|
|
145
|
-
} : undefined];
|
|
146
|
-
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
147
|
-
}, [containerStyle, width, height]);
|
|
148
|
-
const shouldClose = event => {
|
|
149
|
-
'worklet';
|
|
72
|
+
}
|
|
150
73
|
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
case DialogDirectionsEnum.UP:
|
|
159
|
-
velocity = -event.velocityY;
|
|
160
|
-
break;
|
|
161
|
-
case DialogDirectionsEnum.LEFT:
|
|
162
|
-
velocity = -event.velocityX;
|
|
163
|
-
break;
|
|
164
|
-
case DialogDirectionsEnum.RIGHT:
|
|
165
|
-
velocity = event.velocityX;
|
|
166
|
-
break;
|
|
74
|
+
// TODO: revert adding this workaround once RN fixes https://github.com/facebook/react-native/issues/29455
|
|
75
|
+
onFadeDone = () => {
|
|
76
|
+
if (!this.state.modalVisibility) {
|
|
77
|
+
setTimeout(() => {
|
|
78
|
+
// unfortunately this is needed if a modal needs to open on iOS
|
|
79
|
+
this.props.onDialogDismissed?.(this.props);
|
|
80
|
+
}, 100);
|
|
167
81
|
}
|
|
168
|
-
const wasFlung = velocity >= THRESHOLD_VELOCITY;
|
|
169
|
-
return wasPannedOverThreshold || wasFlung;
|
|
170
82
|
};
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
83
|
+
_onDismiss = () => {
|
|
84
|
+
this.setState({
|
|
85
|
+
modalVisibility: false,
|
|
86
|
+
fadeOut: false
|
|
87
|
+
}, () => {
|
|
88
|
+
const props = this.props;
|
|
89
|
+
if (props.visible) {
|
|
90
|
+
props.onDismiss?.(props);
|
|
91
|
+
}
|
|
92
|
+
// Parity with iOS Modal's onDismiss
|
|
93
|
+
if (Constants.isAndroid) {
|
|
94
|
+
props.onDialogDismissed?.(props);
|
|
95
|
+
}
|
|
96
|
+
});
|
|
97
|
+
};
|
|
98
|
+
onDismiss = () => {
|
|
99
|
+
const fadeOut = Constants.isIOS && this.props.visible;
|
|
100
|
+
if (fadeOut) {
|
|
101
|
+
this.setState({
|
|
102
|
+
fadeOut
|
|
103
|
+
}, this._onDismiss);
|
|
178
104
|
} else {
|
|
179
|
-
|
|
105
|
+
this._onDismiss();
|
|
106
|
+
}
|
|
107
|
+
};
|
|
108
|
+
hideDialogView = () => {
|
|
109
|
+
this.setState({
|
|
110
|
+
dialogVisibility: false
|
|
111
|
+
});
|
|
112
|
+
};
|
|
113
|
+
renderPannableHeader = directions => {
|
|
114
|
+
const {
|
|
115
|
+
renderPannableHeader,
|
|
116
|
+
pannableHeaderProps
|
|
117
|
+
} = this.props;
|
|
118
|
+
if (renderPannableHeader) {
|
|
119
|
+
return <PanListenerView directions={directions}>{renderPannableHeader(pannableHeaderProps)}</PanListenerView>;
|
|
120
|
+
}
|
|
121
|
+
};
|
|
122
|
+
getContainerType = () => {
|
|
123
|
+
const {
|
|
124
|
+
panDirection,
|
|
125
|
+
renderPannableHeader
|
|
126
|
+
} = this.props;
|
|
127
|
+
if (!panDirection || renderPannableHeader) {
|
|
128
|
+
return View;
|
|
129
|
+
}
|
|
130
|
+
return PanListenerView;
|
|
131
|
+
};
|
|
132
|
+
renderDialogView = () => {
|
|
133
|
+
const {
|
|
134
|
+
children,
|
|
135
|
+
panDirection = PanningProvider.Directions.DOWN,
|
|
136
|
+
containerStyle,
|
|
137
|
+
testID
|
|
138
|
+
} = this.props;
|
|
139
|
+
const {
|
|
140
|
+
dialogVisibility
|
|
141
|
+
} = this.state;
|
|
142
|
+
const Container = this.getContainerType();
|
|
143
|
+
return <View testID={testID} style={[this.styles.dialogViewSize]} pointerEvents="box-none">
|
|
144
|
+
<PanningProvider>
|
|
145
|
+
<DialogDismissibleView direction={panDirection} visible={dialogVisibility} onDismiss={this.onDismiss} containerStyle={this.styles.flexType} style={this.styles.flexType}>
|
|
146
|
+
<Container directions={[panDirection]} style={[this.styles.overflow, !Constants.isWeb && this.styles.flexType, containerStyle]}>
|
|
147
|
+
{this.renderPannableHeader([panDirection])}
|
|
148
|
+
{children}
|
|
149
|
+
</Container>
|
|
150
|
+
</DialogDismissibleView>
|
|
151
|
+
</PanningProvider>
|
|
152
|
+
</View>;
|
|
153
|
+
};
|
|
154
|
+
|
|
155
|
+
// TODO: renderOverlay {_.invoke(this.props, 'renderOverlay')}
|
|
156
|
+
renderDialogContainer = () => {
|
|
157
|
+
const {
|
|
158
|
+
modalVisibility,
|
|
159
|
+
dialogVisibility,
|
|
160
|
+
fadeOut
|
|
161
|
+
} = this.state;
|
|
162
|
+
const {
|
|
163
|
+
useSafeArea,
|
|
164
|
+
bottom,
|
|
165
|
+
overlayBackgroundColor,
|
|
166
|
+
testID
|
|
167
|
+
} = this.props;
|
|
168
|
+
const addBottomSafeArea = Constants.isIphoneX && useSafeArea && bottom;
|
|
169
|
+
const bottomInsets = Constants.getSafeAreaInsets().bottom - 8; // TODO: should this be here or in the input style?
|
|
170
|
+
const onFadeDone = Constants.isIOS ? this.onFadeDone : undefined;
|
|
171
|
+
return <View useSafeArea={useSafeArea} style={[this.styles.centerHorizontal, this.styles.alignments, this.styles.container]} pointerEvents="box-none">
|
|
172
|
+
<OverlayFadingBackground testID={`${testID}.overlayFadingBackground`} modalVisibility={modalVisibility} dialogVisibility={dialogVisibility} overlayBackgroundColor={overlayBackgroundColor} onFadeDone={onFadeDone} fadeOut={fadeOut} />
|
|
173
|
+
{this.renderDialogView()}
|
|
174
|
+
{addBottomSafeArea && <View style={{
|
|
175
|
+
marginTop: bottomInsets
|
|
176
|
+
}} />}
|
|
177
|
+
</View>;
|
|
178
|
+
};
|
|
179
|
+
render = () => {
|
|
180
|
+
const {
|
|
181
|
+
modalVisibility
|
|
182
|
+
} = this.state;
|
|
183
|
+
const {
|
|
184
|
+
testID,
|
|
185
|
+
supportedOrientations,
|
|
186
|
+
accessibilityLabel,
|
|
187
|
+
ignoreBackgroundPress,
|
|
188
|
+
modalProps
|
|
189
|
+
} = this.props;
|
|
190
|
+
const onBackgroundPress = !ignoreBackgroundPress ? this.hideDialogView : undefined;
|
|
191
|
+
return <Modal testID={`${testID}.modal`} transparent visible={modalVisibility} animationType={'none'} onBackgroundPress={onBackgroundPress} onRequestClose={onBackgroundPress} supportedOrientations={supportedOrientations} accessibilityLabel={accessibilityLabel} {...modalProps}>
|
|
192
|
+
{this.renderDialogContainer()}
|
|
193
|
+
</Modal>;
|
|
194
|
+
};
|
|
195
|
+
}
|
|
196
|
+
function createStyles(props) {
|
|
197
|
+
const {
|
|
198
|
+
width = '90%',
|
|
199
|
+
height
|
|
200
|
+
} = props;
|
|
201
|
+
const flexType = height ? {
|
|
202
|
+
flex: 1
|
|
203
|
+
} : {
|
|
204
|
+
flex: 0
|
|
205
|
+
};
|
|
206
|
+
return StyleSheet.create({
|
|
207
|
+
dialogViewSize: {
|
|
208
|
+
width,
|
|
209
|
+
height: height ?? undefined
|
|
210
|
+
},
|
|
211
|
+
flexType,
|
|
212
|
+
container: {
|
|
213
|
+
flex: 1
|
|
214
|
+
},
|
|
215
|
+
centerHorizontal: {
|
|
216
|
+
alignItems: 'center'
|
|
217
|
+
},
|
|
218
|
+
centerContent: {
|
|
219
|
+
justifyContent: 'center'
|
|
220
|
+
},
|
|
221
|
+
overflow: {
|
|
222
|
+
overflow: 'hidden'
|
|
180
223
|
}
|
|
181
224
|
});
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
}));
|
|
185
|
-
const renderDialog = () => <GestureDetector gesture={panGesture}>
|
|
186
|
-
<View {...containerProps} reanimated={!Constants.accessibility.isReduceMotionEnabled} style={style} onLayout={onLayout} ref={setRef} testID={testID}>
|
|
187
|
-
{renderDialogContent()}
|
|
188
|
-
</View>
|
|
189
|
-
</GestureDetector>;
|
|
190
|
-
const overlayStyle = useAnimatedStyle(() => {
|
|
191
|
-
return {
|
|
192
|
-
opacity: visibility.value,
|
|
193
|
-
backgroundColor: overlayBackgroundColor
|
|
194
|
-
};
|
|
195
|
-
}, [overlayBackgroundColor]);
|
|
196
|
-
const renderOverlayView = () => <View testID={`${testID}.overlayFadingBackground`} absF reanimated style={overlayStyle} pointerEvents="none" />;
|
|
197
|
-
return <Modal transparent animationType={'none'} {...otherModalProps} testID={`${testID}.modal`} useGestureHandlerRootView visible={modalVisibility} onBackgroundPress={ignoreBackgroundPress ? undefined : close} onRequestClose={ignoreBackgroundPress ? undefined : close} onDismiss={onDismiss}>
|
|
198
|
-
{renderOverlayView()}
|
|
199
|
-
<View useSafeArea={useSafeArea} pointerEvents={'box-none'} style={alignmentStyle}>
|
|
200
|
-
{renderDialog()}
|
|
201
|
-
</View>
|
|
202
|
-
</Modal>;
|
|
203
|
-
};
|
|
204
|
-
Dialog.displayName = 'Dialog';
|
|
205
|
-
Dialog.directions = DialogDirectionsEnum;
|
|
206
|
-
Dialog.Header = DialogHeader;
|
|
207
|
-
const _Dialog = forwardRef(Dialog);
|
|
208
|
-
hoistStatics(_Dialog, Dialog);
|
|
209
|
-
export default asBaseComponent(_Dialog);
|
|
210
|
-
const styles = StyleSheet.create({
|
|
211
|
-
defaultDialogStyle: {
|
|
212
|
-
marginBottom: Spacings.s5,
|
|
213
|
-
maxHeight: '60%',
|
|
214
|
-
width: 250,
|
|
215
|
-
borderRadius: BorderRadiuses.br20,
|
|
216
|
-
overflow: 'hidden'
|
|
217
|
-
}
|
|
218
|
-
});
|
|
225
|
+
}
|
|
226
|
+
export default asBaseComponent(Dialog);
|
|
@@ -220,33 +220,30 @@ class Drawer extends PureComponent {
|
|
|
220
220
|
outputRange,
|
|
221
221
|
extrapolate: 'clamp'
|
|
222
222
|
});
|
|
223
|
-
return <RectButton key={index} testID={item.testID}
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
{item.text}
|
|
248
|
-
</Animated.Text>}
|
|
249
|
-
</View>
|
|
223
|
+
return <RectButton key={index} testID={item.testID} style={[styles.action, item.style, {
|
|
224
|
+
backgroundColor: item.background || DEFAULT_BG,
|
|
225
|
+
width: item.width,
|
|
226
|
+
minWidth: itemsMinWidth
|
|
227
|
+
}]} onPress={() => this.onActionPress(item)}>
|
|
228
|
+
{item.customElement}
|
|
229
|
+
{!item.customElement && item.icon && <Animated.Image source={item.icon} style={[styles.actionIcon, {
|
|
230
|
+
width: itemsIconSize,
|
|
231
|
+
height: itemsIconSize,
|
|
232
|
+
tintColor: item.iconColor || itemsTintColor,
|
|
233
|
+
opacity,
|
|
234
|
+
transform: [{
|
|
235
|
+
scale
|
|
236
|
+
}]
|
|
237
|
+
}]} />}
|
|
238
|
+
{!item.customElement && item.text && <Animated.Text style={[styles.actionText, {
|
|
239
|
+
color: item.textColor || itemsTintColor,
|
|
240
|
+
opacity,
|
|
241
|
+
transform: [{
|
|
242
|
+
scale
|
|
243
|
+
}]
|
|
244
|
+
}, itemsTextStyle]} accessibilityElementsHidden importantForAccessibility="no-hide-descendants" accessible={false}>
|
|
245
|
+
{item.text}
|
|
246
|
+
</Animated.Text>}
|
|
250
247
|
</RectButton>;
|
|
251
248
|
};
|
|
252
249
|
render() {
|
|
@@ -258,7 +255,7 @@ class Drawer extends PureComponent {
|
|
|
258
255
|
onToggleSwipeLeft,
|
|
259
256
|
...others
|
|
260
257
|
} = this.props;
|
|
261
|
-
return <GestureHandlerRootView
|
|
258
|
+
return <GestureHandlerRootView>
|
|
262
259
|
<Swipeable {...others} ref={this._swipeableRow} friction={1} containerStyle={style} animationOptions={this.animationOptions} renderLeftActions={this.leftRender} renderRightActions={this.rightRender} rightActionsContainerStyle={this.getRightActionsContainerStyle(rightItems, leftItem)} leftActionsContainerStyle={this.getLeftActionsContainerStyle(leftItem, rightItems)} onSwipeableWillOpen={this.onSwipeableWillOpen} onSwipeableWillClose={this.onSwipeableWillClose} onToggleSwipeLeft={onToggleSwipeLeft && this.onToggleSwipeLeft}>
|
|
263
260
|
<View accessible accessibilityActions={this.getAccessibilityActions()} onAccessibilityAction={this.onAccessibilityAction} {...extractAccessibilityProps(this.props)}>
|
|
264
261
|
{children}
|
|
@@ -269,9 +266,6 @@ class Drawer extends PureComponent {
|
|
|
269
266
|
}
|
|
270
267
|
export default asBaseComponent(Drawer);
|
|
271
268
|
const styles = StyleSheet.create({
|
|
272
|
-
container: {
|
|
273
|
-
flex: 0
|
|
274
|
-
},
|
|
275
269
|
leftAction: {
|
|
276
270
|
flex: 1,
|
|
277
271
|
justifyContent: 'center',
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React, { useCallback, useRef, useImperativeHandle } from 'react';
|
|
2
|
-
import { ScrollView as RNScrollView
|
|
2
|
+
import { ScrollView as RNScrollView } from 'react-native';
|
|
3
3
|
import { ScrollView as GestureScrollView, GestureHandlerRootView } from 'react-native-gesture-handler';
|
|
4
4
|
import Fader from "../fader";
|
|
5
5
|
import useScrollEnabler from "../../hooks/useScrollEnabler";
|
|
@@ -60,7 +60,7 @@ const FadedScrollView = props => {
|
|
|
60
60
|
isScrollEnabled
|
|
61
61
|
}));
|
|
62
62
|
if (children) {
|
|
63
|
-
return <GestureHandlerRootView
|
|
63
|
+
return <GestureHandlerRootView>
|
|
64
64
|
<ScrollView scrollEventThrottle={16} decelerationRate={'fast'} {...others} horizontal={horizontal} scrollEnabled={scrollEnabled} onContentSizeChange={_onContentSizeChange} onLayout={_onLayout} onScroll={onScroll}
|
|
65
65
|
// @ts-expect-error
|
|
66
66
|
ref={scrollViewRef}>
|
|
@@ -72,10 +72,5 @@ const FadedScrollView = props => {
|
|
|
72
72
|
}
|
|
73
73
|
return null;
|
|
74
74
|
};
|
|
75
|
-
const styles = StyleSheet.create({
|
|
76
|
-
container: {
|
|
77
|
-
flex: 0
|
|
78
|
-
}
|
|
79
|
-
});
|
|
80
75
|
FadedScrollView.displayName = 'IGNORE';
|
|
81
76
|
export default forwardRef(FadedScrollView);
|