orn-ui 0.1.1 → 0.2.1
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/README.md +20 -2
- package/lib/commonjs/atoms/PressableScale.js +9 -10
- package/lib/commonjs/atoms/PressableScale.js.map +1 -1
- package/lib/commonjs/atoms/Skeleton.js +96 -0
- package/lib/commonjs/atoms/Skeleton.js.map +1 -0
- package/lib/commonjs/atoms/Transition.js +171 -0
- package/lib/commonjs/atoms/Transition.js.map +1 -0
- package/lib/commonjs/atoms/index.js +20 -0
- package/lib/commonjs/atoms/index.js.map +1 -1
- package/lib/commonjs/molecules/OptionCard.js +55 -22
- package/lib/commonjs/molecules/OptionCard.js.map +1 -1
- package/lib/commonjs/molecules/{ThemeToggle.js → SegmentedControl.js} +36 -36
- package/lib/commonjs/molecules/SegmentedControl.js.map +1 -0
- package/lib/commonjs/molecules/Stepper.js +124 -47
- package/lib/commonjs/molecules/Stepper.js.map +1 -1
- package/lib/commonjs/molecules/Steps.js +36 -6
- package/lib/commonjs/molecules/Steps.js.map +1 -1
- package/lib/commonjs/molecules/index.js +9 -3
- package/lib/commonjs/molecules/index.js.map +1 -1
- package/lib/commonjs/organisms/AlertProvider.js +26 -0
- package/lib/commonjs/organisms/AlertProvider.js.map +1 -1
- package/lib/commonjs/organisms/BottomSheet.js +118 -39
- package/lib/commonjs/organisms/BottomSheet.js.map +1 -1
- package/lib/commonjs/organisms/DateField.js +46 -15
- package/lib/commonjs/organisms/DateField.js.map +1 -1
- package/lib/commonjs/organisms/DatePicker.js +129 -50
- package/lib/commonjs/organisms/DatePicker.js.map +1 -1
- package/lib/commonjs/organisms/List.js +66 -44
- package/lib/commonjs/organisms/List.js.map +1 -1
- package/lib/commonjs/organisms/Modal.js +42 -87
- package/lib/commonjs/organisms/Modal.js.map +1 -1
- package/lib/commonjs/organisms/NavigationBar.js +210 -0
- package/lib/commonjs/organisms/NavigationBar.js.map +1 -0
- package/lib/commonjs/organisms/Screen.js +9 -2
- package/lib/commonjs/organisms/Screen.js.map +1 -1
- package/lib/commonjs/organisms/SearchList.js +95 -27
- package/lib/commonjs/organisms/SearchList.js.map +1 -1
- package/lib/commonjs/organisms/Select.js +222 -50
- package/lib/commonjs/organisms/Select.js.map +1 -1
- package/lib/commonjs/organisms/ThemeToggle.js +52 -0
- package/lib/commonjs/organisms/ThemeToggle.js.map +1 -0
- package/lib/commonjs/organisms/Toast.js +8 -22
- package/lib/commonjs/organisms/Toast.js.map +1 -1
- package/lib/commonjs/organisms/ToastProvider.js +24 -0
- package/lib/commonjs/organisms/ToastProvider.js.map +1 -1
- package/lib/commonjs/organisms/Wizard.js +23 -2
- package/lib/commonjs/organisms/Wizard.js.map +1 -1
- package/lib/commonjs/organisms/imperativeBridge.js +28 -0
- package/lib/commonjs/organisms/imperativeBridge.js.map +1 -0
- package/lib/commonjs/organisms/index.js +50 -0
- package/lib/commonjs/organisms/index.js.map +1 -1
- package/lib/commonjs/theme/colors.js +207 -0
- package/lib/commonjs/theme/colors.js.map +1 -0
- package/lib/commonjs/theme/createTheme.js +25 -2
- package/lib/commonjs/theme/createTheme.js.map +1 -1
- package/lib/commonjs/theme/index.js +25 -0
- package/lib/commonjs/theme/index.js.map +1 -1
- package/lib/commonjs/theme/labels.js +5 -1
- package/lib/commonjs/theme/labels.js.map +1 -1
- package/lib/commonjs/theme/palettes.js +5 -2
- package/lib/commonjs/theme/palettes.js.map +1 -1
- package/lib/module/atoms/PressableScale.js +9 -10
- package/lib/module/atoms/PressableScale.js.map +1 -1
- package/lib/module/atoms/Skeleton.js +91 -0
- package/lib/module/atoms/Skeleton.js.map +1 -0
- package/lib/module/atoms/Transition.js +165 -0
- package/lib/module/atoms/Transition.js.map +1 -0
- package/lib/module/atoms/index.js +2 -0
- package/lib/module/atoms/index.js.map +1 -1
- package/lib/module/molecules/OptionCard.js +56 -23
- package/lib/module/molecules/OptionCard.js.map +1 -1
- package/lib/module/molecules/{ThemeToggle.js → SegmentedControl.js} +36 -36
- package/lib/module/molecules/SegmentedControl.js.map +1 -0
- package/lib/module/molecules/Stepper.js +125 -49
- package/lib/module/molecules/Stepper.js.map +1 -1
- package/lib/module/molecules/Steps.js +37 -7
- package/lib/module/molecules/Steps.js.map +1 -1
- package/lib/module/molecules/index.js +2 -2
- package/lib/module/molecules/index.js.map +1 -1
- package/lib/module/organisms/AlertProvider.js +24 -1
- package/lib/module/organisms/AlertProvider.js.map +1 -1
- package/lib/module/organisms/BottomSheet.js +120 -41
- package/lib/module/organisms/BottomSheet.js.map +1 -1
- package/lib/module/organisms/DateField.js +49 -18
- package/lib/module/organisms/DateField.js.map +1 -1
- package/lib/module/organisms/DatePicker.js +131 -52
- package/lib/module/organisms/DatePicker.js.map +1 -1
- package/lib/module/organisms/List.js +68 -46
- package/lib/module/organisms/List.js.map +1 -1
- package/lib/module/organisms/Modal.js +44 -89
- package/lib/module/organisms/Modal.js.map +1 -1
- package/lib/module/organisms/NavigationBar.js +205 -0
- package/lib/module/organisms/NavigationBar.js.map +1 -0
- package/lib/module/organisms/Screen.js +9 -2
- package/lib/module/organisms/Screen.js.map +1 -1
- package/lib/module/organisms/SearchList.js +96 -28
- package/lib/module/organisms/SearchList.js.map +1 -1
- package/lib/module/organisms/Select.js +224 -52
- package/lib/module/organisms/Select.js.map +1 -1
- package/lib/module/organisms/ThemeToggle.js +47 -0
- package/lib/module/organisms/ThemeToggle.js.map +1 -0
- package/lib/module/organisms/Toast.js +10 -24
- package/lib/module/organisms/Toast.js.map +1 -1
- package/lib/module/organisms/ToastProvider.js +21 -0
- package/lib/module/organisms/ToastProvider.js.map +1 -1
- package/lib/module/organisms/Wizard.js +24 -3
- package/lib/module/organisms/Wizard.js.map +1 -1
- package/lib/module/organisms/imperativeBridge.js +24 -0
- package/lib/module/organisms/imperativeBridge.js.map +1 -0
- package/lib/module/organisms/index.js +4 -2
- package/lib/module/organisms/index.js.map +1 -1
- package/lib/module/theme/colors.js +194 -0
- package/lib/module/theme/colors.js.map +1 -0
- package/lib/module/theme/createTheme.js +25 -2
- package/lib/module/theme/createTheme.js.map +1 -1
- package/lib/module/theme/index.js +1 -0
- package/lib/module/theme/index.js.map +1 -1
- package/lib/module/theme/labels.js +5 -1
- package/lib/module/theme/labels.js.map +1 -1
- package/lib/module/theme/palettes.js +5 -2
- package/lib/module/theme/palettes.js.map +1 -1
- package/lib/typescript/atoms/PressableScale.d.ts +3 -2
- package/lib/typescript/atoms/PressableScale.d.ts.map +1 -1
- package/lib/typescript/atoms/Skeleton.d.ts +29 -0
- package/lib/typescript/atoms/Skeleton.d.ts.map +1 -0
- package/lib/typescript/atoms/Transition.d.ts +51 -0
- package/lib/typescript/atoms/Transition.d.ts.map +1 -0
- package/lib/typescript/atoms/index.d.ts +4 -0
- package/lib/typescript/atoms/index.d.ts.map +1 -1
- package/lib/typescript/molecules/OptionCard.d.ts +11 -6
- package/lib/typescript/molecules/OptionCard.d.ts.map +1 -1
- package/lib/typescript/molecules/SegmentedControl.d.ts +24 -0
- package/lib/typescript/molecules/SegmentedControl.d.ts.map +1 -0
- package/lib/typescript/molecules/Stepper.d.ts +35 -3
- package/lib/typescript/molecules/Stepper.d.ts.map +1 -1
- package/lib/typescript/molecules/Steps.d.ts.map +1 -1
- package/lib/typescript/molecules/index.d.ts +4 -4
- package/lib/typescript/molecules/index.d.ts.map +1 -1
- package/lib/typescript/organisms/AlertProvider.d.ts +9 -0
- package/lib/typescript/organisms/AlertProvider.d.ts.map +1 -1
- package/lib/typescript/organisms/BottomSheet.d.ts +26 -4
- package/lib/typescript/organisms/BottomSheet.d.ts.map +1 -1
- package/lib/typescript/organisms/DateField.d.ts +23 -5
- package/lib/typescript/organisms/DateField.d.ts.map +1 -1
- package/lib/typescript/organisms/DatePicker.d.ts +5 -1
- package/lib/typescript/organisms/DatePicker.d.ts.map +1 -1
- package/lib/typescript/organisms/List.d.ts +9 -2
- package/lib/typescript/organisms/List.d.ts.map +1 -1
- package/lib/typescript/organisms/Modal.d.ts +3 -5
- package/lib/typescript/organisms/Modal.d.ts.map +1 -1
- package/lib/typescript/organisms/NavigationBar.d.ts +32 -0
- package/lib/typescript/organisms/NavigationBar.d.ts.map +1 -0
- package/lib/typescript/organisms/Screen.d.ts +2 -1
- package/lib/typescript/organisms/Screen.d.ts.map +1 -1
- package/lib/typescript/organisms/SearchList.d.ts +21 -5
- package/lib/typescript/organisms/SearchList.d.ts.map +1 -1
- package/lib/typescript/organisms/Select.d.ts +19 -4
- package/lib/typescript/organisms/Select.d.ts.map +1 -1
- package/lib/typescript/{molecules → organisms}/ThemeToggle.d.ts +4 -4
- package/lib/typescript/organisms/ThemeToggle.d.ts.map +1 -0
- package/lib/typescript/organisms/Toast.d.ts.map +1 -1
- package/lib/typescript/organisms/ToastProvider.d.ts +8 -0
- package/lib/typescript/organisms/ToastProvider.d.ts.map +1 -1
- package/lib/typescript/organisms/Wizard.d.ts +7 -1
- package/lib/typescript/organisms/Wizard.d.ts.map +1 -1
- package/lib/typescript/organisms/imperativeBridge.d.ts +12 -0
- package/lib/typescript/organisms/imperativeBridge.d.ts.map +1 -0
- package/lib/typescript/organisms/index.d.ts +7 -3
- package/lib/typescript/organisms/index.d.ts.map +1 -1
- package/lib/typescript/theme/colors.d.ts +44 -0
- package/lib/typescript/theme/colors.d.ts.map +1 -0
- package/lib/typescript/theme/createTheme.d.ts +3 -0
- package/lib/typescript/theme/createTheme.d.ts.map +1 -1
- package/lib/typescript/theme/index.d.ts +3 -1
- package/lib/typescript/theme/index.d.ts.map +1 -1
- package/lib/typescript/theme/labels.d.ts +6 -0
- package/lib/typescript/theme/labels.d.ts.map +1 -1
- package/lib/typescript/theme/palettes.d.ts.map +1 -1
- package/lib/typescript/theme/types.d.ts +9 -0
- package/lib/typescript/theme/types.d.ts.map +1 -1
- package/package.json +67 -6
- package/registry/alert-provider.json +9 -2
- package/registry/bottom-sheet.json +6 -2
- package/registry/core.json +9 -5
- package/registry/date-field.json +2 -1
- package/registry/date-picker.json +1 -1
- package/registry/index.json +99 -30
- package/registry/list.json +2 -1
- package/registry/manifest.json +44 -6
- package/registry/modal.json +3 -2
- package/registry/navigation-bar.json +18 -0
- package/registry/option-card.json +3 -2
- package/registry/pressable-scale.json +1 -1
- package/registry/screen.json +1 -1
- package/registry/search-list.json +2 -1
- package/registry/segmented-control.json +18 -0
- package/registry/select.json +1 -1
- package/registry/skeleton.json +18 -0
- package/registry/stepper.json +3 -2
- package/registry/steps.json +1 -1
- package/registry/theme-toggle.json +5 -4
- package/registry/toast-provider.json +11 -3
- package/registry/toast.json +3 -2
- package/registry/transition.json +19 -0
- package/registry/wizard.json +3 -2
- package/src/atoms/PressableScale.tsx +16 -6
- package/src/atoms/Skeleton.tsx +114 -0
- package/src/atoms/Transition.tsx +189 -0
- package/src/atoms/index.ts +4 -0
- package/src/molecules/OptionCard.tsx +62 -25
- package/src/molecules/SegmentedControl.tsx +84 -0
- package/src/molecules/Stepper.tsx +147 -32
- package/src/molecules/Steps.tsx +27 -8
- package/src/molecules/index.ts +4 -4
- package/src/organisms/AlertProvider.tsx +26 -1
- package/src/organisms/BottomSheet.tsx +214 -62
- package/src/organisms/DateField.tsx +79 -19
- package/src/organisms/DatePicker.tsx +198 -80
- package/src/organisms/List.tsx +73 -41
- package/src/organisms/Modal.tsx +49 -61
- package/src/organisms/NavigationBar.tsx +226 -0
- package/src/organisms/Screen.tsx +11 -3
- package/src/organisms/SearchList.tsx +131 -35
- package/src/organisms/Select.tsx +223 -45
- package/src/organisms/ThemeToggle.tsx +30 -0
- package/src/organisms/Toast.tsx +8 -21
- package/src/organisms/ToastProvider.tsx +24 -0
- package/src/organisms/Wizard.tsx +37 -3
- package/src/organisms/imperativeBridge.ts +28 -0
- package/src/organisms/index.ts +7 -3
- package/src/theme/colors.ts +175 -0
- package/src/theme/createTheme.ts +38 -4
- package/src/theme/index.ts +3 -1
- package/src/theme/labels.ts +13 -0
- package/src/theme/palettes.ts +5 -2
- package/src/theme/types.ts +10 -0
- package/lib/commonjs/molecules/ThemeToggle.js.map +0 -1
- package/lib/module/molecules/ThemeToggle.js.map +0 -1
- package/lib/typescript/molecules/ThemeToggle.d.ts.map +0 -1
- package/src/molecules/ThemeToggle.tsx +0 -67
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
import React, { memo, useEffect, useRef, useState } from 'react';
|
|
4
|
-
import { Animated, Dimensions, Modal, PanResponder, Pressable, View } from 'react-native';
|
|
4
|
+
import { Animated, Dimensions, Keyboard, KeyboardAvoidingView, Modal, PanResponder, Platform, Pressable, ScrollView, View } from 'react-native';
|
|
5
5
|
import { createStyles } from '../theme/createStyles';
|
|
6
|
-
import { useInsets } from '../theme/UIProvider';
|
|
6
|
+
import { useColors, useInsets } from '../theme/UIProvider';
|
|
7
|
+
import { Title } from '../atoms/Text';
|
|
8
|
+
import { IconButton } from '../atoms/IconButton';
|
|
9
|
+
import { Transition } from '../atoms/Transition';
|
|
7
10
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
8
11
|
const {
|
|
9
12
|
height: SCREEN_HEIGHT
|
|
@@ -21,7 +24,6 @@ const useStyles = createStyles(theme => ({
|
|
|
21
24
|
backgroundColor: theme.colors.surface,
|
|
22
25
|
borderTopLeftRadius: theme.tokens.radius.xxl,
|
|
23
26
|
borderTopRightRadius: theme.tokens.radius.xxl,
|
|
24
|
-
paddingHorizontal: theme.tokens.spacing.xl,
|
|
25
27
|
...theme.tokens.shadow.lg
|
|
26
28
|
},
|
|
27
29
|
handleArea: {
|
|
@@ -33,6 +35,36 @@ const useStyles = createStyles(theme => ({
|
|
|
33
35
|
height: 5,
|
|
34
36
|
borderRadius: 3,
|
|
35
37
|
backgroundColor: theme.colors.border
|
|
38
|
+
},
|
|
39
|
+
header: {
|
|
40
|
+
flexDirection: 'row',
|
|
41
|
+
alignItems: 'center',
|
|
42
|
+
gap: theme.tokens.spacing.md,
|
|
43
|
+
paddingHorizontal: theme.tokens.spacing.xl,
|
|
44
|
+
paddingBottom: theme.tokens.spacing.md
|
|
45
|
+
},
|
|
46
|
+
headerSpaced: {
|
|
47
|
+
paddingTop: theme.tokens.spacing.xl
|
|
48
|
+
},
|
|
49
|
+
title: {
|
|
50
|
+
flex: 1,
|
|
51
|
+
fontSize: theme.tokens.fontSize.xl,
|
|
52
|
+
fontWeight: theme.tokens.fontWeight.bold
|
|
53
|
+
},
|
|
54
|
+
content: {
|
|
55
|
+
paddingHorizontal: theme.tokens.spacing.xl
|
|
56
|
+
},
|
|
57
|
+
scroll: {
|
|
58
|
+
flexShrink: 1
|
|
59
|
+
},
|
|
60
|
+
footer: {
|
|
61
|
+
paddingHorizontal: theme.tokens.spacing.xl,
|
|
62
|
+
paddingTop: theme.tokens.spacing.md,
|
|
63
|
+
borderTopWidth: 1,
|
|
64
|
+
borderTopColor: theme.colors.border
|
|
65
|
+
},
|
|
66
|
+
footerInline: {
|
|
67
|
+
paddingTop: theme.tokens.spacing.xl
|
|
36
68
|
}
|
|
37
69
|
}));
|
|
38
70
|
const absoluteFill = {
|
|
@@ -45,37 +77,43 @@ const absoluteFill = {
|
|
|
45
77
|
|
|
46
78
|
/**
|
|
47
79
|
* BottomSheet
|
|
48
|
-
*
|
|
49
|
-
*
|
|
50
|
-
*
|
|
80
|
+
* Hoja que entra desde abajo, con arrastre para cerrar (PanResponder, no un
|
|
81
|
+
* gesture-handler externo: la librería es cero dependencias). Header, footer y
|
|
82
|
+
* scroll son opcionales, así que cubre tanto la hoja desnuda como el formulario
|
|
83
|
+
* completo.
|
|
51
84
|
*/
|
|
52
85
|
export const BottomSheet = /*#__PURE__*/memo(({
|
|
53
86
|
visible,
|
|
54
87
|
onClose,
|
|
55
88
|
children,
|
|
56
|
-
|
|
89
|
+
title,
|
|
90
|
+
footer,
|
|
91
|
+
footerPlacement = 'fixed',
|
|
92
|
+
scrollable = true,
|
|
93
|
+
draggable = true,
|
|
94
|
+
maxHeight = 0.9,
|
|
95
|
+
closeAccessibilityLabel = 'Close',
|
|
96
|
+
containerStyle,
|
|
97
|
+
contentStyle,
|
|
98
|
+
testID
|
|
57
99
|
}) => {
|
|
58
100
|
const styles = useStyles();
|
|
101
|
+
const colors = useColors();
|
|
59
102
|
const insets = useInsets();
|
|
60
103
|
const [mounted, setMounted] = useState(visible);
|
|
61
|
-
const
|
|
62
|
-
const
|
|
104
|
+
const [keyboardOpen, setKeyboardOpen] = useState(false);
|
|
105
|
+
const progress = useRef(new Animated.Value(0)).current;
|
|
63
106
|
useEffect(() => {
|
|
64
107
|
if (visible) {
|
|
65
108
|
setMounted(true);
|
|
66
|
-
Animated.timing(
|
|
67
|
-
toValue: 0,
|
|
68
|
-
duration: 250,
|
|
69
|
-
useNativeDriver: true
|
|
70
|
-
}).start();
|
|
71
|
-
Animated.timing(backdropOpacity, {
|
|
109
|
+
Animated.timing(progress, {
|
|
72
110
|
toValue: 1,
|
|
73
111
|
duration: 250,
|
|
74
112
|
useNativeDriver: true
|
|
75
113
|
}).start();
|
|
76
114
|
} else {
|
|
77
|
-
Animated.timing(
|
|
78
|
-
toValue:
|
|
115
|
+
Animated.timing(progress, {
|
|
116
|
+
toValue: 0,
|
|
79
117
|
duration: 200,
|
|
80
118
|
useNativeDriver: true
|
|
81
119
|
}).start(({
|
|
@@ -83,24 +121,25 @@ export const BottomSheet = /*#__PURE__*/memo(({
|
|
|
83
121
|
}) => {
|
|
84
122
|
if (finished) setMounted(false);
|
|
85
123
|
});
|
|
86
|
-
Animated.timing(backdropOpacity, {
|
|
87
|
-
toValue: 0,
|
|
88
|
-
duration: 200,
|
|
89
|
-
useNativeDriver: true
|
|
90
|
-
}).start();
|
|
91
124
|
}
|
|
92
|
-
}, [visible]);
|
|
125
|
+
}, [visible, progress]);
|
|
126
|
+
useEffect(() => {
|
|
127
|
+
if (footerPlacement !== 'hide-with-keyboard') return;
|
|
128
|
+
const [show, hide] = Platform.OS === 'ios' ? ['keyboardWillShow', 'keyboardWillHide'] : ['keyboardDidShow', 'keyboardDidHide'];
|
|
129
|
+
const subs = [Keyboard.addListener(show, () => setKeyboardOpen(true)), Keyboard.addListener(hide, () => setKeyboardOpen(false))];
|
|
130
|
+
return () => subs.forEach(sub => sub.remove());
|
|
131
|
+
}, [footerPlacement]);
|
|
93
132
|
const panResponder = useRef(PanResponder.create({
|
|
94
133
|
onMoveShouldSetPanResponder: (_, gesture) => gesture.dy > 5 && Math.abs(gesture.dy) > Math.abs(gesture.dx),
|
|
95
134
|
onPanResponderMove: (_, gesture) => {
|
|
96
|
-
if (gesture.dy > 0)
|
|
135
|
+
if (gesture.dy > 0) progress.setValue(1 - Math.min(gesture.dy, SCREEN_HEIGHT) / SCREEN_HEIGHT);
|
|
97
136
|
},
|
|
98
137
|
onPanResponderRelease: (_, gesture) => {
|
|
99
138
|
if (gesture.dy > DISMISS_THRESHOLD) {
|
|
100
139
|
onClose();
|
|
101
140
|
} else {
|
|
102
|
-
Animated.timing(
|
|
103
|
-
toValue:
|
|
141
|
+
Animated.timing(progress, {
|
|
142
|
+
toValue: 1,
|
|
104
143
|
duration: 150,
|
|
105
144
|
useNativeDriver: true
|
|
106
145
|
}).start();
|
|
@@ -108,39 +147,79 @@ export const BottomSheet = /*#__PURE__*/memo(({
|
|
|
108
147
|
}
|
|
109
148
|
})).current;
|
|
110
149
|
if (!mounted) return null;
|
|
150
|
+
|
|
151
|
+
// Porcentaje y no píxeles: se mide contra el contenedor, que con el teclado
|
|
152
|
+
// abierto es más bajo, así que la hoja entra siempre entera.
|
|
153
|
+
const resolvedMaxHeight = maxHeight <= 1 ? `${maxHeight * 100}%` : maxHeight;
|
|
154
|
+
const hasHeader = !!title;
|
|
155
|
+
const scrolledFooter = !!footer && footerPlacement === 'scroll' && /*#__PURE__*/_jsx(View, {
|
|
156
|
+
style: styles.footerInline,
|
|
157
|
+
children: footer
|
|
158
|
+
});
|
|
159
|
+
const pinnedFooter = !!footer && footerPlacement !== 'scroll' && !(footerPlacement === 'hide-with-keyboard' && keyboardOpen) ? /*#__PURE__*/_jsx(View, {
|
|
160
|
+
style: styles.footer,
|
|
161
|
+
children: footer
|
|
162
|
+
}) : null;
|
|
163
|
+
const body = scrollable ? /*#__PURE__*/_jsxs(ScrollView, {
|
|
164
|
+
style: styles.scroll,
|
|
165
|
+
contentContainerStyle: [styles.content, contentStyle],
|
|
166
|
+
keyboardShouldPersistTaps: "handled",
|
|
167
|
+
showsVerticalScrollIndicator: false,
|
|
168
|
+
children: [children, scrolledFooter]
|
|
169
|
+
}) : /*#__PURE__*/_jsxs(View, {
|
|
170
|
+
style: [styles.content, contentStyle],
|
|
171
|
+
children: [children, scrolledFooter]
|
|
172
|
+
});
|
|
111
173
|
return /*#__PURE__*/_jsx(Modal, {
|
|
112
174
|
visible: true,
|
|
113
175
|
transparent: true,
|
|
114
176
|
animationType: "none",
|
|
115
177
|
statusBarTranslucent: true,
|
|
116
178
|
onRequestClose: onClose,
|
|
117
|
-
children: /*#__PURE__*/_jsxs(
|
|
179
|
+
children: /*#__PURE__*/_jsxs(KeyboardAvoidingView, {
|
|
118
180
|
style: styles.container,
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
181
|
+
behavior: Platform.OS === 'ios' ? 'padding' : 'height',
|
|
182
|
+
children: [/*#__PURE__*/_jsx(Transition, {
|
|
183
|
+
value: progress,
|
|
184
|
+
preset: "fade",
|
|
185
|
+
style: [absoluteFill, styles.backdrop],
|
|
123
186
|
children: /*#__PURE__*/_jsx(Pressable, {
|
|
124
187
|
style: absoluteFill,
|
|
125
188
|
onPress: onClose,
|
|
126
|
-
|
|
127
|
-
|
|
189
|
+
testID: "bottom-sheet-backdrop",
|
|
190
|
+
accessibilityRole: hasHeader ? undefined : 'button',
|
|
191
|
+
accessibilityLabel: hasHeader ? undefined : closeAccessibilityLabel
|
|
128
192
|
})
|
|
129
|
-
}), /*#__PURE__*/_jsxs(
|
|
193
|
+
}), /*#__PURE__*/_jsxs(Transition, {
|
|
194
|
+
value: progress,
|
|
195
|
+
preset: "slide-up",
|
|
196
|
+
distance: SCREEN_HEIGHT,
|
|
197
|
+
testID: testID,
|
|
130
198
|
style: [styles.sheet, {
|
|
199
|
+
maxHeight: resolvedMaxHeight,
|
|
131
200
|
paddingBottom: Math.max(insets.bottom, 20)
|
|
132
|
-
},
|
|
133
|
-
|
|
134
|
-
translateY
|
|
135
|
-
}]
|
|
136
|
-
}],
|
|
137
|
-
children: [/*#__PURE__*/_jsx(View, {
|
|
201
|
+
}, containerStyle],
|
|
202
|
+
children: [draggable && /*#__PURE__*/_jsx(View, {
|
|
138
203
|
style: styles.handleArea,
|
|
204
|
+
testID: "bottom-sheet-handle",
|
|
139
205
|
...panResponder.panHandlers,
|
|
140
206
|
children: /*#__PURE__*/_jsx(View, {
|
|
141
207
|
style: styles.handle
|
|
142
208
|
})
|
|
143
|
-
}),
|
|
209
|
+
}), hasHeader && /*#__PURE__*/_jsxs(View, {
|
|
210
|
+
style: [styles.header, !draggable && styles.headerSpaced],
|
|
211
|
+
children: [/*#__PURE__*/_jsx(Title, {
|
|
212
|
+
style: styles.title,
|
|
213
|
+
numberOfLines: 1,
|
|
214
|
+
children: title
|
|
215
|
+
}), /*#__PURE__*/_jsx(IconButton, {
|
|
216
|
+
iconName: "close",
|
|
217
|
+
size: 24,
|
|
218
|
+
color: colors.text,
|
|
219
|
+
onPress: onClose,
|
|
220
|
+
accessibilityLabel: closeAccessibilityLabel
|
|
221
|
+
})]
|
|
222
|
+
}), body, pinnedFooter]
|
|
144
223
|
})]
|
|
145
224
|
})
|
|
146
225
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","memo","useEffect","useRef","useState","Animated","Dimensions","Modal","PanResponder","Pressable","View","createStyles","useInsets","jsx","_jsx","jsxs","_jsxs","height","SCREEN_HEIGHT","get","DISMISS_THRESHOLD","useStyles","theme","container","flex","justifyContent","backdrop","backgroundColor","colors","overlay","sheet","surface","borderTopLeftRadius","tokens","radius","xxl","borderTopRightRadius","
|
|
1
|
+
{"version":3,"names":["React","memo","useEffect","useRef","useState","Animated","Dimensions","Keyboard","KeyboardAvoidingView","Modal","PanResponder","Platform","Pressable","ScrollView","View","createStyles","useColors","useInsets","Title","IconButton","Transition","jsx","_jsx","jsxs","_jsxs","height","SCREEN_HEIGHT","get","DISMISS_THRESHOLD","useStyles","theme","container","flex","justifyContent","backdrop","backgroundColor","colors","overlay","sheet","surface","borderTopLeftRadius","tokens","radius","xxl","borderTopRightRadius","shadow","lg","handleArea","paddingVertical","spacing","md","alignItems","handle","width","borderRadius","border","header","flexDirection","gap","paddingHorizontal","xl","paddingBottom","headerSpaced","paddingTop","title","fontSize","fontWeight","bold","content","scroll","flexShrink","footer","borderTopWidth","borderTopColor","footerInline","absoluteFill","position","top","left","right","bottom","BottomSheet","visible","onClose","children","footerPlacement","scrollable","draggable","maxHeight","closeAccessibilityLabel","containerStyle","contentStyle","testID","styles","insets","mounted","setMounted","keyboardOpen","setKeyboardOpen","progress","Value","current","timing","toValue","duration","useNativeDriver","start","finished","show","hide","OS","subs","addListener","forEach","sub","remove","panResponder","create","onMoveShouldSetPanResponder","_","gesture","dy","Math","abs","dx","onPanResponderMove","setValue","min","onPanResponderRelease","resolvedMaxHeight","hasHeader","scrolledFooter","style","pinnedFooter","body","contentContainerStyle","keyboardShouldPersistTaps","showsVerticalScrollIndicator","transparent","animationType","statusBarTranslucent","onRequestClose","behavior","value","preset","onPress","accessibilityRole","undefined","accessibilityLabel","distance","max","panHandlers","numberOfLines","iconName","size","color","text","displayName"],"sourceRoot":"../../../src","sources":["organisms/BottomSheet.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import React, { memo, useState } from 'react';
|
|
3
|
+
import React, { memo, useCallback, useState } from 'react';
|
|
4
4
|
import { Text, TouchableOpacity, View } from 'react-native';
|
|
5
5
|
import { createStyles } from '../theme/createStyles';
|
|
6
|
-
import { useAllowFontScaling, useColors } from '../theme/UIProvider';
|
|
6
|
+
import { useAllowFontScaling, useColors, useLabels } from '../theme/UIProvider';
|
|
7
7
|
import { Modal } from './Modal';
|
|
8
|
-
import { DatePicker
|
|
8
|
+
import { DatePicker } from './DatePicker';
|
|
9
9
|
import { Button } from '../atoms/Button';
|
|
10
10
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
11
11
|
function defaultFormat(date, monthNames) {
|
|
@@ -61,25 +61,56 @@ const useStyles = createStyles(theme => ({
|
|
|
61
61
|
export const DateField = /*#__PURE__*/memo(({
|
|
62
62
|
label,
|
|
63
63
|
required = false,
|
|
64
|
+
mode = 'single',
|
|
64
65
|
value,
|
|
65
66
|
onChange,
|
|
67
|
+
range,
|
|
68
|
+
onRangeChange,
|
|
66
69
|
placeholder = 'Select a date',
|
|
67
70
|
error,
|
|
68
71
|
disabled = false,
|
|
69
72
|
format,
|
|
70
|
-
modalTitle
|
|
71
|
-
|
|
73
|
+
modalTitle,
|
|
74
|
+
onClear,
|
|
75
|
+
clearLabel,
|
|
72
76
|
containerStyle,
|
|
73
|
-
monthNames
|
|
77
|
+
monthNames,
|
|
78
|
+
testID,
|
|
74
79
|
...pickerProps
|
|
75
80
|
}) => {
|
|
76
81
|
const colors = useColors();
|
|
77
82
|
const styles = useStyles();
|
|
83
|
+
const labels = useLabels();
|
|
78
84
|
const allowFontScaling = useAllowFontScaling();
|
|
79
85
|
const [open, setOpen] = useState(false);
|
|
80
|
-
const
|
|
86
|
+
const months = monthNames ?? labels.months;
|
|
87
|
+
const isRange = mode === 'range';
|
|
88
|
+
const formatDate = date => format ? format(date) : defaultFormat(date, months);
|
|
89
|
+
|
|
90
|
+
// El calendario se cierra solo cuando ya no falta nada por elegir: en
|
|
91
|
+
// rango, recién cuando el segundo toque cierra el intervalo.
|
|
92
|
+
const handleChange = useCallback(date => {
|
|
93
|
+
onChange?.(date);
|
|
94
|
+
setOpen(false);
|
|
95
|
+
}, [onChange]);
|
|
96
|
+
const handleRangeChange = useCallback(next => {
|
|
97
|
+
onRangeChange?.(next);
|
|
98
|
+
if (next.end) setOpen(false);
|
|
99
|
+
}, [onRangeChange]);
|
|
100
|
+
const handleClear = useCallback(() => {
|
|
101
|
+
onClear?.();
|
|
102
|
+
setOpen(false);
|
|
103
|
+
}, [onClear]);
|
|
104
|
+
const hasValue = isRange ? !!range?.start : !!value;
|
|
105
|
+
let display = placeholder;
|
|
106
|
+
if (isRange && range?.start) {
|
|
107
|
+
display = range.end ? `${formatDate(range.start)} — ${formatDate(range.end)}` : formatDate(range.start);
|
|
108
|
+
} else if (!isRange && value) {
|
|
109
|
+
display = formatDate(value);
|
|
110
|
+
}
|
|
81
111
|
return /*#__PURE__*/_jsxs(View, {
|
|
82
112
|
style: [styles.container, containerStyle],
|
|
113
|
+
testID: testID,
|
|
83
114
|
children: [!!label && /*#__PURE__*/_jsxs(Text, {
|
|
84
115
|
allowFontScaling: allowFontScaling,
|
|
85
116
|
style: styles.label,
|
|
@@ -102,7 +133,7 @@ export const DateField = /*#__PURE__*/memo(({
|
|
|
102
133
|
},
|
|
103
134
|
children: [/*#__PURE__*/_jsx(Text, {
|
|
104
135
|
allowFontScaling: allowFontScaling,
|
|
105
|
-
style: [styles.fieldText, !
|
|
136
|
+
style: [styles.fieldText, !hasValue && styles.placeholder],
|
|
106
137
|
children: display
|
|
107
138
|
}), /*#__PURE__*/_jsx(Text, {
|
|
108
139
|
allowFontScaling: allowFontScaling,
|
|
@@ -118,22 +149,22 @@ export const DateField = /*#__PURE__*/memo(({
|
|
|
118
149
|
}), /*#__PURE__*/_jsx(Modal, {
|
|
119
150
|
visible: open,
|
|
120
151
|
onClose: () => setOpen(false),
|
|
121
|
-
title: modalTitle,
|
|
152
|
+
title: modalTitle ?? labels.selectDate,
|
|
122
153
|
variant: "overlay",
|
|
123
154
|
scrollable: false,
|
|
124
|
-
footer: /*#__PURE__*/_jsx(Button, {
|
|
125
|
-
title: clearLabel,
|
|
155
|
+
footer: onClear ? /*#__PURE__*/_jsx(Button, {
|
|
156
|
+
title: clearLabel ?? labels.clear,
|
|
126
157
|
variant: "ghost",
|
|
127
|
-
onPress:
|
|
128
|
-
}),
|
|
158
|
+
onPress: handleClear
|
|
159
|
+
}) : undefined,
|
|
129
160
|
children: /*#__PURE__*/_jsx(DatePicker, {
|
|
161
|
+
mode: mode,
|
|
130
162
|
value: value,
|
|
131
|
-
|
|
163
|
+
range: range,
|
|
164
|
+
monthNames: months,
|
|
132
165
|
...pickerProps,
|
|
133
|
-
onChange:
|
|
134
|
-
|
|
135
|
-
setOpen(false);
|
|
136
|
-
}
|
|
166
|
+
onChange: handleChange,
|
|
167
|
+
onRangeChange: handleRangeChange
|
|
137
168
|
})
|
|
138
169
|
})]
|
|
139
170
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","memo","useState","Text","TouchableOpacity","View","createStyles","useAllowFontScaling","useColors","
|
|
1
|
+
{"version":3,"names":["React","memo","useCallback","useState","Text","TouchableOpacity","View","createStyles","useAllowFontScaling","useColors","useLabels","Modal","DatePicker","Button","jsx","_jsx","jsxs","_jsxs","defaultFormat","date","monthNames","getMonth","getDate","getFullYear","useStyles","theme","container","marginBottom","tokens","spacing","lg","width","gap","sm","label","fontSize","md","fontWeight","medium","color","colors","text","required","errorText","field","flexDirection","alignItems","justifyContent","backgroundColor","inputBackground","borderRadius","radius","borderWidth","borderColor","border","minHeight","paddingHorizontal","fieldError","error","fieldText","placeholder","textLight","DateField","mode","value","onChange","range","onRangeChange","disabled","format","modalTitle","onClear","clearLabel","containerStyle","testID","pickerProps","styles","labels","allowFontScaling","open","setOpen","months","isRange","formatDate","handleChange","handleRangeChange","next","end","handleClear","hasValue","start","display","style","children","opacity","onPress","activeOpacity","accessibilityRole","accessibilityLabel","accessibilityState","expanded","visible","onClose","title","selectDate","variant","scrollable","footer","clear","undefined","displayName"],"sourceRoot":"../../../src","sources":["organisms/DateField.tsx"],"mappings":"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","ignoreList":[]}
|