@herca/rn-kit 0.1.63 → 0.1.64

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.
@@ -1,9 +1,8 @@
1
1
  "use strict";
2
2
 
3
+ import { Color, Icon } from '@herca/rn-kit';
3
4
  import React, { useState, useEffect, useCallback } from 'react';
4
5
  import { View, StyleSheet, Modal, TouchableOpacity, Animated, SafeAreaView, Platform } from 'react-native';
5
- import Icon from "../Icon/index.js";
6
- import Color from "../Color/Color.js";
7
6
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
8
7
  const ModalPopUp = ({
9
8
  isOpen,
@@ -17,10 +16,9 @@ const ModalPopUp = ({
17
16
  containerStyle,
18
17
  modalStyle
19
18
  }) => {
20
- const [isVisible, setIsVisible] = useState(isOpen);
19
+ const [isVisible, setIsVisible] = useState(isOpen ?? false);
21
20
  const scaleAnim = useState(() => new Animated.Value(0))[0];
22
- const showModal = useCallback(() => {
23
- setIsVisible(true);
21
+ const animateIn = useCallback(() => {
24
22
  Animated.spring(scaleAnim, {
25
23
  toValue: 1,
26
24
  useNativeDriver: true,
@@ -28,23 +26,28 @@ const ModalPopUp = ({
28
26
  stiffness: 200
29
27
  }).start();
30
28
  }, [scaleAnim]);
31
- const hideModal = useCallback(() => {
32
- setIsVisible(false);
33
- onRequestClose?.();
34
- onClose?.();
35
- }, [onClose, onRequestClose]);
36
- const handleBackdropPress = useCallback(() => {
37
- if (closable) {
38
- hideModal?.();
39
- }
40
- }, [closable, hideModal]);
41
29
  useEffect(() => {
42
30
  if (isOpen) {
43
- showModal();
31
+ setIsVisible(true);
32
+ animateIn();
33
+ } else if (isVisible) {
34
+ setIsVisible(false);
35
+ onRequestClose?.();
36
+ onClose?.();
44
37
  }
45
-
46
- // eslint-disable-next-line react-hooks/exhaustive-deps
47
- }, [isOpen]);
38
+ }, [isOpen, isVisible, animateIn, onRequestClose, onClose]);
39
+ const userClose = useCallback(() => {
40
+ if (!closable) return;
41
+ setIsVisible(false);
42
+ onRequestClose?.();
43
+ onClose?.();
44
+ }, [closable, onClose, onRequestClose]);
45
+ const handleBackdropPress = () => {
46
+ userClose();
47
+ };
48
+ const handleRequestClose = () => {
49
+ userClose();
50
+ };
48
51
  const modalContentStyle = StyleSheet.flatten([{
49
52
  transform: [{
50
53
  scale: scaleAnim
@@ -56,7 +59,7 @@ const ModalPopUp = ({
56
59
  return /*#__PURE__*/_jsx(Modal, {
57
60
  transparent: true,
58
61
  visible: isVisible,
59
- onRequestClose: handleBackdropPress,
62
+ onRequestClose: handleRequestClose,
60
63
  statusBarTranslucent: true,
61
64
  children: /*#__PURE__*/_jsxs(View, {
62
65
  style: [styles.modalContainer, containerStyle],
@@ -69,7 +72,7 @@ const ModalPopUp = ({
69
72
  children: [closable && /*#__PURE__*/_jsx(View, {
70
73
  style: styles.closeButtonContainer,
71
74
  children: /*#__PURE__*/_jsx(TouchableOpacity, {
72
- onPress: hideModal,
75
+ onPress: userClose,
73
76
  style: styles.closeButton,
74
77
  children: /*#__PURE__*/_jsx(View, {
75
78
  style: styles.iconButtonClose,
@@ -134,7 +137,6 @@ const styles = StyleSheet.create({
134
137
  justifyContent: 'center',
135
138
  alignContent: 'center',
136
139
  alignItems: 'center',
137
- top: 'auto',
138
140
  flex: 1
139
141
  },
140
142
  closeButton: {
@@ -1 +1 @@
1
- {"version":3,"names":["React","useState","useEffect","useCallback","View","StyleSheet","Modal","TouchableOpacity","Animated","SafeAreaView","Platform","Icon","Color","jsx","_jsx","jsxs","_jsxs","ModalPopUp","isOpen","onClose","children","backdrop","closable","onRequestClose","bgColor","width","containerStyle","modalStyle","isVisible","setIsVisible","scaleAnim","Value","showModal","spring","toValue","useNativeDriver","damping","stiffness","start","hideModal","handleBackdropPress","modalContentStyle","flatten","transform","scale","backgroundColor","maxHeight","transparent","visible","statusBarTranslucent","style","styles","modalContainer","backdropTouch","activeOpacity","onPress","modalContent","closeButtonContainer","closeButton","iconButtonClose","name","size","color","gray","contentContainer","create","flex","justifyContent","alignItems","position","top","left","right","bottom","height","borderRadius","overflow","select","ios","shadowColor","shadowOffset","shadowOpacity","shadowRadius","android","elevation","zIndex","alignContent","padding"],"sourceRoot":"../../../src","sources":["Modal/Modal.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["Color","Icon","React","useState","useEffect","useCallback","View","StyleSheet","Modal","TouchableOpacity","Animated","SafeAreaView","Platform","jsx","_jsx","jsxs","_jsxs","ModalPopUp","isOpen","onClose","children","backdrop","closable","onRequestClose","bgColor","width","containerStyle","modalStyle","isVisible","setIsVisible","scaleAnim","Value","animateIn","spring","toValue","useNativeDriver","damping","stiffness","start","userClose","handleBackdropPress","handleRequestClose","modalContentStyle","flatten","transform","scale","backgroundColor","maxHeight","transparent","visible","statusBarTranslucent","style","styles","modalContainer","backdropTouch","activeOpacity","onPress","modalContent","closeButtonContainer","closeButton","iconButtonClose","name","size","color","gray","contentContainer","create","flex","justifyContent","alignItems","position","top","left","right","bottom","height","borderRadius","overflow","select","ios","shadowColor","shadowOffset","shadowOpacity","shadowRadius","android","elevation","zIndex","alignContent","padding"],"sourceRoot":"../../../src","sources":["Modal/Modal.tsx"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"Modal.d.ts","sourceRoot":"","sources":["../../../../src/Modal/Modal.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA2C,MAAM,OAAO,CAAC;AAChE,OAAO,EAML,KAAK,cAAc,EAGnB,KAAK,SAAS,EACf,MAAM,cAAc,CAAC;AAItB,UAAU,eAAe;IACvB,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IACrC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,IAAI,CAAC;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,cAAc,CAAC;IACvB,MAAM,CAAC,EAAE,cAAc,CAAC;IACxB,cAAc,CAAC,EAAE,SAAS,CAAC;IAC3B,UAAU,CAAC,EAAE,SAAS,CAAC;CACxB;AAED,QAAA,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,CAsFzC,CAAC;AA8DF,eAAe,UAAU,CAAC"}
1
+ {"version":3,"file":"Modal.d.ts","sourceRoot":"","sources":["../../../../src/Modal/Modal.tsx"],"names":[],"mappings":"AACA,OAAO,KAA2C,MAAM,OAAO,CAAC;AAChE,OAAO,EAML,KAAK,cAAc,EAGnB,KAAK,SAAS,EACf,MAAM,cAAc,CAAC;AAEtB,UAAU,eAAe;IACvB,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IACrC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,IAAI,CAAC;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,cAAc,CAAC;IACvB,MAAM,CAAC,EAAE,cAAc,CAAC;IACxB,cAAc,CAAC,EAAE,SAAS,CAAC;IAC3B,UAAU,CAAC,EAAE,SAAS,CAAC;CACxB;AAED,QAAA,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,CA4FzC,CAAC;AA0CF,eAAe,UAAU,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@herca/rn-kit",
3
- "version": "0.1.63",
3
+ "version": "0.1.64",
4
4
  "description": "React Native UI Kit",
5
5
  "main": "./lib/module/index.js",
6
6
  "types": "./lib/typescript/src/index.d.ts",
@@ -1,3 +1,4 @@
1
+ import { Color, Icon } from '@herca/rn-kit';
1
2
  import React, { useState, useEffect, useCallback } from 'react';
2
3
  import {
3
4
  View,
@@ -10,8 +11,6 @@ import {
10
11
  Platform,
11
12
  type ViewStyle,
12
13
  } from 'react-native';
13
- import Icon from '../Icon';
14
- import Color from '../Color/Color';
15
14
 
16
15
  interface ModalPopUpProps {
17
16
  isOpen: boolean;
@@ -39,11 +38,10 @@ const ModalPopUp: React.FC<ModalPopUpProps> = ({
39
38
  containerStyle,
40
39
  modalStyle,
41
40
  }) => {
42
- const [isVisible, setIsVisible] = useState(isOpen);
41
+ const [isVisible, setIsVisible] = useState(isOpen ?? false);
43
42
  const scaleAnim = useState(() => new Animated.Value(0))[0];
44
43
 
45
- const showModal = useCallback(() => {
46
- setIsVisible(true);
44
+ const animateIn = useCallback(() => {
47
45
  Animated.spring(scaleAnim, {
48
46
  toValue: 1,
49
47
  useNativeDriver: true,
@@ -52,24 +50,31 @@ const ModalPopUp: React.FC<ModalPopUpProps> = ({
52
50
  }).start();
53
51
  }, [scaleAnim]);
54
52
 
55
- const hideModal = useCallback(() => {
53
+ useEffect(() => {
54
+ if (isOpen) {
55
+ setIsVisible(true);
56
+ animateIn();
57
+ } else if (isVisible) {
58
+ setIsVisible(false);
59
+ onRequestClose?.();
60
+ onClose?.();
61
+ }
62
+ }, [isOpen, isVisible, animateIn, onRequestClose, onClose]);
63
+
64
+ const userClose = useCallback(() => {
65
+ if (!closable) return;
56
66
  setIsVisible(false);
57
67
  onRequestClose?.();
58
68
  onClose?.();
59
- }, [onClose, onRequestClose]);
69
+ }, [closable, onClose, onRequestClose]);
60
70
 
61
- const handleBackdropPress = useCallback(() => {
62
- if (closable) {
63
- hideModal?.();
64
- }
65
- }, [closable, hideModal]);
66
- useEffect(() => {
67
- if (isOpen) {
68
- showModal();
69
- }
71
+ const handleBackdropPress = () => {
72
+ userClose();
73
+ };
70
74
 
71
- // eslint-disable-next-line react-hooks/exhaustive-deps
72
- }, [isOpen]);
75
+ const handleRequestClose = () => {
76
+ userClose();
77
+ };
73
78
 
74
79
  const modalContentStyle = StyleSheet.flatten([
75
80
  {
@@ -85,7 +90,7 @@ const ModalPopUp: React.FC<ModalPopUpProps> = ({
85
90
  <Modal
86
91
  transparent
87
92
  visible={isVisible}
88
- onRequestClose={handleBackdropPress}
93
+ onRequestClose={handleRequestClose}
89
94
  statusBarTranslucent
90
95
  >
91
96
  <View style={[styles.modalContainer, containerStyle]}>
@@ -99,7 +104,7 @@ const ModalPopUp: React.FC<ModalPopUpProps> = ({
99
104
  <Animated.View style={[styles.modalContent, modalContentStyle]}>
100
105
  {closable && (
101
106
  <View style={styles.closeButtonContainer}>
102
- <TouchableOpacity onPress={hideModal} style={styles.closeButton}>
107
+ <TouchableOpacity onPress={userClose} style={styles.closeButton}>
103
108
  <View style={styles.iconButtonClose}>
104
109
  <Icon name="Times" size={13} color={Color.gray[900]} />
105
110
  </View>
@@ -116,11 +121,7 @@ const ModalPopUp: React.FC<ModalPopUpProps> = ({
116
121
  };
117
122
 
118
123
  const styles = StyleSheet.create({
119
- modalContainer: {
120
- flex: 1,
121
- justifyContent: 'center',
122
- alignItems: 'center',
123
- },
124
+ modalContainer: { flex: 1, justifyContent: 'center', alignItems: 'center' },
124
125
  backdrop: {
125
126
  position: 'absolute',
126
127
  top: 0,
@@ -129,39 +130,25 @@ const styles = StyleSheet.create({
129
130
  bottom: 0,
130
131
  backgroundColor: 'rgba(0, 0, 0, 0.5)',
131
132
  },
132
- backdropTouch: {
133
- width: '100%',
134
- height: '100%',
135
- },
133
+ backdropTouch: { width: '100%', height: '100%' },
136
134
  modalContent: {
137
135
  borderRadius: 16,
138
136
  overflow: 'visible',
139
137
  ...Platform.select({
140
138
  ios: {
141
139
  shadowColor: '#000',
142
- shadowOffset: {
143
- width: 0,
144
- height: 2,
145
- },
140
+ shadowOffset: { width: 0, height: 2 },
146
141
  shadowOpacity: 0.25,
147
142
  shadowRadius: 4,
148
143
  },
149
- android: {
150
- elevation: 5,
151
- },
144
+ android: { elevation: 5 },
152
145
  }),
153
146
  },
154
- closeButtonContainer: {
155
- position: 'absolute',
156
- top: 10,
157
- right: 10,
158
- zIndex: 1,
159
- },
147
+ closeButtonContainer: { position: 'absolute', top: 10, right: 10, zIndex: 1 },
160
148
  iconButtonClose: {
161
149
  justifyContent: 'center',
162
150
  alignContent: 'center',
163
151
  alignItems: 'center',
164
- top: 'auto',
165
152
  flex: 1,
166
153
  },
167
154
  closeButton: {
@@ -170,9 +157,7 @@ const styles = StyleSheet.create({
170
157
  borderRadius: 12,
171
158
  backgroundColor: '#ccc',
172
159
  },
173
- contentContainer: {
174
- padding: 16,
175
- },
160
+ contentContainer: { padding: 16 },
176
161
  });
177
162
 
178
163
  export default ModalPopUp;