@draftbit/core 47.0.1-0e56b5.2 → 47.0.1-2935a8.2

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 (87) hide show
  1. package/lib/commonjs/components/Button.js +22 -31
  2. package/lib/commonjs/components/Checkbox/Checkbox.js +3 -1
  3. package/lib/commonjs/components/DeprecatedButton.js +151 -0
  4. package/lib/commonjs/components/DeprecatedCardWrapper.js +2 -2
  5. package/lib/commonjs/components/DeprecatedFAB.js +2 -1
  6. package/lib/commonjs/components/Picker/Picker.js +4 -3
  7. package/lib/commonjs/components/Picker/PickerComponent.ios.js +2 -2
  8. package/lib/commonjs/components/Touchable.js +11 -27
  9. package/lib/commonjs/components/Touchable.web.js +9 -0
  10. package/lib/commonjs/mappings/Button.js +10 -29
  11. package/lib/commonjs/mappings/FlashList.js +38 -2
  12. package/lib/commonjs/mappings/FlatList.js +9 -0
  13. package/lib/commonjs/mappings/Touchable.js +20 -0
  14. package/lib/module/components/Button.js +16 -25
  15. package/lib/module/components/Checkbox/Checkbox.js +3 -2
  16. package/lib/module/components/DeprecatedButton.js +141 -0
  17. package/lib/module/components/DeprecatedCardWrapper.js +2 -2
  18. package/lib/module/components/DeprecatedFAB.js +3 -2
  19. package/lib/module/components/Picker/Picker.js +4 -3
  20. package/lib/module/components/Picker/PickerComponent.ios.js +1 -1
  21. package/lib/module/components/Touchable.js +10 -25
  22. package/lib/module/components/Touchable.web.js +2 -0
  23. package/lib/module/mappings/Button.js +11 -30
  24. package/lib/module/mappings/FlashList.js +39 -3
  25. package/lib/module/mappings/FlatList.js +10 -1
  26. package/lib/module/mappings/Touchable.js +13 -0
  27. package/lib/typescript/src/components/Button.d.ts +0 -2
  28. package/lib/typescript/src/components/Button.d.ts.map +1 -1
  29. package/lib/typescript/src/components/Checkbox/Checkbox.d.ts +2 -2
  30. package/lib/typescript/src/components/Checkbox/Checkbox.d.ts.map +1 -1
  31. package/lib/typescript/src/components/DeprecatedButton.d.ts +54 -0
  32. package/lib/typescript/src/components/DeprecatedButton.d.ts.map +1 -0
  33. package/lib/typescript/src/components/DeprecatedCardWrapper.d.ts.map +1 -1
  34. package/lib/typescript/src/components/DeprecatedFAB.d.ts +2 -2
  35. package/lib/typescript/src/components/DeprecatedFAB.d.ts.map +1 -1
  36. package/lib/typescript/src/components/Picker/Picker.d.ts.map +1 -1
  37. package/lib/typescript/src/components/Touchable.d.ts +2 -9
  38. package/lib/typescript/src/components/Touchable.d.ts.map +1 -1
  39. package/lib/typescript/src/components/Touchable.web.d.ts +3 -0
  40. package/lib/typescript/src/components/Touchable.web.d.ts.map +1 -0
  41. package/lib/typescript/src/mappings/Button.d.ts +4 -113
  42. package/lib/typescript/src/mappings/Button.d.ts.map +1 -1
  43. package/lib/typescript/src/mappings/FlashList.d.ts +130 -2
  44. package/lib/typescript/src/mappings/FlashList.d.ts.map +1 -1
  45. package/lib/typescript/src/mappings/FlatList.d.ts +51 -0
  46. package/lib/typescript/src/mappings/FlatList.d.ts.map +1 -1
  47. package/lib/typescript/src/mappings/Touchable.d.ts +22 -0
  48. package/lib/typescript/src/mappings/Touchable.d.ts.map +1 -0
  49. package/package.json +3 -3
  50. package/src/components/Button.js +18 -22
  51. package/src/components/Button.tsx +18 -49
  52. package/src/components/Checkbox/Checkbox.js +3 -2
  53. package/src/components/Checkbox/Checkbox.tsx +7 -5
  54. package/src/components/DeprecatedButton.js +95 -0
  55. package/src/components/DeprecatedButton.tsx +214 -0
  56. package/src/components/DeprecatedCardWrapper.js +2 -2
  57. package/src/components/DeprecatedCardWrapper.tsx +4 -3
  58. package/src/components/DeprecatedFAB.js +3 -2
  59. package/src/components/DeprecatedFAB.tsx +5 -5
  60. package/src/components/Picker/Picker.js +4 -3
  61. package/src/components/Picker/Picker.tsx +4 -4
  62. package/src/components/Picker/PickerComponent.ios.js +1 -1
  63. package/src/components/Picker/PickerComponent.ios.tsx +1 -1
  64. package/src/components/Touchable.js +11 -16
  65. package/src/components/Touchable.tsx +11 -42
  66. package/src/components/Touchable.web.js +2 -0
  67. package/src/components/Touchable.web.tsx +3 -0
  68. package/src/mappings/Button.js +10 -29
  69. package/src/mappings/Button.ts +10 -31
  70. package/src/mappings/FlashList.js +75 -31
  71. package/src/mappings/FlashList.ts +77 -30
  72. package/src/mappings/FlatList.js +15 -1
  73. package/src/mappings/FlatList.ts +16 -0
  74. package/src/mappings/Touchable.js +17 -0
  75. package/src/mappings/Touchable.ts +23 -0
  76. package/lib/commonjs/components/Pressable.js +0 -48
  77. package/lib/commonjs/mappings/Pressable.js +0 -52
  78. package/lib/module/components/Pressable.js +0 -40
  79. package/lib/module/mappings/Pressable.js +0 -45
  80. package/lib/typescript/src/components/Pressable.d.ts +0 -18
  81. package/lib/typescript/src/components/Pressable.d.ts.map +0 -1
  82. package/lib/typescript/src/mappings/Pressable.d.ts +0 -76
  83. package/lib/typescript/src/mappings/Pressable.d.ts.map +0 -1
  84. package/src/components/Pressable.js +0 -17
  85. package/src/components/Pressable.tsx +0 -67
  86. package/src/mappings/Pressable.js +0 -52
  87. package/src/mappings/Pressable.ts +0 -63
@@ -1,14 +1,11 @@
1
- import React, { useCallback } from "react";
1
+ import * as React from "react";
2
2
  import {
3
3
  Text,
4
4
  Pressable,
5
- PressableProps,
6
- PressableStateCallbackType,
7
5
  Platform,
8
6
  StyleSheet,
9
- StyleProp,
10
7
  TextStyle,
11
- ViewStyle,
8
+ PressableProps,
12
9
  ActivityIndicator,
13
10
  } from "react-native";
14
11
 
@@ -30,12 +27,6 @@ type BaseProps = {
30
27
  loading: boolean;
31
28
  style?: TextStyle;
32
29
  onPress: () => void;
33
- onLongPress?: () => void;
34
- activeOpacity?: number;
35
- disabledOpacity?: number;
36
- delayLongPress?: number;
37
- hitSlop?: number;
38
- pressRetentionOffset?: number;
39
30
  icon?: string;
40
31
  } & PressableProps &
41
32
  IconSlot;
@@ -46,29 +37,16 @@ type Props = {
46
37
  loading: boolean;
47
38
  style?: TextStyle;
48
39
  onPress: () => void;
49
- onLongPress?: () => void;
50
- activeOpacity?: number;
51
- disabledOpacity?: number;
52
- delayLongPress?: number;
53
- hitSlop?: number;
54
- pressRetentionOffset?: number;
55
40
  icon?: string;
56
41
  theme: Theme;
57
42
  } & PressableProps &
58
43
  IconSlot;
59
44
 
60
- export type StyleType = (
61
- state: PressableStateCallbackType
62
- ) => StyleProp<ViewStyle>;
63
-
64
45
  function Base({
65
46
  Icon,
66
47
  icon,
67
48
  title,
68
49
  onPress,
69
- onLongPress,
70
- activeOpacity,
71
- disabledOpacity,
72
50
  loading,
73
51
  disabled,
74
52
  style,
@@ -111,31 +89,19 @@ function Base({
111
89
  buttonStyles.justifyContent = "flex-end";
112
90
  }
113
91
 
114
- const getOpacity = useCallback(
115
- (pressed: boolean) => {
116
- if (disabled) {
117
- return disabledOpacity;
118
- } else {
119
- if (pressed) return activeOpacity;
120
- else return 1;
121
- }
122
- },
123
- [activeOpacity, disabled, disabledOpacity]
124
- );
125
- const _style = useCallback<StyleType>(
126
- ({ pressed }) => [
127
- buttonStyles as ViewStyle,
128
- { opacity: getOpacity(pressed) },
129
- ],
130
- [getOpacity, buttonStyles]
131
- );
132
-
133
92
  return (
134
93
  <Pressable
135
94
  onPress={onPress}
136
- onLongPress={onLongPress}
137
95
  disabled={disabled || loading}
138
- style={(styles.base, _style)}
96
+ style={({ pressed }) => {
97
+ return [
98
+ styles.base,
99
+ {
100
+ opacity: pressed || disabled ? 0.75 : 1,
101
+ },
102
+ buttonStyles,
103
+ ];
104
+ }}
139
105
  {...props}
140
106
  >
141
107
  {loading ? (
@@ -202,10 +168,8 @@ const styles = StyleSheet.create({
202
168
  flexDirection: "row",
203
169
  alignItems: "center",
204
170
  justifyContent: "center",
205
- paddingTop: CONSTANTS.padding,
206
- paddingLeft: CONSTANTS.padding,
207
- paddingRight: CONSTANTS.padding,
208
- paddingBottom: CONSTANTS.padding,
171
+ minHeight: CONSTANTS.baseHeight,
172
+ paddingHorizontal: 12,
209
173
  fontFamily: "System",
210
174
  fontWeight: "700",
211
175
  ...Platform.select({
@@ -219,6 +183,11 @@ const styles = StyleSheet.create({
219
183
  backgroundColor: "transparent",
220
184
  borderWidth: 1,
221
185
  },
186
+ bare: {
187
+ backgroundColor: "transparent",
188
+ padding: 0,
189
+ minHeight: undefined,
190
+ },
222
191
  loading: {
223
192
  marginRight: 6,
224
193
  },
@@ -1,6 +1,7 @@
1
1
  import * as React from "react";
2
- import { View, StyleSheet, Pressable, } from "react-native";
2
+ import { View, StyleSheet, } from "react-native";
3
3
  import { useTheme } from "../../theming";
4
+ import Touchable from "../Touchable";
4
5
  import { usePrevious } from "../../hooks";
5
6
  const Checkbox = ({ Icon, status, disabled = false, onPress, onCheck, onUncheck, color, uncheckedColor, defaultValue, checkedIcon = "MaterialCommunityIcons/checkbox-marked", uncheckedIcon = "MaterialCommunityIcons/checkbox-blank-outline", size = 24, style, ...rest }) => {
6
7
  const [internalValue, setInternalValue] = React.useState(status || defaultValue || false);
@@ -32,7 +33,7 @@ const Checkbox = ({ Icon, status, disabled = false, onPress, onCheck, onUncheck,
32
33
  onUncheck === null || onUncheck === void 0 ? void 0 : onUncheck();
33
34
  }
34
35
  };
35
- return (React.createElement(Pressable, { ...rest, onPress: handlePress, disabled: disabled, accessibilityState: { disabled }, accessibilityRole: "button", accessibilityLiveRegion: "polite", style: [styles.container, style, { width: size, height: size }] },
36
+ return (React.createElement(Touchable, { ...rest, onPress: handlePress, disabled: disabled, accessibilityState: { disabled }, accessibilityRole: "button", accessibilityLiveRegion: "polite", style: [styles.container, style, { width: size, height: size }] },
36
37
  React.createElement(Icon, { style: styles.icon, name: internalValue ? checkedIcon : uncheckedIcon, size: size, color: checkboxColor }),
37
38
  React.createElement(View, { style: [StyleSheet.absoluteFill, styles.fillContainer] },
38
39
  React.createElement(View, { style: [
@@ -2,14 +2,14 @@ import * as React from "react";
2
2
  import {
3
3
  View,
4
4
  StyleSheet,
5
+ TouchableHighlightProps,
5
6
  StyleProp,
6
7
  ViewStyle,
7
- Pressable,
8
- PressableProps,
9
8
  } from "react-native";
10
9
  import { useTheme } from "../../theming";
11
10
  import type { IconSlot } from "../../interfaces/Icon";
12
11
 
12
+ import Touchable from "../Touchable";
13
13
  import { usePrevious } from "../../hooks";
14
14
 
15
15
  export interface CheckboxProps {
@@ -27,7 +27,9 @@ export interface CheckboxProps {
27
27
  style?: StyleProp<ViewStyle>;
28
28
  }
29
29
 
30
- const Checkbox: React.FC<CheckboxProps & PressableProps & IconSlot> = ({
30
+ const Checkbox: React.FC<
31
+ CheckboxProps & TouchableHighlightProps & IconSlot
32
+ > = ({
31
33
  Icon,
32
34
  status,
33
35
  disabled = false,
@@ -85,7 +87,7 @@ const Checkbox: React.FC<CheckboxProps & PressableProps & IconSlot> = ({
85
87
  };
86
88
 
87
89
  return (
88
- <Pressable
90
+ <Touchable
89
91
  {...rest}
90
92
  onPress={handlePress}
91
93
  disabled={disabled}
@@ -109,7 +111,7 @@ const Checkbox: React.FC<CheckboxProps & PressableProps & IconSlot> = ({
109
111
  ]}
110
112
  />
111
113
  </View>
112
- </Pressable>
114
+ </Touchable>
113
115
  );
114
116
  };
115
117
 
@@ -0,0 +1,95 @@
1
+ import * as React from "react";
2
+ import { ActivityIndicator, View, Text, StyleSheet, } from "react-native";
3
+ import color from "color";
4
+ import Config from "./Config";
5
+ import Touchable from "./Touchable";
6
+ import Elevation from "./Elevation";
7
+ import { withTheme } from "../theming";
8
+ const Button = ({ Icon, icon, disabled = false, type = "solid", loading = false, labelColor, color: colorOverride, children, onPress, elevation = 0, style, theme: { colors, disabledOpacity, roundness, typography }, ...rest }) => {
9
+ let backgroundColor, borderColor, textColor, borderWidth;
10
+ const buttonColor = colorOverride || colors.primary;
11
+ if (type === "solid") {
12
+ backgroundColor = buttonColor;
13
+ if (disabled) {
14
+ textColor = color(colors.surface).alpha(disabledOpacity).rgb().string();
15
+ }
16
+ else {
17
+ textColor = labelColor || colors.surface;
18
+ }
19
+ }
20
+ else {
21
+ backgroundColor = "transparent";
22
+ if (disabled) {
23
+ textColor = color(buttonColor).alpha(disabledOpacity).rgb().string();
24
+ }
25
+ else {
26
+ textColor = labelColor || buttonColor;
27
+ }
28
+ }
29
+ if (type === "outline") {
30
+ if (disabled) {
31
+ borderColor = color(buttonColor).alpha(disabledOpacity).rgb().string();
32
+ }
33
+ else {
34
+ borderColor = buttonColor;
35
+ }
36
+ borderWidth = StyleSheet.hairlineWidth;
37
+ }
38
+ else {
39
+ borderColor = "transparent";
40
+ borderWidth = 0;
41
+ }
42
+ const buttonStyle = {
43
+ backgroundColor,
44
+ borderColor,
45
+ borderWidth,
46
+ borderRadius: roundness,
47
+ };
48
+ const textStyle = {
49
+ textAlign: "center",
50
+ color: textColor,
51
+ marginVertical: 16,
52
+ marginHorizontal: 16,
53
+ };
54
+ const iconStyle = [
55
+ styles.icon,
56
+ {
57
+ marginLeft: 16,
58
+ marginRight: -8,
59
+ width: Config.buttonIconSize,
60
+ },
61
+ ];
62
+ const { margin, marginEnd, marginTop, marginLeft, marginRight, marginBottom, marginHorizontal, marginVertical, ...innerStyles } = StyleSheet.flatten(style || {});
63
+ const margins = {
64
+ margin,
65
+ marginEnd,
66
+ marginTop,
67
+ marginLeft,
68
+ marginRight,
69
+ marginBottom,
70
+ marginHorizontal,
71
+ marginVertical,
72
+ };
73
+ return (React.createElement(Elevation, { style: { elevation, alignSelf: "stretch", ...margins } },
74
+ React.createElement(Touchable, { ...rest, onPress: onPress, accessibilityState: { disabled }, accessibilityRole: "button", disabled: disabled || loading, style: [styles.button, buttonStyle, innerStyles] },
75
+ React.createElement(View, { style: styles.content },
76
+ icon && loading !== true ? (React.createElement(View, { style: iconStyle },
77
+ React.createElement(Icon, { name: icon, size: Config.buttonIconSize, color: textColor }))) : null,
78
+ loading ? (React.createElement(ActivityIndicator, { size: "small", color: textColor, style: iconStyle })) : null,
79
+ React.createElement(Text, { numberOfLines: 1, style: [textStyle, typography.button] }, children)))));
80
+ };
81
+ const styles = StyleSheet.create({
82
+ button: {
83
+ minWidth: 64,
84
+ borderStyle: "solid",
85
+ },
86
+ content: {
87
+ flexDirection: "row",
88
+ alignItems: "center",
89
+ justifyContent: "center",
90
+ },
91
+ icon: {
92
+ width: Config.buttonIconSize,
93
+ },
94
+ });
95
+ export default withTheme(Button);
@@ -0,0 +1,214 @@
1
+ import * as React from "react";
2
+ import {
3
+ ActivityIndicator,
4
+ View,
5
+ Text,
6
+ StyleSheet,
7
+ TouchableHighlightProps,
8
+ StyleProp,
9
+ ViewStyle,
10
+ TextStyle,
11
+ } from "react-native";
12
+ import color from "color";
13
+ import Config from "./Config";
14
+ import Touchable from "./Touchable";
15
+ import Elevation from "./Elevation";
16
+ import { withTheme } from "../theming";
17
+
18
+ import type { Theme } from "../styles/DefaultTheme";
19
+ import type { IconSlot } from "../interfaces/Icon";
20
+
21
+ /**
22
+ * A button is component that the user can press to trigger an action.
23
+ *
24
+ * <div class="screenshots">
25
+ * <figure>
26
+ * <img src="screenshots/button-1.png" />
27
+ * <figcaption>Text button</figcaption>
28
+ * </figure>
29
+ * <figure>
30
+ * <img src="screenshots/button-2.png" />
31
+ * <figcaption>Outlined button</figcaption>
32
+ * </figure>
33
+ * <figure>
34
+ * <img src="screenshots/button-3.png" />
35
+ * <figcaption>Contained button</figcaption>
36
+ * </figure>
37
+ * </div>
38
+ *
39
+ * ## Usage
40
+ * ```js
41
+ * import * as React from 'react';
42
+ * import { Button } from '@draftbit/ui';
43
+ *
44
+ * const MyComponent = () => (
45
+ * <Button icon="add-a-photo" type="solid" onPress={() => console.log('Pressed')}>
46
+ * Press me
47
+ * </Button>
48
+ * );
49
+ *
50
+ * export default MyComponent;
51
+ * ```
52
+ */
53
+
54
+ type Props = {
55
+ disabled?: boolean;
56
+ type?: "solid" | "outline" | "text";
57
+ loading?: boolean;
58
+ icon?: string;
59
+ labelColor?: string;
60
+ color?: string;
61
+ children?: React.ReactNode;
62
+ onPress: () => void;
63
+ elevation?: number;
64
+ style?: StyleProp<ViewStyle>;
65
+ theme: Theme;
66
+ } & TouchableHighlightProps &
67
+ IconSlot;
68
+
69
+ const Button: React.FC<React.PropsWithChildren<Props>> = ({
70
+ Icon,
71
+ icon,
72
+ disabled = false,
73
+ type = "solid",
74
+ loading = false,
75
+ labelColor,
76
+ color: colorOverride,
77
+ children,
78
+ onPress,
79
+ elevation = 0,
80
+ style,
81
+ theme: { colors, disabledOpacity, roundness, typography },
82
+ ...rest
83
+ }) => {
84
+ let backgroundColor, borderColor, textColor, borderWidth;
85
+ const buttonColor = colorOverride || colors.primary;
86
+
87
+ if (type === "solid") {
88
+ backgroundColor = buttonColor;
89
+
90
+ if (disabled) {
91
+ textColor = color(colors.surface).alpha(disabledOpacity).rgb().string();
92
+ } else {
93
+ textColor = labelColor || colors.surface;
94
+ }
95
+ } else {
96
+ backgroundColor = "transparent";
97
+
98
+ if (disabled) {
99
+ textColor = color(buttonColor).alpha(disabledOpacity).rgb().string();
100
+ } else {
101
+ textColor = labelColor || buttonColor;
102
+ }
103
+ }
104
+
105
+ if (type === "outline") {
106
+ if (disabled) {
107
+ borderColor = color(buttonColor).alpha(disabledOpacity).rgb().string();
108
+ } else {
109
+ borderColor = buttonColor;
110
+ }
111
+ borderWidth = StyleSheet.hairlineWidth;
112
+ } else {
113
+ borderColor = "transparent";
114
+ borderWidth = 0;
115
+ }
116
+
117
+ const buttonStyle = {
118
+ backgroundColor,
119
+ borderColor,
120
+ borderWidth,
121
+ borderRadius: roundness,
122
+ };
123
+
124
+ const textStyle: StyleProp<TextStyle> = {
125
+ textAlign: "center",
126
+ color: textColor,
127
+ marginVertical: 16,
128
+ marginHorizontal: 16,
129
+ };
130
+
131
+ const iconStyle = [
132
+ styles.icon,
133
+ {
134
+ marginLeft: 16,
135
+ marginRight: -8,
136
+ width: Config.buttonIconSize,
137
+ },
138
+ ];
139
+
140
+ const {
141
+ margin,
142
+ marginEnd,
143
+ marginTop,
144
+ marginLeft,
145
+ marginRight,
146
+ marginBottom,
147
+ marginHorizontal,
148
+ marginVertical,
149
+ ...innerStyles
150
+ } = StyleSheet.flatten(style || {});
151
+
152
+ const margins = {
153
+ margin,
154
+ marginEnd,
155
+ marginTop,
156
+ marginLeft,
157
+ marginRight,
158
+ marginBottom,
159
+ marginHorizontal,
160
+ marginVertical,
161
+ };
162
+
163
+ return (
164
+ <Elevation style={{ elevation, alignSelf: "stretch", ...margins }}>
165
+ <Touchable
166
+ {...rest}
167
+ onPress={onPress}
168
+ accessibilityState={{ disabled }}
169
+ accessibilityRole="button"
170
+ disabled={disabled || loading}
171
+ style={[styles.button, buttonStyle, innerStyles]}
172
+ >
173
+ <View style={styles.content}>
174
+ {icon && loading !== true ? (
175
+ <View style={iconStyle}>
176
+ <Icon
177
+ name={icon}
178
+ size={Config.buttonIconSize}
179
+ color={textColor}
180
+ />
181
+ </View>
182
+ ) : null}
183
+ {loading ? (
184
+ <ActivityIndicator
185
+ size="small"
186
+ color={textColor}
187
+ style={iconStyle}
188
+ />
189
+ ) : null}
190
+ <Text numberOfLines={1} style={[textStyle, typography.button]}>
191
+ {children}
192
+ </Text>
193
+ </View>
194
+ </Touchable>
195
+ </Elevation>
196
+ );
197
+ };
198
+
199
+ const styles = StyleSheet.create({
200
+ button: {
201
+ minWidth: 64,
202
+ borderStyle: "solid",
203
+ },
204
+ content: {
205
+ flexDirection: "row",
206
+ alignItems: "center",
207
+ justifyContent: "center",
208
+ },
209
+ icon: {
210
+ width: Config.buttonIconSize,
211
+ },
212
+ });
213
+
214
+ export default withTheme(Button);
@@ -1,6 +1,6 @@
1
1
  import React from "react";
2
2
  import { withTheme } from "../theming";
3
- import { Pressable } from "react-native";
3
+ import Touchable from "./Touchable";
4
4
  const getWidth = (numColumns) => {
5
5
  switch (numColumns) {
6
6
  case 1:
@@ -13,6 +13,6 @@ const getWidth = (numColumns) => {
13
13
  };
14
14
  const Card = ({ numColumns = 3, children, onPress, style, ...rest }) => {
15
15
  const width = getWidth(numColumns);
16
- return (React.createElement(Pressable, { disabled: !onPress, onPress: onPress, style: [style, { width }], ...rest }, children));
16
+ return (React.createElement(Touchable, { disabled: !onPress, onPress: onPress, style: [style, { width }], ...rest }, children));
17
17
  };
18
18
  export default withTheme(Card);
@@ -1,6 +1,7 @@
1
1
  import React from "react";
2
2
  import { withTheme } from "../theming";
3
- import { StyleProp, ViewStyle, Pressable } from "react-native";
3
+ import Touchable from "./Touchable";
4
+ import { StyleProp, ViewStyle } from "react-native";
4
5
  import theme from "../styles/DefaultTheme";
5
6
 
6
7
  type Props = {
@@ -31,14 +32,14 @@ const Card: React.FC<React.PropsWithChildren<Props>> = ({
31
32
  }) => {
32
33
  const width = getWidth(numColumns);
33
34
  return (
34
- <Pressable
35
+ <Touchable
35
36
  disabled={!onPress}
36
37
  onPress={onPress}
37
38
  style={[style, { width }]}
38
39
  {...rest}
39
40
  >
40
41
  {children}
41
- </Pressable>
42
+ </Touchable>
42
43
  );
43
44
  };
44
45
 
@@ -1,8 +1,9 @@
1
1
  import * as React from "react";
2
- import { ActivityIndicator, View, StyleSheet, Pressable, } from "react-native";
2
+ import { ActivityIndicator, View, StyleSheet, } from "react-native";
3
3
  import color from "color";
4
4
  import Config from "./Config";
5
5
  import Text from "./Text";
6
+ import Touchable from "./Touchable";
6
7
  import Elevation from "./Elevation";
7
8
  import { withTheme } from "../theming";
8
9
  const FAB = ({ Icon, icon, disabled = false, type = "solid", loading = false, color: colorOverride, label, onPress, elevation = 0, style, theme: { colors, disabledOpacity, roundness, typography }, ...rest }) => {
@@ -82,7 +83,7 @@ const FAB = ({ Icon, icon, disabled = false, type = "solid", loading = false, co
82
83
  });
83
84
  }
84
85
  return (React.createElement(Elevation, { style: [{ elevation }, style] },
85
- React.createElement(Pressable, { ...rest, onPress: onPress, accessibilityState: { disabled }, accessibilityRole: "button", disabled: disabled || loading, style: buttonStyles },
86
+ React.createElement(Touchable, { ...rest, onPress: onPress, accessibilityState: { disabled }, accessibilityRole: "button", disabled: disabled || loading, style: buttonStyles },
86
87
  React.createElement(View, { style: styles.content },
87
88
  icon && loading !== true ? (React.createElement(View, { style: iconStyle },
88
89
  React.createElement(Icon, { name: icon, size: Config.buttonIconSize, color: textColor }))) : null,
@@ -3,15 +3,15 @@ import {
3
3
  ActivityIndicator,
4
4
  View,
5
5
  StyleSheet,
6
+ TouchableHighlightProps,
6
7
  StyleProp,
7
8
  ViewStyle,
8
9
  TextStyle,
9
- Pressable,
10
- PressableProps,
11
10
  } from "react-native";
12
11
  import color from "color";
13
12
  import Config from "./Config";
14
13
  import Text from "./Text";
14
+ import Touchable from "./Touchable";
15
15
  import Elevation from "./Elevation";
16
16
  import { withTheme } from "../theming";
17
17
 
@@ -65,7 +65,7 @@ type Props = {
65
65
  elevation?: number;
66
66
  theme: Theme;
67
67
  style?: StyleProp<ViewStyle>;
68
- } & PressableProps &
68
+ } & TouchableHighlightProps &
69
69
  IconSlot;
70
70
 
71
71
  const FAB: React.FC<React.PropsWithChildren<Props>> = ({
@@ -169,7 +169,7 @@ const FAB: React.FC<React.PropsWithChildren<Props>> = ({
169
169
 
170
170
  return (
171
171
  <Elevation style={[{ elevation }, style]}>
172
- <Pressable
172
+ <Touchable
173
173
  {...rest}
174
174
  onPress={onPress}
175
175
  accessibilityState={{ disabled }}
@@ -200,7 +200,7 @@ const FAB: React.FC<React.PropsWithChildren<Props>> = ({
200
200
  </Text>
201
201
  ) : null}
202
202
  </View>
203
- </Pressable>
203
+ </Touchable>
204
204
  </Elevation>
205
205
  );
206
206
  };
@@ -1,11 +1,12 @@
1
1
  import * as React from "react";
2
- import { View, StyleSheet, Text, Platform, Dimensions, Pressable, } from "react-native";
2
+ import { View, StyleSheet, Text, Platform, Dimensions, } from "react-native";
3
3
  import { omit, pickBy, identity, isObject } from "lodash";
4
4
  import { SafeAreaView } from "react-native-safe-area-context";
5
5
  import { Picker as NativePicker } from "@react-native-picker/picker";
6
6
  import { withTheme } from "../../theming";
7
7
  import Portal from "../Portal/Portal";
8
- import { Button } from "../Button";
8
+ import Button from "../DeprecatedButton";
9
+ import Touchable from "../Touchable";
9
10
  import { extractStyles, extractBorderAndMarginStyles, borderStyleNames, marginStyleNames, } from "../../utilities";
10
11
  function normalizeOptions(options) {
11
12
  if (options.length === 0) {
@@ -165,7 +166,7 @@ const Picker = ({ error, options = [], onValueChange, defaultValue, Icon, style,
165
166
  return (
166
167
  /* marginsContainer */
167
168
  React.createElement(View, { style: [styles.marginsContainer, marginStyles] },
168
- React.createElement(Pressable, { disabled: disabled, onPress: togglePickerVisible, style: styles.touchableContainer },
169
+ React.createElement(Touchable, { disabled: disabled, onPress: togglePickerVisible, style: styles.touchableContainer },
169
170
  React.createElement(View, { pointerEvents: "none", style: [
170
171
  styles.outsetContainer,
171
172
  stylesWithoutBordersAndMargins,
@@ -7,7 +7,6 @@ import {
7
7
  ViewStyle,
8
8
  StyleProp,
9
9
  Dimensions,
10
- Pressable,
11
10
  } from "react-native";
12
11
  import { omit, pickBy, identity, isObject } from "lodash";
13
12
  import { SafeAreaView } from "react-native-safe-area-context";
@@ -15,7 +14,8 @@ import { Picker as NativePicker } from "@react-native-picker/picker";
15
14
 
16
15
  import { withTheme } from "../../theming";
17
16
  import Portal from "../Portal/Portal";
18
- import { Button } from "../Button";
17
+ import Button from "../DeprecatedButton";
18
+ import Touchable from "../Touchable";
19
19
  import type { Theme } from "../../styles/DefaultTheme";
20
20
  import type { IconSlot } from "../../interfaces/Icon";
21
21
  import {
@@ -306,7 +306,7 @@ const Picker: React.FC<PickerProps> = ({
306
306
  /* marginsContainer */
307
307
  <View style={[styles.marginsContainer, marginStyles]}>
308
308
  {/* touchableContainer */}
309
- <Pressable
309
+ <Touchable
310
310
  disabled={disabled}
311
311
  onPress={togglePickerVisible}
312
312
  style={styles.touchableContainer}
@@ -342,7 +342,7 @@ const Picker: React.FC<PickerProps> = ({
342
342
  </View>
343
343
  </View>
344
344
  {assistiveTextLabel}
345
- </Pressable>
345
+ </Touchable>
346
346
 
347
347
  {/* iosPicker */}
348
348
  {isIos && pickerVisible ? (
@@ -5,7 +5,7 @@ import omit from "lodash.omit";
5
5
  import { Picker as NativePicker } from "@react-native-picker/picker";
6
6
  import { withTheme } from "../../theming";
7
7
  import Portal from "../Portal/Portal";
8
- import { Button } from "../Button";
8
+ import Button from "../DeprecatedButton";
9
9
  import TextField from "../TextField";
10
10
  import Touchable from "../Touchable";
11
11
  import { extractStyles } from "../../utilities";
@@ -8,7 +8,7 @@ import { Picker as NativePicker } from "@react-native-picker/picker";
8
8
  import { withTheme } from "../../theming";
9
9
 
10
10
  import Portal from "../Portal/Portal";
11
- import { Button } from "../Button";
11
+ import Button from "../DeprecatedButton";
12
12
  import TextField from "../TextField";
13
13
  import Touchable from "../Touchable";
14
14
  import { PickerComponentProps } from "./PickerTypes";