ripal-ui 1.0.14 → 1.0.16
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 +0 -0
- package/components/BottomSheet.jsx +183 -0
- package/components/Carousel.jsx +33 -0
- package/dist/BottomSheet.js +186 -0
- package/dist/Carousel.js +52 -0
- package/dist/Toast.js +72 -0
- package/elements/Toast.jsx +44 -0
- package/package.json +2 -2
package/README.md
ADDED
|
File without changes
|
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
import React, { useEffect, useRef, useState } from 'react';
|
|
2
|
+
import {
|
|
3
|
+
Animated,
|
|
4
|
+
View,
|
|
5
|
+
TouchableOpacity,
|
|
6
|
+
StyleSheet,
|
|
7
|
+
Dimensions,
|
|
8
|
+
PanResponder,
|
|
9
|
+
TouchableWithoutFeedback,
|
|
10
|
+
ScrollView,
|
|
11
|
+
Keyboard,
|
|
12
|
+
} from 'react-native';
|
|
13
|
+
import { Separator, Text } from '../elements';
|
|
14
|
+
import config from '../config';
|
|
15
|
+
|
|
16
|
+
const { height: screenHeight } = Dimensions.get('window');
|
|
17
|
+
|
|
18
|
+
const BottomSheet = ({ isVisible, onClose, children, height = 'auto', scroll = false, style, contentContainerStyle }) => {
|
|
19
|
+
const [visible, setVisible] = useState(isVisible);
|
|
20
|
+
const translateY = useRef(new Animated.Value(screenHeight)).current;
|
|
21
|
+
const scrollOffset = useRef(0); // Keep track of ScrollView offset
|
|
22
|
+
const keyboardHeight = useRef(new Animated.Value(0)).current; // Use Animated.Value for keyboard height
|
|
23
|
+
|
|
24
|
+
// Create a PanResponder to handle the dragging gesture
|
|
25
|
+
const panResponder = useRef(
|
|
26
|
+
PanResponder.create({
|
|
27
|
+
onMoveShouldSetPanResponder: (evt, gestureState) => {
|
|
28
|
+
return Math.abs(gestureState.dy) > 5;
|
|
29
|
+
},
|
|
30
|
+
onPanResponderMove: (evt, gestureState) => {
|
|
31
|
+
translateY.setValue(Math.max(gestureState.dy, 0));
|
|
32
|
+
},
|
|
33
|
+
onPanResponderRelease: (evt, gestureState) => {
|
|
34
|
+
const isClosing = gestureState.dy > 100;
|
|
35
|
+
if (isClosing) {
|
|
36
|
+
Animated.timing(translateY, {
|
|
37
|
+
toValue: screenHeight,
|
|
38
|
+
duration: 300,
|
|
39
|
+
useNativeDriver: false,
|
|
40
|
+
}).start(() => setVisible(false));
|
|
41
|
+
onClose();
|
|
42
|
+
} else {
|
|
43
|
+
Animated.timing(translateY, {
|
|
44
|
+
toValue: 0,
|
|
45
|
+
duration: 300,
|
|
46
|
+
useNativeDriver: false,
|
|
47
|
+
}).start();
|
|
48
|
+
}
|
|
49
|
+
},
|
|
50
|
+
})
|
|
51
|
+
).current;
|
|
52
|
+
|
|
53
|
+
useEffect(() => {
|
|
54
|
+
if (isVisible) {
|
|
55
|
+
setVisible(true);
|
|
56
|
+
Animated.timing(translateY, {
|
|
57
|
+
toValue: 0,
|
|
58
|
+
duration: 300,
|
|
59
|
+
useNativeDriver: false,
|
|
60
|
+
}).start();
|
|
61
|
+
} else {
|
|
62
|
+
Animated.timing(translateY, {
|
|
63
|
+
toValue: screenHeight,
|
|
64
|
+
duration: 300,
|
|
65
|
+
useNativeDriver: false,
|
|
66
|
+
}).start(() => setVisible(false));
|
|
67
|
+
}
|
|
68
|
+
}, [isVisible]);
|
|
69
|
+
|
|
70
|
+
useEffect(() => {
|
|
71
|
+
// Handle keyboard show and hide
|
|
72
|
+
const keyboardDidShowListener = Keyboard.addListener(
|
|
73
|
+
'keyboardDidShow',
|
|
74
|
+
(event) => {
|
|
75
|
+
Animated.timing(keyboardHeight, {
|
|
76
|
+
toValue: event.endCoordinates.height,
|
|
77
|
+
duration: 300,
|
|
78
|
+
useNativeDriver: false, // Layout animation
|
|
79
|
+
}).start();
|
|
80
|
+
}
|
|
81
|
+
);
|
|
82
|
+
const keyboardDidHideListener = Keyboard.addListener(
|
|
83
|
+
'keyboardDidHide',
|
|
84
|
+
() => {
|
|
85
|
+
Animated.timing(keyboardHeight, {
|
|
86
|
+
toValue: 0,
|
|
87
|
+
duration: 300,
|
|
88
|
+
useNativeDriver: false, // Layout animation
|
|
89
|
+
}).start();
|
|
90
|
+
}
|
|
91
|
+
);
|
|
92
|
+
|
|
93
|
+
// Cleanup listeners on component unmount
|
|
94
|
+
return () => {
|
|
95
|
+
keyboardDidShowListener.remove();
|
|
96
|
+
keyboardDidHideListener.remove();
|
|
97
|
+
};
|
|
98
|
+
}, []);
|
|
99
|
+
|
|
100
|
+
if (!visible) return null;
|
|
101
|
+
|
|
102
|
+
return (
|
|
103
|
+
<View style={StyleSheet.absoluteFill}>
|
|
104
|
+
{/* Background Overlay */}
|
|
105
|
+
<TouchableWithoutFeedback onPress={() => onClose()}>
|
|
106
|
+
<View style={styles.overlay} />
|
|
107
|
+
</TouchableWithoutFeedback>
|
|
108
|
+
|
|
109
|
+
{/* Bottom Sheet */}
|
|
110
|
+
<Animated.View
|
|
111
|
+
{...panResponder.panHandlers}
|
|
112
|
+
style={[
|
|
113
|
+
styles.sheet,
|
|
114
|
+
{ height, ...style },
|
|
115
|
+
{
|
|
116
|
+
transform: [
|
|
117
|
+
{ translateY },
|
|
118
|
+
{ translateY: keyboardHeight.interpolate({
|
|
119
|
+
inputRange: [0, 1],
|
|
120
|
+
outputRange: [0, -1], // Interpolate for smoother transition
|
|
121
|
+
}) }
|
|
122
|
+
]
|
|
123
|
+
},
|
|
124
|
+
]}
|
|
125
|
+
>
|
|
126
|
+
{/* Children */}
|
|
127
|
+
<View style={styles.dragIndicatorContainer}>
|
|
128
|
+
<TouchableWithoutFeedback {...panResponder.panHandlers}>
|
|
129
|
+
<Separator height={6} style={{borderRadius: 99}} width='12%' color={config.colors.slate[300]} />
|
|
130
|
+
</TouchableWithoutFeedback>
|
|
131
|
+
</View>
|
|
132
|
+
|
|
133
|
+
<TouchableWithoutFeedback onPress={Keyboard.dismiss}>
|
|
134
|
+
<View>
|
|
135
|
+
{scroll ? (
|
|
136
|
+
<ScrollView
|
|
137
|
+
onScroll={(e) => (scrollOffset.current = e.nativeEvent.contentOffset.y)} // Update scrollOffset correctly
|
|
138
|
+
scrollEventThrottle={16}
|
|
139
|
+
showsVerticalScrollIndicator={false}
|
|
140
|
+
contentContainerStyle={contentContainerStyle}
|
|
141
|
+
>
|
|
142
|
+
{children}
|
|
143
|
+
</ScrollView>
|
|
144
|
+
) : (
|
|
145
|
+
children
|
|
146
|
+
)}
|
|
147
|
+
</View>
|
|
148
|
+
</TouchableWithoutFeedback>
|
|
149
|
+
</Animated.View>
|
|
150
|
+
</View>
|
|
151
|
+
);
|
|
152
|
+
};
|
|
153
|
+
|
|
154
|
+
const styles = StyleSheet.create({
|
|
155
|
+
overlay: {
|
|
156
|
+
...StyleSheet.absoluteFillObject,
|
|
157
|
+
backgroundColor: 'rgba(0, 0, 0, 0.7)', // Semi-transparent black
|
|
158
|
+
},
|
|
159
|
+
sheet: {
|
|
160
|
+
position: 'absolute',
|
|
161
|
+
bottom: 0,
|
|
162
|
+
left: 0,
|
|
163
|
+
right: 0,
|
|
164
|
+
paddingHorizontal: 20,
|
|
165
|
+
paddingBottom: 20,
|
|
166
|
+
backgroundColor: '#fff',
|
|
167
|
+
borderTopLeftRadius: 20,
|
|
168
|
+
borderTopRightRadius: 20,
|
|
169
|
+
elevation: 5,
|
|
170
|
+
},
|
|
171
|
+
content: {
|
|
172
|
+
flex: 1,
|
|
173
|
+
justifyContent: 'center',
|
|
174
|
+
alignItems: 'center',
|
|
175
|
+
},
|
|
176
|
+
dragIndicatorContainer: {
|
|
177
|
+
width: '100%',
|
|
178
|
+
alignItems: 'center',
|
|
179
|
+
paddingVertical: 10,
|
|
180
|
+
},
|
|
181
|
+
});
|
|
182
|
+
|
|
183
|
+
export default BottomSheet;
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { Dimensions, Pressable, ScrollView, StyleSheet, View } from "react-native";
|
|
3
|
+
import { Text } from "../elements";
|
|
4
|
+
|
|
5
|
+
const CarouselItem = ({children, itemWidth, onPress, style}) => {
|
|
6
|
+
return (
|
|
7
|
+
<Pressable style={{width: itemWidth, ...style}} onPress={onPress}>
|
|
8
|
+
{children}
|
|
9
|
+
</Pressable>
|
|
10
|
+
)
|
|
11
|
+
}
|
|
12
|
+
const Carousel = ({children, itemWidth = 60 / 100 * Dimensions.get('window').width, showIndicator = false}) => {
|
|
13
|
+
return (
|
|
14
|
+
<ScrollView horizontal showsHorizontalScrollIndicator={showIndicator} contentContainerStyle={styles.container}>
|
|
15
|
+
<View></View>
|
|
16
|
+
{React.Children.map(children, (child) =>
|
|
17
|
+
React.cloneElement(child, { itemWidth })
|
|
18
|
+
)}
|
|
19
|
+
<View></View>
|
|
20
|
+
</ScrollView>
|
|
21
|
+
)
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
const styles = StyleSheet.create({
|
|
25
|
+
area: {
|
|
26
|
+
//
|
|
27
|
+
},
|
|
28
|
+
container: {
|
|
29
|
+
gap: 20,
|
|
30
|
+
}
|
|
31
|
+
})
|
|
32
|
+
|
|
33
|
+
export { Carousel, CarouselItem }
|
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports["default"] = void 0;
|
|
8
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
9
|
+
var _reactNative = require("react-native");
|
|
10
|
+
var _elements = require("../elements");
|
|
11
|
+
var _config = _interopRequireDefault(require("../config"));
|
|
12
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
|
|
13
|
+
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
|
|
14
|
+
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n["default"] = e, t && t.set(e, n), n; }
|
|
15
|
+
function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
|
|
16
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
17
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
18
|
+
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
|
|
19
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
|
|
20
|
+
function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
21
|
+
function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
|
|
22
|
+
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
23
|
+
function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
|
|
24
|
+
function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
|
|
25
|
+
function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
|
|
26
|
+
function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
|
|
27
|
+
var _Dimensions$get = _reactNative.Dimensions.get('window'),
|
|
28
|
+
screenHeight = _Dimensions$get.height;
|
|
29
|
+
var BottomSheet = function BottomSheet(_ref) {
|
|
30
|
+
var isVisible = _ref.isVisible,
|
|
31
|
+
onClose = _ref.onClose,
|
|
32
|
+
children = _ref.children,
|
|
33
|
+
_ref$height = _ref.height,
|
|
34
|
+
height = _ref$height === void 0 ? 'auto' : _ref$height,
|
|
35
|
+
_ref$scroll = _ref.scroll,
|
|
36
|
+
scroll = _ref$scroll === void 0 ? false : _ref$scroll,
|
|
37
|
+
style = _ref.style,
|
|
38
|
+
contentContainerStyle = _ref.contentContainerStyle;
|
|
39
|
+
var _useState = (0, _react.useState)(isVisible),
|
|
40
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
41
|
+
visible = _useState2[0],
|
|
42
|
+
setVisible = _useState2[1];
|
|
43
|
+
var translateY = (0, _react.useRef)(new _reactNative.Animated.Value(screenHeight)).current;
|
|
44
|
+
var scrollOffset = (0, _react.useRef)(0); // Keep track of ScrollView offset
|
|
45
|
+
var keyboardHeight = (0, _react.useRef)(new _reactNative.Animated.Value(0)).current; // Use Animated.Value for keyboard height
|
|
46
|
+
|
|
47
|
+
// Create a PanResponder to handle the dragging gesture
|
|
48
|
+
var panResponder = (0, _react.useRef)(_reactNative.PanResponder.create({
|
|
49
|
+
onMoveShouldSetPanResponder: function onMoveShouldSetPanResponder(evt, gestureState) {
|
|
50
|
+
return Math.abs(gestureState.dy) > 5;
|
|
51
|
+
},
|
|
52
|
+
onPanResponderMove: function onPanResponderMove(evt, gestureState) {
|
|
53
|
+
translateY.setValue(Math.max(gestureState.dy, 0));
|
|
54
|
+
},
|
|
55
|
+
onPanResponderRelease: function onPanResponderRelease(evt, gestureState) {
|
|
56
|
+
var isClosing = gestureState.dy > 100;
|
|
57
|
+
if (isClosing) {
|
|
58
|
+
_reactNative.Animated.timing(translateY, {
|
|
59
|
+
toValue: screenHeight,
|
|
60
|
+
duration: 300,
|
|
61
|
+
useNativeDriver: false
|
|
62
|
+
}).start(function () {
|
|
63
|
+
return setVisible(false);
|
|
64
|
+
});
|
|
65
|
+
onClose();
|
|
66
|
+
} else {
|
|
67
|
+
_reactNative.Animated.timing(translateY, {
|
|
68
|
+
toValue: 0,
|
|
69
|
+
duration: 300,
|
|
70
|
+
useNativeDriver: false
|
|
71
|
+
}).start();
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
})).current;
|
|
75
|
+
(0, _react.useEffect)(function () {
|
|
76
|
+
if (isVisible) {
|
|
77
|
+
setVisible(true);
|
|
78
|
+
_reactNative.Animated.timing(translateY, {
|
|
79
|
+
toValue: 0,
|
|
80
|
+
duration: 300,
|
|
81
|
+
useNativeDriver: false
|
|
82
|
+
}).start();
|
|
83
|
+
} else {
|
|
84
|
+
_reactNative.Animated.timing(translateY, {
|
|
85
|
+
toValue: screenHeight,
|
|
86
|
+
duration: 300,
|
|
87
|
+
useNativeDriver: false
|
|
88
|
+
}).start(function () {
|
|
89
|
+
return setVisible(false);
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
}, [isVisible]);
|
|
93
|
+
(0, _react.useEffect)(function () {
|
|
94
|
+
// Handle keyboard show and hide
|
|
95
|
+
var keyboardDidShowListener = _reactNative.Keyboard.addListener('keyboardDidShow', function (event) {
|
|
96
|
+
_reactNative.Animated.timing(keyboardHeight, {
|
|
97
|
+
toValue: event.endCoordinates.height,
|
|
98
|
+
duration: 300,
|
|
99
|
+
useNativeDriver: false // Layout animation
|
|
100
|
+
}).start();
|
|
101
|
+
});
|
|
102
|
+
var keyboardDidHideListener = _reactNative.Keyboard.addListener('keyboardDidHide', function () {
|
|
103
|
+
_reactNative.Animated.timing(keyboardHeight, {
|
|
104
|
+
toValue: 0,
|
|
105
|
+
duration: 300,
|
|
106
|
+
useNativeDriver: false // Layout animation
|
|
107
|
+
}).start();
|
|
108
|
+
});
|
|
109
|
+
|
|
110
|
+
// Cleanup listeners on component unmount
|
|
111
|
+
return function () {
|
|
112
|
+
keyboardDidShowListener.remove();
|
|
113
|
+
keyboardDidHideListener.remove();
|
|
114
|
+
};
|
|
115
|
+
}, []);
|
|
116
|
+
if (!visible) return null;
|
|
117
|
+
return /*#__PURE__*/_react["default"].createElement(_reactNative.View, {
|
|
118
|
+
style: _reactNative.StyleSheet.absoluteFill
|
|
119
|
+
}, /*#__PURE__*/_react["default"].createElement(_reactNative.TouchableWithoutFeedback, {
|
|
120
|
+
onPress: function onPress() {
|
|
121
|
+
return onClose();
|
|
122
|
+
}
|
|
123
|
+
}, /*#__PURE__*/_react["default"].createElement(_reactNative.View, {
|
|
124
|
+
style: styles.overlay
|
|
125
|
+
})), /*#__PURE__*/_react["default"].createElement(_reactNative.Animated.View, _extends({}, panResponder.panHandlers, {
|
|
126
|
+
style: [styles.sheet, _objectSpread({
|
|
127
|
+
height: height
|
|
128
|
+
}, style), {
|
|
129
|
+
transform: [{
|
|
130
|
+
translateY: translateY
|
|
131
|
+
}, {
|
|
132
|
+
translateY: keyboardHeight.interpolate({
|
|
133
|
+
inputRange: [0, 1],
|
|
134
|
+
outputRange: [0, -1] // Interpolate for smoother transition
|
|
135
|
+
})
|
|
136
|
+
}]
|
|
137
|
+
}]
|
|
138
|
+
}), /*#__PURE__*/_react["default"].createElement(_reactNative.View, {
|
|
139
|
+
style: styles.dragIndicatorContainer
|
|
140
|
+
}, /*#__PURE__*/_react["default"].createElement(_reactNative.TouchableWithoutFeedback, panResponder.panHandlers, /*#__PURE__*/_react["default"].createElement(_elements.Separator, {
|
|
141
|
+
height: 6,
|
|
142
|
+
style: {
|
|
143
|
+
borderRadius: 99
|
|
144
|
+
},
|
|
145
|
+
width: "12%",
|
|
146
|
+
color: _config["default"].colors.slate[300]
|
|
147
|
+
}))), /*#__PURE__*/_react["default"].createElement(_reactNative.TouchableWithoutFeedback, {
|
|
148
|
+
onPress: _reactNative.Keyboard.dismiss
|
|
149
|
+
}, /*#__PURE__*/_react["default"].createElement(_reactNative.View, null, scroll ? /*#__PURE__*/_react["default"].createElement(_reactNative.ScrollView, {
|
|
150
|
+
onScroll: function onScroll(e) {
|
|
151
|
+
return scrollOffset.current = e.nativeEvent.contentOffset.y;
|
|
152
|
+
} // Update scrollOffset correctly
|
|
153
|
+
,
|
|
154
|
+
scrollEventThrottle: 16,
|
|
155
|
+
showsVerticalScrollIndicator: false,
|
|
156
|
+
contentContainerStyle: contentContainerStyle
|
|
157
|
+
}, children) : children))));
|
|
158
|
+
};
|
|
159
|
+
var styles = _reactNative.StyleSheet.create({
|
|
160
|
+
overlay: _objectSpread(_objectSpread({}, _reactNative.StyleSheet.absoluteFillObject), {}, {
|
|
161
|
+
backgroundColor: 'rgba(0, 0, 0, 0.7)' // Semi-transparent black
|
|
162
|
+
}),
|
|
163
|
+
sheet: {
|
|
164
|
+
position: 'absolute',
|
|
165
|
+
bottom: 0,
|
|
166
|
+
left: 0,
|
|
167
|
+
right: 0,
|
|
168
|
+
paddingHorizontal: 20,
|
|
169
|
+
paddingBottom: 20,
|
|
170
|
+
backgroundColor: '#fff',
|
|
171
|
+
borderTopLeftRadius: 20,
|
|
172
|
+
borderTopRightRadius: 20,
|
|
173
|
+
elevation: 5
|
|
174
|
+
},
|
|
175
|
+
content: {
|
|
176
|
+
flex: 1,
|
|
177
|
+
justifyContent: 'center',
|
|
178
|
+
alignItems: 'center'
|
|
179
|
+
},
|
|
180
|
+
dragIndicatorContainer: {
|
|
181
|
+
width: '100%',
|
|
182
|
+
alignItems: 'center',
|
|
183
|
+
paddingVertical: 10
|
|
184
|
+
}
|
|
185
|
+
});
|
|
186
|
+
var _default = exports["default"] = BottomSheet;
|
package/dist/Carousel.js
ADDED
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.CarouselItem = exports.Carousel = void 0;
|
|
7
|
+
var _react = _interopRequireDefault(require("react"));
|
|
8
|
+
var _reactNative = require("react-native");
|
|
9
|
+
var _elements = require("../elements");
|
|
10
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
|
|
11
|
+
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
|
|
12
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
13
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
14
|
+
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
|
|
15
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
|
|
16
|
+
function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
17
|
+
var CarouselItem = exports.CarouselItem = function CarouselItem(_ref) {
|
|
18
|
+
var children = _ref.children,
|
|
19
|
+
itemWidth = _ref.itemWidth,
|
|
20
|
+
onPress = _ref.onPress,
|
|
21
|
+
style = _ref.style;
|
|
22
|
+
return /*#__PURE__*/_react["default"].createElement(_reactNative.Pressable, {
|
|
23
|
+
style: _objectSpread({
|
|
24
|
+
width: itemWidth
|
|
25
|
+
}, style),
|
|
26
|
+
onPress: onPress
|
|
27
|
+
}, children);
|
|
28
|
+
};
|
|
29
|
+
var Carousel = exports.Carousel = function Carousel(_ref2) {
|
|
30
|
+
var children = _ref2.children,
|
|
31
|
+
_ref2$itemWidth = _ref2.itemWidth,
|
|
32
|
+
itemWidth = _ref2$itemWidth === void 0 ? 60 / 100 * _reactNative.Dimensions.get('window').width : _ref2$itemWidth,
|
|
33
|
+
_ref2$showIndicator = _ref2.showIndicator,
|
|
34
|
+
showIndicator = _ref2$showIndicator === void 0 ? false : _ref2$showIndicator;
|
|
35
|
+
return /*#__PURE__*/_react["default"].createElement(_reactNative.ScrollView, {
|
|
36
|
+
horizontal: true,
|
|
37
|
+
showsHorizontalScrollIndicator: showIndicator,
|
|
38
|
+
contentContainerStyle: styles.container
|
|
39
|
+
}, /*#__PURE__*/_react["default"].createElement(_reactNative.View, null), _react["default"].Children.map(children, function (child) {
|
|
40
|
+
return /*#__PURE__*/_react["default"].cloneElement(child, {
|
|
41
|
+
itemWidth: itemWidth
|
|
42
|
+
});
|
|
43
|
+
}), /*#__PURE__*/_react["default"].createElement(_reactNative.View, null));
|
|
44
|
+
};
|
|
45
|
+
var styles = _reactNative.StyleSheet.create({
|
|
46
|
+
area: {
|
|
47
|
+
//
|
|
48
|
+
},
|
|
49
|
+
container: {
|
|
50
|
+
gap: 20
|
|
51
|
+
}
|
|
52
|
+
});
|
package/dist/Toast.js
ADDED
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports["default"] = void 0;
|
|
7
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
8
|
+
var _reactNative = require("react-native");
|
|
9
|
+
var _Inline = _interopRequireDefault(require("./Inline"));
|
|
10
|
+
var _Text = _interopRequireDefault(require("./Text"));
|
|
11
|
+
var _config = _interopRequireDefault(require("../config"));
|
|
12
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
|
|
13
|
+
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
|
|
14
|
+
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n["default"] = e, t && t.set(e, n), n; }
|
|
15
|
+
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
|
|
16
|
+
function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
|
|
17
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
18
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
19
|
+
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
|
|
20
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
|
|
21
|
+
function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
22
|
+
var Toast = function Toast(_ref) {
|
|
23
|
+
var _ref$label = _ref.label,
|
|
24
|
+
label = _ref$label === void 0 ? "Percakapan berhasil dihapus" : _ref$label,
|
|
25
|
+
_ref$right = _ref.right,
|
|
26
|
+
right = _ref$right === void 0 ? null : _ref$right,
|
|
27
|
+
_ref$visible = _ref.visible,
|
|
28
|
+
visible = _ref$visible === void 0 ? true : _ref$visible,
|
|
29
|
+
setVisible = _ref.setVisible,
|
|
30
|
+
_ref$timeout = _ref.timeout,
|
|
31
|
+
timeout = _ref$timeout === void 0 ? 3000 : _ref$timeout,
|
|
32
|
+
containerStyle = _ref.containerStyle,
|
|
33
|
+
style = _ref.style,
|
|
34
|
+
textProps = _ref.textProps;
|
|
35
|
+
(0, _react.useEffect)(function () {
|
|
36
|
+
if (visible) {
|
|
37
|
+
var to = setTimeout(function () {
|
|
38
|
+
setVisible(false);
|
|
39
|
+
}, timeout);
|
|
40
|
+
return function () {
|
|
41
|
+
return clearTimeout(to);
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
}, [visible]);
|
|
45
|
+
return visible ? /*#__PURE__*/_react["default"].createElement(_reactNative.View, {
|
|
46
|
+
style: _objectSpread(_objectSpread({}, styles.container), containerStyle)
|
|
47
|
+
}, /*#__PURE__*/_react["default"].createElement(_Inline["default"], {
|
|
48
|
+
style: styles.area
|
|
49
|
+
}, /*#__PURE__*/_react["default"].createElement(_Text["default"], _extends({
|
|
50
|
+
size: 12,
|
|
51
|
+
style: {
|
|
52
|
+
flexGrow: 1
|
|
53
|
+
},
|
|
54
|
+
color: "#fff"
|
|
55
|
+
}, textProps), label), right)) : null;
|
|
56
|
+
};
|
|
57
|
+
var styles = _reactNative.StyleSheet.create({
|
|
58
|
+
container: {
|
|
59
|
+
position: 'absolute',
|
|
60
|
+
bottom: 0,
|
|
61
|
+
left: 0,
|
|
62
|
+
right: 0,
|
|
63
|
+
padding: 20
|
|
64
|
+
},
|
|
65
|
+
area: {
|
|
66
|
+
backgroundColor: _config["default"].colors.slate[800],
|
|
67
|
+
borderRadius: 999,
|
|
68
|
+
padding: 20,
|
|
69
|
+
paddingHorizontal: 30
|
|
70
|
+
}
|
|
71
|
+
});
|
|
72
|
+
var _default = exports["default"] = Toast;
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import React, { useEffect } from "react";
|
|
2
|
+
import { Pressable, StyleSheet, View } from "react-native";
|
|
3
|
+
import Inline from "./Inline";
|
|
4
|
+
import Text from "./Text";
|
|
5
|
+
import config from "../config";
|
|
6
|
+
|
|
7
|
+
const Toast = ({label = "Percakapan berhasil dihapus", right = null, visible = true, setVisible, timeout = 3000, containerStyle, style, textProps}) => {
|
|
8
|
+
useEffect(() => {
|
|
9
|
+
if (visible) {
|
|
10
|
+
let to = setTimeout(() => {
|
|
11
|
+
setVisible(false)
|
|
12
|
+
}, timeout);
|
|
13
|
+
|
|
14
|
+
return () => clearTimeout(to);
|
|
15
|
+
}
|
|
16
|
+
}, [visible]);
|
|
17
|
+
|
|
18
|
+
return visible ? (
|
|
19
|
+
<View style={{...styles.container, ...containerStyle}}>
|
|
20
|
+
<Inline style={styles.area}>
|
|
21
|
+
<Text size={12} style={{flexGrow: 1}} color="#fff" {...textProps}>{label}</Text>
|
|
22
|
+
{
|
|
23
|
+
right
|
|
24
|
+
}
|
|
25
|
+
</Inline>
|
|
26
|
+
</View>
|
|
27
|
+
) : null
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
const styles = StyleSheet.create({
|
|
31
|
+
container: {
|
|
32
|
+
position: 'absolute',
|
|
33
|
+
bottom: 0,left: 0,right: 0,
|
|
34
|
+
padding: 20,
|
|
35
|
+
},
|
|
36
|
+
area: {
|
|
37
|
+
backgroundColor: config.colors.slate[800],
|
|
38
|
+
borderRadius: 999,
|
|
39
|
+
padding: 20,
|
|
40
|
+
paddingHorizontal: 30,
|
|
41
|
+
}
|
|
42
|
+
})
|
|
43
|
+
|
|
44
|
+
export default Toast
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ripal-ui",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.16",
|
|
4
4
|
"description": "A collection of React elements and components",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"scripts": {
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
},
|
|
10
10
|
"dependencies": {
|
|
11
11
|
"react": "^18.0.0",
|
|
12
|
-
"react-native": "^0.
|
|
12
|
+
"react-native": "^0.74.2"
|
|
13
13
|
},
|
|
14
14
|
"devDependencies": {
|
|
15
15
|
"@babel/cli": "^7.25.6",
|