react-native-varia 0.4.1 → 0.4.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.
- package/lib/components/Accordion.tsx +13 -2
- package/lib/components/Checkbox.tsx +25 -4
- package/lib/components/Divider.tsx +7 -2
- package/lib/components/Drawer.tsx +36 -3
- package/lib/components/Field.tsx +10 -2
- package/lib/components/FloatingAction.tsx +3 -2
- package/lib/components/Input.tsx +2 -0
- package/lib/theme/Drawer.recipe.tsx +0 -12
- package/lib/theme/FloatingAction.tsx +5 -0
- package/package.json +1 -1
|
@@ -77,7 +77,13 @@ function AccordionGroupRoot({
|
|
|
77
77
|
})
|
|
78
78
|
})
|
|
79
79
|
|
|
80
|
-
return
|
|
80
|
+
return (
|
|
81
|
+
<View
|
|
82
|
+
testID="varia-accordion-group-root"
|
|
83
|
+
style={styles.groupContainer(flex, alignSelf)}>
|
|
84
|
+
{items}
|
|
85
|
+
</View>
|
|
86
|
+
)
|
|
81
87
|
}
|
|
82
88
|
|
|
83
89
|
function AccordionGroupItem({
|
|
@@ -88,23 +94,28 @@ function AccordionGroupItem({
|
|
|
88
94
|
children,
|
|
89
95
|
isOpen = false,
|
|
90
96
|
onToggle,
|
|
97
|
+
itemKey,
|
|
91
98
|
}: AccordionItemProps) {
|
|
92
99
|
AccordionStyles.useVariants({variant, size, active: isOpen})
|
|
93
100
|
return (
|
|
94
101
|
<AnimatedView
|
|
102
|
+
testID={`varia-accordion-group-item-${itemKey}`}
|
|
95
103
|
layout={LinearTransition.duration(150)}
|
|
96
104
|
style={[
|
|
97
105
|
styles.itemContainer,
|
|
98
106
|
AccordionStyles.itemContainer(colorPalette),
|
|
99
107
|
]}>
|
|
100
108
|
<Pressable
|
|
109
|
+
testID={`varia-accordion-group-header-${itemKey}`}
|
|
101
110
|
onPress={onToggle}
|
|
102
111
|
style={[styles.header, AccordionStyles.header(colorPalette)]}>
|
|
103
112
|
<Text style={AccordionStyles.headerTitle(colorPalette)}>{title}</Text>
|
|
104
113
|
</Pressable>
|
|
105
114
|
|
|
106
115
|
{isOpen && (
|
|
107
|
-
<View
|
|
116
|
+
<View
|
|
117
|
+
style={styles.contentContainer}
|
|
118
|
+
testID={`varia-accordion-group-content-${itemKey}`}>
|
|
108
119
|
<View style={styles.innerContent}>{children}</View>
|
|
109
120
|
</View>
|
|
110
121
|
)}
|
|
@@ -48,16 +48,24 @@ function Checkbox({
|
|
|
48
48
|
|
|
49
49
|
return (
|
|
50
50
|
<Pressable
|
|
51
|
+
testID="varia-checkbox-container"
|
|
51
52
|
style={[styles.container, CheckboxStyles.container(colorPalette)]}
|
|
52
53
|
onPress={handlePress}>
|
|
53
54
|
<View
|
|
55
|
+
testID="varia-check-container"
|
|
54
56
|
style={[
|
|
55
57
|
styles.checkContainer,
|
|
56
58
|
CheckboxStyles.checkContainer(colorPalette),
|
|
57
59
|
]}>
|
|
58
|
-
{isChecked &&
|
|
60
|
+
{isChecked && (
|
|
61
|
+
<Check testID="varia-check" size={checkSize} color={checkColor} />
|
|
62
|
+
)}
|
|
59
63
|
</View>
|
|
60
|
-
<Text
|
|
64
|
+
<Text
|
|
65
|
+
testID="varia-checkbox-label"
|
|
66
|
+
style={CheckboxStyles.label(colorPalette)}>
|
|
67
|
+
{children}
|
|
68
|
+
</Text>
|
|
61
69
|
</Pressable>
|
|
62
70
|
)
|
|
63
71
|
}
|
|
@@ -81,9 +89,22 @@ const styles = StyleSheet.create({
|
|
|
81
89
|
|
|
82
90
|
export default Checkbox
|
|
83
91
|
|
|
84
|
-
const Check = ({
|
|
92
|
+
const Check = ({
|
|
93
|
+
size,
|
|
94
|
+
color,
|
|
95
|
+
testID,
|
|
96
|
+
}: {
|
|
97
|
+
size: string
|
|
98
|
+
color: string
|
|
99
|
+
testID?: string
|
|
100
|
+
}) => {
|
|
85
101
|
return (
|
|
86
|
-
<Svg
|
|
102
|
+
<Svg
|
|
103
|
+
testID={testID}
|
|
104
|
+
width={size}
|
|
105
|
+
height={size}
|
|
106
|
+
viewBox="0 0 16 13"
|
|
107
|
+
fill="none">
|
|
87
108
|
<Line
|
|
88
109
|
x1="1.64402"
|
|
89
110
|
y1="6.05591"
|
|
@@ -17,8 +17,13 @@ const Divider = ({
|
|
|
17
17
|
colorPalette?: PalettesWithNestedKeys
|
|
18
18
|
}) => {
|
|
19
19
|
return (
|
|
20
|
-
<View
|
|
21
|
-
|
|
20
|
+
<View
|
|
21
|
+
testID="varia-divider-container"
|
|
22
|
+
style={styles.container(size, axis, margin)}>
|
|
23
|
+
<View
|
|
24
|
+
testID="varia-divider"
|
|
25
|
+
style={[styles.divider(color, colorPalette, size, axis)]}
|
|
26
|
+
/>
|
|
22
27
|
</View>
|
|
23
28
|
)
|
|
24
29
|
}
|
|
@@ -1,10 +1,18 @@
|
|
|
1
1
|
import React, {
|
|
2
2
|
createContext,
|
|
3
3
|
useContext,
|
|
4
|
+
useEffect,
|
|
4
5
|
useImperativeHandle,
|
|
5
6
|
useMemo,
|
|
7
|
+
useState,
|
|
6
8
|
} from 'react'
|
|
7
|
-
import {
|
|
9
|
+
import {
|
|
10
|
+
Dimensions,
|
|
11
|
+
Keyboard,
|
|
12
|
+
Platform,
|
|
13
|
+
TouchableWithoutFeedback,
|
|
14
|
+
View,
|
|
15
|
+
} from 'react-native'
|
|
8
16
|
import {Gesture, GestureDetector} from 'react-native-gesture-handler'
|
|
9
17
|
import Animated, {
|
|
10
18
|
measure,
|
|
@@ -228,8 +236,29 @@ const DrawerSliderInternal = ({
|
|
|
228
236
|
|
|
229
237
|
DrawerStyles.useVariants({variant})
|
|
230
238
|
|
|
239
|
+
const [keyboardHeight, setKeyboardHeight] = useState<number>(0)
|
|
240
|
+
|
|
241
|
+
useEffect(() => {
|
|
242
|
+
const showSub = Keyboard.addListener('keyboardDidShow', e => {
|
|
243
|
+
if (e.endCoordinates.height < 50) return // ignoramos eventos “prematuros”
|
|
244
|
+
|
|
245
|
+
console.log(e.endCoordinates.height)
|
|
246
|
+
setKeyboardHeight(e.endCoordinates.height)
|
|
247
|
+
})
|
|
248
|
+
const hideSub = Keyboard.addListener('keyboardDidHide', () => {
|
|
249
|
+
setKeyboardHeight(0)
|
|
250
|
+
})
|
|
251
|
+
return () => {
|
|
252
|
+
showSub.remove()
|
|
253
|
+
hideSub.remove()
|
|
254
|
+
}
|
|
255
|
+
}, [])
|
|
256
|
+
|
|
231
257
|
const screenHeight =
|
|
232
|
-
|
|
258
|
+
Dimensions.get('window').height - UnistylesRuntime.insets.top
|
|
259
|
+
|
|
260
|
+
// const screenHeight =
|
|
261
|
+
// UnistylesRuntime.screen.height - UnistylesRuntime.insets.top
|
|
233
262
|
const screenWidth = UnistylesRuntime.screen.width
|
|
234
263
|
|
|
235
264
|
const animations = {withSpring, withTiming}
|
|
@@ -251,7 +280,10 @@ const DrawerSliderInternal = ({
|
|
|
251
280
|
)
|
|
252
281
|
}
|
|
253
282
|
|
|
283
|
+
const initialized = useSharedValue(false)
|
|
284
|
+
|
|
254
285
|
const onLayout = () => {
|
|
286
|
+
if (initialized.value) return
|
|
255
287
|
const _screenHeight = screenHeight
|
|
256
288
|
const _screenWidth = screenWidth
|
|
257
289
|
const _axis = axis
|
|
@@ -275,6 +307,7 @@ const DrawerSliderInternal = ({
|
|
|
275
307
|
resolvedSnapPoints.value = resolved
|
|
276
308
|
translate.value = resolved[0]
|
|
277
309
|
context.value = {position: resolved[0], snapPoint: 0}
|
|
310
|
+
initialized.value = true
|
|
278
311
|
}
|
|
279
312
|
})
|
|
280
313
|
}
|
|
@@ -446,7 +479,7 @@ const DrawerSliderInternal = ({
|
|
|
446
479
|
return {
|
|
447
480
|
transform: [
|
|
448
481
|
axis === 'y'
|
|
449
|
-
? {translateY: translate.value}
|
|
482
|
+
? {translateY: translate.value - keyboardHeight}
|
|
450
483
|
: {translateX: translate.value},
|
|
451
484
|
],
|
|
452
485
|
}
|
package/lib/components/Field.tsx
CHANGED
|
@@ -40,6 +40,7 @@ const FieldRoot = ({
|
|
|
40
40
|
|
|
41
41
|
return (
|
|
42
42
|
<View
|
|
43
|
+
testID="varia-field-root"
|
|
43
44
|
style={[
|
|
44
45
|
styles.root(flex),
|
|
45
46
|
FieldStyles.root(colorPalette),
|
|
@@ -71,7 +72,11 @@ const FieldLabel = ({children, ...props}: FieldLabelProps) => {
|
|
|
71
72
|
|
|
72
73
|
FieldStyles.useVariants({variant, size})
|
|
73
74
|
|
|
74
|
-
return
|
|
75
|
+
return (
|
|
76
|
+
<Text testID="varia-field-label" style={FieldStyles.label(colorPalette)}>
|
|
77
|
+
{children}
|
|
78
|
+
</Text>
|
|
79
|
+
)
|
|
75
80
|
}
|
|
76
81
|
|
|
77
82
|
type FieldErrorProps = {
|
|
@@ -96,7 +101,10 @@ const FieldError = ({...props}: FieldErrorProps) => {
|
|
|
96
101
|
FieldStyles.useVariants({size, variant})
|
|
97
102
|
|
|
98
103
|
return (
|
|
99
|
-
<Text
|
|
104
|
+
<Text
|
|
105
|
+
testID="varia-field-error"
|
|
106
|
+
size={size}
|
|
107
|
+
color={FieldStyles.error(colorPalette).color}>
|
|
100
108
|
{error}
|
|
101
109
|
</Text>
|
|
102
110
|
)
|
|
@@ -89,6 +89,7 @@ function Item({children, onPress, ...props}: ItemProps) {
|
|
|
89
89
|
|
|
90
90
|
return (
|
|
91
91
|
<AnimatedPressable
|
|
92
|
+
testID="varia-floating-action-item"
|
|
92
93
|
style={[
|
|
93
94
|
animatedStyles,
|
|
94
95
|
styles.itemButton,
|
|
@@ -150,15 +151,15 @@ function Root({
|
|
|
150
151
|
variant,
|
|
151
152
|
'color',
|
|
152
153
|
)
|
|
153
|
-
console.log('🚀 ~ iconColor:', iconColor)
|
|
154
|
-
|
|
155
154
|
return (
|
|
156
155
|
<View
|
|
156
|
+
testID="varia-floating-action-container"
|
|
157
157
|
style={[
|
|
158
158
|
styles.buttonContainer(top, bottom, left, right),
|
|
159
159
|
FloatingActionStyles.buttonContainer(colorPalette),
|
|
160
160
|
]}>
|
|
161
161
|
<AnimatedPressable
|
|
162
|
+
testID="varia-floating-action-button"
|
|
162
163
|
onPress={() => (isExpanded.value = !isExpanded.value)}
|
|
163
164
|
style={[
|
|
164
165
|
plusIconStyle,
|
package/lib/components/Input.tsx
CHANGED
|
@@ -129,9 +129,11 @@ const Input = ({
|
|
|
129
129
|
|
|
130
130
|
return (
|
|
131
131
|
<View
|
|
132
|
+
testID="varia-input-container"
|
|
132
133
|
style={styles.container(flex, direction, alignSelf, textAlignVertical)}>
|
|
133
134
|
{IconRendered}
|
|
134
135
|
<TextInput
|
|
136
|
+
testID="varia-input"
|
|
135
137
|
editable={!disabled}
|
|
136
138
|
style={[
|
|
137
139
|
styles.input(
|
|
@@ -65,23 +65,11 @@ export const DrawerStyles = StyleSheet.create((theme, rt) => ({
|
|
|
65
65
|
card: {
|
|
66
66
|
boxShadow: 'none',
|
|
67
67
|
borderRadius: theme.radii.lg,
|
|
68
|
-
// marginHorizontal: theme.spacing[3],
|
|
69
68
|
borderWidth: 2,
|
|
70
69
|
borderColor: theme.colors.border.default,
|
|
71
|
-
// height: rt.screen.height,
|
|
72
|
-
// height: 'auto',
|
|
73
70
|
alignSelf: 'auto',
|
|
74
71
|
maxWidth: '90%',
|
|
75
72
|
},
|
|
76
|
-
new: {
|
|
77
|
-
maxWidth: '80%',
|
|
78
|
-
},
|
|
79
|
-
iglooroom: {
|
|
80
|
-
padding: 0,
|
|
81
|
-
boxShadow: 'none',
|
|
82
|
-
borderRadius: theme.radii.none,
|
|
83
|
-
backgroundColor: 'transparent',
|
|
84
|
-
},
|
|
85
73
|
},
|
|
86
74
|
},
|
|
87
75
|
}),
|