@tecsinapse/react-native-kit 1.18.6 → 1.21.0

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 (225) hide show
  1. package/CHANGELOG.md +39 -0
  2. package/dist/components/atoms/Avatar/Avatar.js +4 -2
  3. package/dist/components/atoms/Avatar/Avatar.js.map +1 -1
  4. package/dist/components/atoms/Avatar/index.js +9 -4
  5. package/dist/components/atoms/Avatar/index.js.map +1 -1
  6. package/dist/components/atoms/Badge/Badge.js +11 -8
  7. package/dist/components/atoms/Badge/Badge.js.map +1 -1
  8. package/dist/components/atoms/Badge/index.js +15 -5
  9. package/dist/components/atoms/Badge/index.js.map +1 -1
  10. package/dist/components/atoms/BottomNavigator/BottomNavigator.js +13 -10
  11. package/dist/components/atoms/BottomNavigator/BottomNavigator.js.map +1 -1
  12. package/dist/components/atoms/BottomNavigator/Item.js +11 -8
  13. package/dist/components/atoms/BottomNavigator/Item.js.map +1 -1
  14. package/dist/components/atoms/BottomNavigator/index.js +21 -7
  15. package/dist/components/atoms/BottomNavigator/index.js.map +1 -1
  16. package/dist/components/atoms/BottomNavigator/styled.js +64 -45
  17. package/dist/components/atoms/BottomNavigator/styled.js.map +1 -1
  18. package/dist/components/atoms/Button/Button.d.ts +2 -2
  19. package/dist/components/atoms/Button/Button.js +11 -8
  20. package/dist/components/atoms/Button/Button.js.map +1 -1
  21. package/dist/components/atoms/Button/States/Error.js +4 -2
  22. package/dist/components/atoms/Button/States/Error.js.map +1 -1
  23. package/dist/components/atoms/Button/States/Loading.js +4 -2
  24. package/dist/components/atoms/Button/States/Loading.js.map +1 -1
  25. package/dist/components/atoms/Button/States/Success.js +4 -2
  26. package/dist/components/atoms/Button/States/Success.js.map +1 -1
  27. package/dist/components/atoms/Button/States/index.js +21 -8
  28. package/dist/components/atoms/Button/States/index.js.map +1 -1
  29. package/dist/components/atoms/Button/index.js +33 -9
  30. package/dist/components/atoms/Button/index.js.map +1 -1
  31. package/dist/components/atoms/GroupButton/GroupButtonOption.js +4 -2
  32. package/dist/components/atoms/GroupButton/GroupButtonOption.js.map +1 -1
  33. package/dist/components/atoms/GroupButton/index.js +9 -4
  34. package/dist/components/atoms/GroupButton/index.js.map +1 -1
  35. package/dist/components/atoms/Header/Header.js +19 -16
  36. package/dist/components/atoms/Header/Header.js.map +1 -1
  37. package/dist/components/atoms/Header/index.js +15 -5
  38. package/dist/components/atoms/Header/index.js.map +1 -1
  39. package/dist/components/atoms/Header/styled.js +17 -17
  40. package/dist/components/atoms/Header/styled.js.map +1 -1
  41. package/dist/components/atoms/Input/Input.d.ts +3 -2
  42. package/dist/components/atoms/Input/Input.js +31 -28
  43. package/dist/components/atoms/Input/Input.js.map +1 -1
  44. package/dist/components/atoms/Input/index.js +15 -5
  45. package/dist/components/atoms/Input/index.js.map +1 -1
  46. package/dist/components/atoms/Input/styled.js +13 -8
  47. package/dist/components/atoms/Input/styled.js.map +1 -1
  48. package/dist/components/atoms/InputMask/InputMask.js +32 -28
  49. package/dist/components/atoms/InputMask/InputMask.js.map +1 -1
  50. package/dist/components/atoms/InputMask/index.js +15 -5
  51. package/dist/components/atoms/InputMask/index.js.map +1 -1
  52. package/dist/components/atoms/InputMask/styled.js +14 -11
  53. package/dist/components/atoms/InputMask/styled.js.map +1 -1
  54. package/dist/components/atoms/Modal/ModalGroupManager.js +10 -7
  55. package/dist/components/atoms/Modal/ModalGroupManager.js.map +1 -1
  56. package/dist/components/atoms/Modal/ModalLifecycleHandler.d.ts +2 -2
  57. package/dist/components/atoms/Modal/ModalLifecycleHandler.js +31 -25
  58. package/dist/components/atoms/Modal/ModalLifecycleHandler.js.map +1 -1
  59. package/dist/components/atoms/Modal/index.js +45 -8
  60. package/dist/components/atoms/Modal/index.js.map +1 -1
  61. package/dist/components/atoms/Modal/ui/BaseModalView.d.ts +2 -2
  62. package/dist/components/atoms/Modal/ui/BaseModalView.js +19 -16
  63. package/dist/components/atoms/Modal/ui/BaseModalView.js.map +1 -1
  64. package/dist/components/atoms/Modal/ui/styled.js +19 -21
  65. package/dist/components/atoms/Modal/ui/styled.js.map +1 -1
  66. package/dist/components/atoms/Modal/ui/types.d.ts +1 -1
  67. package/dist/components/atoms/Modal/ui/types.js +3 -1
  68. package/dist/components/atoms/Modal/ui/types.js.map +1 -1
  69. package/dist/components/atoms/Modal/useLazyModalManager.d.ts +2 -2
  70. package/dist/components/atoms/Modal/useLazyModalManager.js +4 -2
  71. package/dist/components/atoms/Modal/useLazyModalManager.js.map +1 -1
  72. package/dist/components/atoms/Modal/useModalManager.d.ts +2 -2
  73. package/dist/components/atoms/Modal/useModalManager.js +4 -2
  74. package/dist/components/atoms/Modal/useModalManager.js.map +1 -1
  75. package/dist/components/atoms/Modal/useModalRemoteControl.js +3 -1
  76. package/dist/components/atoms/Modal/useModalRemoteControl.js.map +1 -1
  77. package/dist/components/atoms/Skeleton/Pulse.js +16 -11
  78. package/dist/components/atoms/Skeleton/Pulse.js.map +1 -1
  79. package/dist/components/atoms/Skeleton/Skeleton.js +14 -11
  80. package/dist/components/atoms/Skeleton/Skeleton.js.map +1 -1
  81. package/dist/components/atoms/Skeleton/Wave.js +17 -12
  82. package/dist/components/atoms/Skeleton/Wave.js.map +1 -1
  83. package/dist/components/atoms/Skeleton/animation.js +4 -2
  84. package/dist/components/atoms/Skeleton/animation.js.map +1 -1
  85. package/dist/components/atoms/Skeleton/index.js +15 -5
  86. package/dist/components/atoms/Skeleton/index.js.map +1 -1
  87. package/dist/components/atoms/Skeleton/styled.js +25 -15
  88. package/dist/components/atoms/Skeleton/styled.js.map +1 -1
  89. package/dist/components/atoms/Skeleton/types.js +3 -1
  90. package/dist/components/atoms/Skeleton/types.js.map +1 -1
  91. package/dist/components/atoms/SnappingSlider/SnappingSlider.js +12 -9
  92. package/dist/components/atoms/SnappingSlider/SnappingSlider.js.map +1 -1
  93. package/dist/components/atoms/SnappingSlider/index.js +15 -5
  94. package/dist/components/atoms/SnappingSlider/index.js.map +1 -1
  95. package/dist/components/atoms/Tag/Tag.js +9 -6
  96. package/dist/components/atoms/Tag/Tag.js.map +1 -1
  97. package/dist/components/atoms/Tag/index.js +15 -5
  98. package/dist/components/atoms/Tag/index.js.map +1 -1
  99. package/dist/components/atoms/Text/Text.js +8 -5
  100. package/dist/components/atoms/Text/Text.js.map +1 -1
  101. package/dist/components/atoms/Text/index.js +15 -5
  102. package/dist/components/atoms/Text/index.js.map +1 -1
  103. package/dist/components/atoms/Text/styled.js +17 -13
  104. package/dist/components/atoms/Text/styled.js.map +1 -1
  105. package/dist/components/atoms/TextArea/TextArea.js +31 -28
  106. package/dist/components/atoms/TextArea/TextArea.js.map +1 -1
  107. package/dist/components/atoms/TextArea/index.js +15 -5
  108. package/dist/components/atoms/TextArea/index.js.map +1 -1
  109. package/dist/components/atoms/TextArea/styled.js +3 -1
  110. package/dist/components/atoms/TextArea/styled.js.map +1 -1
  111. package/dist/components/molecules/Calendar/Calendar.js +10 -7
  112. package/dist/components/molecules/Calendar/Calendar.js.map +1 -1
  113. package/dist/components/molecules/Calendar/index.js +9 -4
  114. package/dist/components/molecules/Calendar/index.js.map +1 -1
  115. package/dist/components/molecules/DatePicker/DatePicker.js +17 -13
  116. package/dist/components/molecules/DatePicker/DatePicker.js.map +1 -1
  117. package/dist/components/molecules/DatePicker/index.js +15 -5
  118. package/dist/components/molecules/DatePicker/index.js.map +1 -1
  119. package/dist/components/molecules/DatePicker/styled.js +13 -6
  120. package/dist/components/molecules/DatePicker/styled.js.map +1 -1
  121. package/dist/components/molecules/DateTimePicker/DateTimePicker.js +15 -11
  122. package/dist/components/molecules/DateTimePicker/DateTimePicker.js.map +1 -1
  123. package/dist/components/molecules/DateTimePicker/index.js +15 -5
  124. package/dist/components/molecules/DateTimePicker/index.js.map +1 -1
  125. package/dist/components/molecules/DateTimeSelector/DateTimeSelector.js +10 -7
  126. package/dist/components/molecules/DateTimeSelector/DateTimeSelector.js.map +1 -1
  127. package/dist/components/molecules/DateTimeSelector/index.js +9 -4
  128. package/dist/components/molecules/DateTimeSelector/index.js.map +1 -1
  129. package/dist/components/molecules/Grid/Grid.d.ts +5 -0
  130. package/dist/components/molecules/Grid/Grid.js +63 -0
  131. package/dist/components/molecules/Grid/Grid.js.map +1 -0
  132. package/dist/components/molecules/Grid/Item/Item.d.ts +7 -0
  133. package/dist/components/molecules/Grid/Item/Item.js +81 -0
  134. package/dist/components/molecules/Grid/Item/Item.js.map +1 -0
  135. package/dist/components/molecules/Grid/Item/index.d.ts +1 -0
  136. package/dist/components/molecules/Grid/Item/index.js +24 -0
  137. package/dist/components/molecules/Grid/Item/index.js.map +1 -0
  138. package/dist/components/molecules/Grid/index.d.ts +2 -0
  139. package/dist/components/molecules/Grid/index.js +24 -0
  140. package/dist/components/molecules/Grid/index.js.map +1 -0
  141. package/dist/components/molecules/IconTextButton/IconTextButton.d.ts +6 -0
  142. package/dist/components/molecules/IconTextButton/IconTextButton.js +53 -0
  143. package/dist/components/molecules/IconTextButton/IconTextButton.js.map +1 -0
  144. package/dist/components/molecules/IconTextButton/TextComponent.d.ts +12 -0
  145. package/dist/components/molecules/IconTextButton/TextComponent.js +39 -0
  146. package/dist/components/molecules/IconTextButton/TextComponent.js.map +1 -0
  147. package/dist/components/molecules/IconTextButton/index.d.ts +1 -0
  148. package/dist/components/molecules/IconTextButton/index.js +24 -0
  149. package/dist/components/molecules/IconTextButton/index.js.map +1 -0
  150. package/dist/components/molecules/IconTextButton/styled.d.ts +2 -0
  151. package/dist/components/molecules/IconTextButton/styled.js +48 -0
  152. package/dist/components/molecules/IconTextButton/styled.js.map +1 -0
  153. package/dist/components/molecules/InputPassword/InputPassword.d.ts +3 -2
  154. package/dist/components/molecules/InputPassword/InputPassword.js +9 -6
  155. package/dist/components/molecules/InputPassword/InputPassword.js.map +1 -1
  156. package/dist/components/molecules/InputPassword/index.js +15 -5
  157. package/dist/components/molecules/InputPassword/index.js.map +1 -1
  158. package/dist/components/molecules/LabeledSwitch/LabelComponent.d.ts +13 -0
  159. package/dist/components/molecules/LabeledSwitch/LabelComponent.js +41 -0
  160. package/dist/components/molecules/LabeledSwitch/LabelComponent.js.map +1 -0
  161. package/dist/components/molecules/LabeledSwitch/LabeledSwitch.d.ts +8 -0
  162. package/dist/components/molecules/LabeledSwitch/LabeledSwitch.js +56 -0
  163. package/dist/components/molecules/LabeledSwitch/LabeledSwitch.js.map +1 -0
  164. package/dist/components/molecules/LabeledSwitch/index.d.ts +1 -0
  165. package/dist/components/molecules/LabeledSwitch/index.js +24 -0
  166. package/dist/components/molecules/LabeledSwitch/index.js.map +1 -0
  167. package/dist/components/molecules/LabeledSwitch/styled.d.ts +9 -0
  168. package/dist/components/molecules/LabeledSwitch/styled.js +32 -0
  169. package/dist/components/molecules/LabeledSwitch/styled.js.map +1 -0
  170. package/dist/components/molecules/Select/Modal.d.ts +1 -1
  171. package/dist/components/molecules/Select/Modal.js +45 -39
  172. package/dist/components/molecules/Select/Modal.js.map +1 -1
  173. package/dist/components/molecules/Select/Select.js +39 -36
  174. package/dist/components/molecules/Select/Select.js.map +1 -1
  175. package/dist/components/molecules/Select/index.js +15 -5
  176. package/dist/components/molecules/Select/index.js.map +1 -1
  177. package/dist/components/molecules/Select/styled.js +78 -85
  178. package/dist/components/molecules/Select/styled.js.map +1 -1
  179. package/dist/components/molecules/Snackbar/Snackbar.js +14 -11
  180. package/dist/components/molecules/Snackbar/Snackbar.js.map +1 -1
  181. package/dist/components/molecules/Snackbar/index.js +15 -5
  182. package/dist/components/molecules/Snackbar/index.js.map +1 -1
  183. package/dist/components/molecules/Snackbar/styled.js +18 -9
  184. package/dist/components/molecules/Snackbar/styled.js.map +1 -1
  185. package/dist/index.d.ts +17 -14
  186. package/dist/index.js +379 -116
  187. package/dist/index.js.map +1 -1
  188. package/dist/utils/date.js +3 -1
  189. package/dist/utils/date.js.map +1 -1
  190. package/package.json +5 -5
  191. package/src/components/atoms/BottomNavigator/BottomNavigator.tsx +3 -6
  192. package/src/components/atoms/Button/Button.tsx +19 -13
  193. package/src/components/atoms/Button/index.ts +1 -1
  194. package/src/components/atoms/Input/Input.tsx +8 -6
  195. package/src/components/atoms/Input/styled.ts +1 -3
  196. package/src/components/atoms/Modal/ModalGroupManager.tsx +22 -17
  197. package/src/components/atoms/Modal/ModalLifecycleHandler.ts +139 -126
  198. package/src/components/atoms/Modal/index.ts +7 -7
  199. package/src/components/atoms/Modal/ui/BaseModalView.tsx +150 -127
  200. package/src/components/atoms/Modal/ui/styled.ts +17 -17
  201. package/src/components/atoms/Modal/ui/types.ts +9 -8
  202. package/src/components/atoms/Modal/useLazyModalManager.ts +32 -31
  203. package/src/components/atoms/Modal/useModalManager.ts +28 -26
  204. package/src/components/atoms/Modal/useModalRemoteControl.ts +16 -18
  205. package/src/components/molecules/Calendar/Calendar.tsx +5 -1
  206. package/src/components/molecules/DatePicker/DatePicker.tsx +26 -17
  207. package/src/components/molecules/DatePicker/styled.ts +4 -4
  208. package/src/components/molecules/DateTimePicker/DateTimePicker.tsx +18 -16
  209. package/src/components/molecules/DateTimeSelector/DateTimeSelector.tsx +4 -1
  210. package/src/components/molecules/Grid/Grid.tsx +68 -0
  211. package/src/components/molecules/Grid/Item/Item.tsx +77 -0
  212. package/src/components/molecules/Grid/Item/index.ts +1 -0
  213. package/src/components/molecules/Grid/index.ts +2 -0
  214. package/src/components/molecules/IconTextButton/IconTextButton.tsx +55 -0
  215. package/src/components/molecules/IconTextButton/TextComponent.tsx +43 -0
  216. package/src/components/molecules/IconTextButton/index.ts +4 -0
  217. package/src/components/molecules/IconTextButton/styled.ts +35 -0
  218. package/src/components/molecules/InputPassword/InputPassword.tsx +3 -2
  219. package/src/components/molecules/LabeledSwitch/LabelComponent.tsx +46 -0
  220. package/src/components/molecules/LabeledSwitch/LabeledSwitch.tsx +59 -0
  221. package/src/components/molecules/LabeledSwitch/index.ts +4 -0
  222. package/src/components/molecules/LabeledSwitch/styled.ts +27 -0
  223. package/src/components/molecules/Select/Modal.tsx +88 -66
  224. package/src/components/molecules/Select/Select.tsx +1 -1
  225. package/src/index.ts +38 -29
@@ -1,141 +1,164 @@
1
- import { BoxContent } from "@tecsinapse/react-core";
2
- import React, { FC, useCallback, useEffect, useRef, useState } from "react";
3
- import { Animated, Dimensions, Easing, Keyboard, LayoutChangeEvent, Pressable, StatusBar } from "react-native";
1
+ import { BoxContent } from '@tecsinapse/react-core';
2
+ import React, { FC, useCallback, useEffect, useRef, useState } from 'react';
3
+ import {
4
+ Animated,
5
+ Dimensions,
6
+ Easing,
7
+ Keyboard,
8
+ LayoutChangeEvent,
9
+ Pressable,
10
+ StatusBar,
11
+ } from 'react-native';
4
12
  import { useSafeAreaInsets } from 'react-native-safe-area-context';
5
- import { BackDropView, CloseBar, StyledPressableBackDrop } from "./styled";
6
- import { IBaseModal } from "./types";
13
+ import { BackDropView, CloseBar, StyledPressableBackDrop } from './styled';
14
+ import { IBaseModal } from './types';
7
15
 
8
- const BACKDROP_ALPHA = .65
9
- const INTERPOLATION_STEPS = 10
10
- const INTERPOLATION_DURATION = 195 //ms
11
- const OPACITY_DURATION = 25 //ms
16
+ const BACKDROP_ALPHA = 0.65;
17
+ const INTERPOLATION_STEPS = 10;
18
+ const INTERPOLATION_DURATION = 195; //ms
19
+ const OPACITY_DURATION = 25; //ms
12
20
 
13
21
  export const ModalView: FC<IBaseModal> = ({
14
- children,
15
- visible,
16
- BoxComponent = BoxContent,
17
- frozen,
18
- isLastShown,
19
- showCloseBar = true,
20
- close,
21
- onClose
22
+ children,
23
+ visible,
24
+ BoxComponent = BoxContent,
25
+ frozen,
26
+ isLastShown,
27
+ showCloseBar = true,
28
+ close,
29
+ onClose,
22
30
  }) => {
23
-
24
- const { bottom } = useSafeAreaInsets()
25
- const [ ready, setReady ] = useState(false)
26
- const [ keyboardOpened, setKeyboardOpened ] = useState(0)
27
- const [ boxHeight, setBoxHeight ] = useState(0)
28
- const backgroundCarrier = useRef(new Animated.Value(0)).current
29
- const translationCarrier = useRef(new Animated.Value(0)).current
30
- const opacityCarrier = useRef(new Animated.Value(0)).current
31
- const offset = isLastShown && keyboardOpened > 0 ? 0 : bottom
31
+ const { bottom } = useSafeAreaInsets();
32
+ const [ready, setReady] = useState(false);
33
+ const [keyboardOpened, setKeyboardOpened] = useState(0);
34
+ const [boxHeight, setBoxHeight] = useState(0);
35
+ const backgroundCarrier = useRef(new Animated.Value(0)).current;
36
+ const translationCarrier = useRef(new Animated.Value(0)).current;
37
+ const opacityCarrier = useRef(new Animated.Value(0)).current;
38
+ const offset = isLastShown && keyboardOpened > 0 ? 0 : bottom;
32
39
 
33
- const getKeyboardHeight = (keyboard: number) => {
34
- if (keyboard === 0) return 0
35
-
36
- let wHeight = Math.ceil(Dimensions.get('window').height)
37
- let sHeight = Math.ceil(Dimensions.get('screen').height)
38
- if (wHeight !== sHeight) {
39
- return keyboard + (sHeight - wHeight - (StatusBar.currentHeight || 0))
40
- }
41
- return keyboard
40
+ const getKeyboardHeight = (keyboard: number) => {
41
+ if (keyboard === 0) return 0;
42
+
43
+ const wHeight = Math.ceil(Dimensions.get('window').height);
44
+ const sHeight = Math.ceil(Dimensions.get('screen').height);
45
+ if (wHeight !== sHeight) {
46
+ return keyboard + (sHeight - wHeight - (StatusBar.currentHeight || 0));
42
47
  }
48
+ return keyboard;
49
+ };
50
+
51
+ const show = useCallback(() => {
52
+ Animated.sequence([
53
+ Animated.timing(backgroundCarrier, {
54
+ toValue: INTERPOLATION_STEPS,
55
+ duration: INTERPOLATION_DURATION,
56
+ easing: Easing.out(Easing.circle),
57
+ useNativeDriver: false,
58
+ }),
59
+ Animated.timing(opacityCarrier, {
60
+ toValue: 1,
61
+ duration: OPACITY_DURATION,
62
+ useNativeDriver: true,
63
+ }),
64
+ Animated.timing(translationCarrier, {
65
+ toValue: 0,
66
+ duration: INTERPOLATION_DURATION,
67
+ easing: Easing.out(Easing.circle),
68
+ useNativeDriver: true,
69
+ }),
70
+ ]).start();
71
+ }, []);
43
72
 
44
- const show = useCallback(() => {
45
- Animated.sequence([
46
- Animated.timing(backgroundCarrier, {
47
- toValue: INTERPOLATION_STEPS,
48
- duration: INTERPOLATION_DURATION,
49
- easing: Easing.out(Easing.circle),
50
- useNativeDriver: false
51
- }),
52
- Animated.timing(opacityCarrier, {
53
- toValue: 1,
54
- duration: OPACITY_DURATION,
55
- useNativeDriver: true
56
- }),
57
- Animated.timing(translationCarrier, {
58
- toValue: 0,
59
- duration: INTERPOLATION_DURATION,
60
- easing: Easing.out(Easing.circle),
61
- useNativeDriver: true
62
- })
63
- ]).start()
64
- }, [])
73
+ const hide = useCallback(
74
+ (to: number) => {
75
+ Animated.sequence([
76
+ Animated.parallel([
77
+ Animated.timing(translationCarrier, {
78
+ toValue: to,
79
+ duration: INTERPOLATION_DURATION,
80
+ easing: Easing.out(Easing.circle),
81
+ useNativeDriver: true,
82
+ }),
83
+ Animated.timing(opacityCarrier, {
84
+ toValue: 0,
85
+ duration: INTERPOLATION_DURATION,
86
+ useNativeDriver: true,
87
+ }),
88
+ ]),
89
+ Animated.timing(backgroundCarrier, {
90
+ toValue: 0,
91
+ duration: INTERPOLATION_DURATION,
92
+ easing: Easing.out(Easing.circle),
93
+ useNativeDriver: false,
94
+ }),
95
+ ]).start(onClose);
96
+ },
97
+ [onClose]
98
+ );
65
99
 
66
- const hide = useCallback((to: number) => {
67
- Animated.sequence([
68
- Animated.parallel([
69
- Animated.timing(translationCarrier, {
70
- toValue: to,
71
- duration: INTERPOLATION_DURATION,
72
- easing: Easing.out(Easing.circle),
73
- useNativeDriver: true
74
- }),
75
- Animated.timing(opacityCarrier, {
76
- toValue: 0,
77
- duration: INTERPOLATION_DURATION,
78
- useNativeDriver: true
79
- })
80
- ]),
81
- Animated.timing(backgroundCarrier, {
82
- toValue: 0,
83
- duration: INTERPOLATION_DURATION,
84
- easing: Easing.out(Easing.circle),
85
- useNativeDriver: false
86
- }),
87
- ]).start(onClose)
88
- }, [onClose])
100
+ const backgroundInterpolation = backgroundCarrier.interpolate({
101
+ inputRange: [0, INTERPOLATION_STEPS],
102
+ outputRange: ['rgba(0, 0, 0, 0)', `rgba(0, 0, 0, ${BACKDROP_ALPHA})`],
103
+ });
89
104
 
90
- const backgroundInterpolation = backgroundCarrier.interpolate({
91
- inputRange: [0, INTERPOLATION_STEPS],
92
- outputRange: ['rgba(0, 0, 0, 0)', `rgba(0, 0, 0, ${BACKDROP_ALPHA})`]
93
- })
105
+ const handleBoxLayoutChanges = useCallback(
106
+ (lce: LayoutChangeEvent) => {
107
+ const boxHeightEvent = lce.nativeEvent.layout.height;
108
+ setBoxHeight(boxHeightEvent);
94
109
 
95
- const handleBoxLayoutChanges = useCallback((lce: LayoutChangeEvent) => {
96
- let boxHeightEvent = lce.nativeEvent.layout.height
97
- setBoxHeight(boxHeightEvent)
98
-
99
- if (visible && !ready) {
100
- translationCarrier.setValue(boxHeightEvent)
101
- setReady(true)
102
- }
103
- }, [show, ready, visible, setReady])
110
+ if (visible && !ready) {
111
+ translationCarrier.setValue(boxHeightEvent);
112
+ setReady(true);
113
+ }
114
+ },
115
+ [show, ready, visible, setReady]
116
+ );
104
117
 
105
- useEffect(() => {
106
- if (visible && ready) requestAnimationFrame(() => show())
107
- if (!visible && !ready) {
108
- Keyboard.dismiss()
109
- requestAnimationFrame(() => hide(boxHeight))
110
- }
111
- if (!visible && ready) setReady(false)
112
- }, [ready, visible])
118
+ useEffect(() => {
119
+ if (visible && ready) requestAnimationFrame(() => show());
120
+ if (!visible && !ready) {
121
+ Keyboard.dismiss();
122
+ requestAnimationFrame(() => hide(boxHeight));
123
+ }
124
+ if (!visible && ready) setReady(false);
125
+ }, [ready, visible]);
113
126
 
114
- useEffect(() => {
115
- const showEvent = Keyboard.addListener('keyboardDidShow', (e) => setKeyboardOpened(e.endCoordinates.height))
116
- const hideEvent = Keyboard.addListener('keyboardDidHide', () => setKeyboardOpened(0))
117
- return () => {
118
- showEvent.remove()
119
- hideEvent.remove()
120
- }
121
- }, [])
127
+ useEffect(() => {
128
+ const showEvent = Keyboard.addListener('keyboardDidShow', e =>
129
+ setKeyboardOpened(e.endCoordinates.height)
130
+ );
131
+ const hideEvent = Keyboard.addListener('keyboardDidHide', () =>
132
+ setKeyboardOpened(0)
133
+ );
134
+ return () => {
135
+ showEvent.remove();
136
+ hideEvent.remove();
137
+ };
138
+ }, []);
122
139
 
123
- return (
124
- <StyledPressableBackDrop onPress={!frozen ? close : undefined}>
125
- <BackDropView style={{ backgroundColor: backgroundInterpolation }}>
126
- <Animated.View style={{
127
- paddingBottom: isLastShown ? getKeyboardHeight(keyboardOpened) : 0,
128
- opacity: opacityCarrier,
129
- transform: [{ translateY: translationCarrier }]
130
- }}>
131
- <Pressable>
132
- <BoxComponent onLayout={handleBoxLayoutChanges} style={{ paddingBottom: offset }} variant="bottom">
133
- {showCloseBar && <CloseBar/>}
134
- {children}
135
- </BoxComponent>
136
- </Pressable>
137
- </Animated.View>
138
- </BackDropView>
139
- </StyledPressableBackDrop>
140
- )
141
- }
140
+ return (
141
+ <StyledPressableBackDrop onPress={!frozen ? close : undefined}>
142
+ <BackDropView style={{ backgroundColor: backgroundInterpolation }}>
143
+ <Animated.View
144
+ style={{
145
+ paddingBottom: isLastShown ? getKeyboardHeight(keyboardOpened) : 0,
146
+ opacity: opacityCarrier,
147
+ transform: [{ translateY: translationCarrier }],
148
+ }}
149
+ >
150
+ <Pressable>
151
+ <BoxComponent
152
+ onLayout={handleBoxLayoutChanges}
153
+ style={{ paddingBottom: offset }}
154
+ variant="bottom"
155
+ >
156
+ {showCloseBar && <CloseBar />}
157
+ {children}
158
+ </BoxComponent>
159
+ </Pressable>
160
+ </Animated.View>
161
+ </BackDropView>
162
+ </StyledPressableBackDrop>
163
+ );
164
+ };
@@ -1,23 +1,23 @@
1
- import styled from "@emotion/native";
2
- import { RFValueStr, StyleProps } from "@tecsinapse/react-core";
3
- import { Animated } from "react-native";
1
+ import styled from '@emotion/native';
2
+ import { RFValueStr, StyleProps } from '@tecsinapse/react-core';
3
+ import { Animated } from 'react-native';
4
4
 
5
5
  export const StyledPressableBackDrop = styled.Pressable<Partial<StyleProps>>`
6
- flex: 1;
7
- position: absolute;
8
- width: 100%;
9
- height: 100%;
10
- `
6
+ flex: 1;
7
+ position: absolute;
8
+ width: 100%;
9
+ height: 100%;
10
+ `;
11
11
 
12
12
  export const BackDropView = styled(Animated.View)<Partial<StyleProps>>`
13
- justify-content: flex-end;
14
- flex: 1;
15
- `
13
+ justify-content: flex-end;
14
+ flex: 1;
15
+ `;
16
16
 
17
17
  export const CloseBar = styled.View<Partial<StyleProps>>`
18
- background-color: ${({ theme }) => theme.color.secondary.light};
19
- border-radius: ${RFValueStr('10px')};
20
- margin: ${`${RFValueStr('5px')} auto`};
21
- width: ${RFValueStr('42px')};
22
- height: ${RFValueStr('5px')};
23
- `
18
+ background-color: ${({ theme }) => theme.color.secondary.light};
19
+ border-radius: ${RFValueStr('10px')};
20
+ margin: ${`${RFValueStr('5px')} auto`};
21
+ width: ${RFValueStr('42px')};
22
+ height: ${RFValueStr('5px')};
23
+ `;
@@ -1,13 +1,14 @@
1
-
2
1
  /**
3
2
  * Defines a modal interface and allows you implement your own modal component.
4
3
  */
4
+ import React from 'react';
5
+
5
6
  export interface IBaseModal {
6
- visible?: boolean
7
- BoxComponent?: React.FC<any>
8
- frozen?: boolean
9
- isLastShown?: boolean
10
- showCloseBar?: boolean
11
- close?: () => void
12
- onClose?: () => void
7
+ visible?: boolean;
8
+ BoxComponent?: React.FC<any>;
9
+ frozen?: boolean;
10
+ isLastShown?: boolean;
11
+ showCloseBar?: boolean;
12
+ close?: () => void;
13
+ onClose?: () => void;
13
14
  }
@@ -1,43 +1,44 @@
1
- import { ReactElement, useCallback, useEffect, useState } from "react"
2
- import { v4 as uuidv4 } from 'uuid'
3
- import { modalLifecycle } from "./ModalGroupManager"
4
- import { IBaseModal } from "./ui/types"
1
+ import { ReactElement, useCallback, useEffect, useState } from 'react';
2
+ import { v4 as uuidv4 } from 'uuid';
3
+ import { modalLifecycle } from './ModalGroupManager';
4
+ import { IBaseModal } from './ui/types';
5
5
 
6
6
  /**
7
7
  * Use this hook to tell the modal lifecycle handler that you want to add
8
- * a new modal component.
9
- *
10
- * @param id
11
- * @param modal
8
+ * a new modal component.
9
+ *
12
10
  * @returns
11
+ * @param modalId
13
12
  */
14
13
  export const useLazyModalManager = (modalId?: string) => {
14
+ const [id] = useState(modalId ?? uuidv4());
15
15
 
16
- const [id] = useState(modalId ?? uuidv4())
16
+ const requestUpdate = useCallback(() => modalLifecycle.update(), []);
17
17
 
18
- const requestUpdate = useCallback(() => modalLifecycle.update(), [])
18
+ const sync = useCallback(
19
+ (modal: ReactElement<IBaseModal>) => {
20
+ modalLifecycle.sync(id, () => modal);
21
+ return null;
22
+ },
23
+ [id]
24
+ );
19
25
 
20
- const sync = useCallback((modal: ReactElement<IBaseModal>) => {
21
- modalLifecycle.sync(id, () => modal)
22
- return null
23
- }, [id])
26
+ const show = useCallback(() => {
27
+ modalLifecycle.show(id);
28
+ }, [id]);
24
29
 
25
- const show = useCallback(() => {
26
- modalLifecycle.show(id)
27
- }, [id])
30
+ const close = useCallback(() => {
31
+ modalLifecycle.close(id);
32
+ }, [id]);
28
33
 
29
- const close = useCallback(() => {
30
- modalLifecycle.close(id)
31
- }, [id])
32
-
33
- useEffect(() => {
34
- return () => modalLifecycle.destroy(id)
35
- }, [])
34
+ useEffect(() => {
35
+ return () => modalLifecycle.destroy(id);
36
+ }, []);
36
37
 
37
- return {
38
- requestUpdate,
39
- sync,
40
- show,
41
- close
42
- }
43
- }
38
+ return {
39
+ requestUpdate,
40
+ sync,
41
+ show,
42
+ close,
43
+ };
44
+ };
@@ -1,35 +1,37 @@
1
- import { ReactElement, useCallback, useEffect, useState } from "react"
2
- import { v4 as uuidv4 } from 'uuid'
3
- import { modalLifecycle } from "./ModalGroupManager"
4
- import { IBaseModal } from "./ui/types"
1
+ import { ReactElement, useCallback, useEffect, useState } from 'react';
2
+ import { v4 as uuidv4 } from 'uuid';
3
+ import { modalLifecycle } from './ModalGroupManager';
4
+ import { IBaseModal } from './ui/types';
5
5
 
6
6
  /**
7
7
  * Use this hook to tell the modal lifecycle handler that you want to add
8
- * a new modal component.
9
- *
10
- * @param id
11
- * @param modal
8
+ * a new modal component.
9
+ *
10
+ * @param id
11
+ * @param modal
12
12
  * @returns
13
13
  */
14
- export const useModalManager = (modal: () => ReactElement<IBaseModal>, modalId?: string) => {
14
+ export const useModalManager = (
15
+ modal: () => ReactElement<IBaseModal>,
16
+ modalId?: string
17
+ ) => {
18
+ const [id] = useState(modalId ?? uuidv4());
19
+ modalLifecycle.sync(id, modal);
15
20
 
16
- const [id] = useState(modalId ?? uuidv4())
17
- modalLifecycle.sync(id, modal)
21
+ const show = useCallback(() => {
22
+ modalLifecycle.show(id);
23
+ }, [id]);
18
24
 
19
- const show = useCallback(() => {
20
- modalLifecycle.show(id)
21
- }, [id])
25
+ const close = useCallback(() => {
26
+ modalLifecycle.close(id);
27
+ }, [id]);
22
28
 
23
- const close = useCallback(() => {
24
- modalLifecycle.close(id)
25
- }, [id])
26
-
27
- useEffect(() => {
28
- return () => modalLifecycle.destroy(id)
29
- }, [])
29
+ useEffect(() => {
30
+ return () => modalLifecycle.destroy(id);
31
+ }, []);
30
32
 
31
- return {
32
- show,
33
- close
34
- }
35
- }
33
+ return {
34
+ show,
35
+ close,
36
+ };
37
+ };
@@ -1,26 +1,24 @@
1
- import { useCallback } from "react"
2
- import { modalLifecycle } from "./ModalGroupManager"
1
+ import { useCallback } from 'react';
2
+ import { modalLifecycle } from './ModalGroupManager';
3
3
 
4
4
  /**
5
5
  * Use it to control a specific modal wherever it's.
6
6
  * Just provide an id of a specific instance.
7
- *
8
- * @param modalId
9
- * @returns
7
+ *
8
+ * @param modalId
9
+ * @returns
10
10
  */
11
11
  export const useModalRemoteControl = (modalId: string) => {
12
+ const show = useCallback(() => {
13
+ modalLifecycle.show(modalId);
14
+ }, [modalId]);
12
15
 
13
- const show = useCallback(() => {
14
- modalLifecycle.show(modalId)
15
- }, [modalId])
16
+ const close = useCallback(() => {
17
+ modalLifecycle.close(modalId);
18
+ }, [modalId]);
16
19
 
17
- const close = useCallback(() => {
18
- modalLifecycle.close(modalId)
19
- }, [modalId])
20
-
21
- return {
22
- show,
23
- close
24
- }
25
-
26
- }
20
+ return {
21
+ show,
22
+ close,
23
+ };
24
+ };
@@ -1,4 +1,8 @@
1
- import { Calendar as CalendarCore, CalendarProps, SelectionType } from '@tecsinapse/react-core';
1
+ import {
2
+ Calendar as CalendarCore,
3
+ CalendarProps,
4
+ SelectionType,
5
+ } from '@tecsinapse/react-core';
2
6
  import React from 'react';
3
7
  import { getLocale } from '../../../utils/date';
4
8
  import { Text } from '../../atoms/Text';
@@ -1,5 +1,8 @@
1
1
  import {
2
- DatePicker as DatePickerCore, DatePickerProps, SelectionType, Value
2
+ DatePicker as DatePickerCore,
3
+ DatePickerProps,
4
+ SelectionType,
5
+ Value,
3
6
  } from '@tecsinapse/react-core';
4
7
  import React, { FC } from 'react';
5
8
  import { getLocale } from '../../../utils/date';
@@ -8,17 +11,26 @@ import { Text } from '../../atoms/Text';
8
11
  import { Calendar } from '../Calendar';
9
12
  import { CalendarBoxContent } from './styled';
10
13
 
11
- export type NativeDatePickerProps<T extends SelectionType> = Omit<DatePickerProps<T>, 'CalendarComponent' | 'renderCalendar' | 'requestCloseCalendar' | 'requestShowCalendar'>
14
+ export type NativeDatePickerProps<T extends SelectionType> = Omit<
15
+ DatePickerProps<T>,
16
+ | 'CalendarComponent'
17
+ | 'renderCalendar'
18
+ | 'requestCloseCalendar'
19
+ | 'requestShowCalendar'
20
+ >;
12
21
 
13
- export const DatePicker = <T extends SelectionType>({ locale, onChange, ...rest }: NativeDatePickerProps<T>): JSX.Element => {
22
+ export const DatePicker = <T extends SelectionType>({
23
+ locale,
24
+ onChange,
25
+ ...rest
26
+ }: NativeDatePickerProps<T>): JSX.Element => {
27
+ const modal = useLazyModalManager();
14
28
 
15
- const modal = useLazyModalManager()
16
-
17
29
  const handleChange = (value?: Value<T>) => {
18
- onChange?.(value)
19
- modal.requestUpdate()
20
- }
21
-
30
+ onChange?.(value);
31
+ modal.requestUpdate();
32
+ };
33
+
22
34
  return (
23
35
  <DatePickerCore
24
36
  {...rest}
@@ -28,14 +40,11 @@ export const DatePicker = <T extends SelectionType>({ locale, onChange, ...rest
28
40
  onChange={handleChange}
29
41
  requestShowCalendar={() => modal.show()}
30
42
  requestCloseCalendar={() => modal.close()}
31
- renderCalendar={(calendar, blur) => modal.sync(
32
- <NativeModal onClose={blur}>
33
- {calendar}
34
- </NativeModal>
35
- )}
43
+ renderCalendar={(calendar, blur) =>
44
+ modal.sync(<NativeModal onClose={blur}>{calendar}</NativeModal>)
45
+ }
36
46
  />
37
47
  );
38
-
39
48
  };
40
49
 
41
50
  const NativeModal: FC<IBaseModal> = ({ children, ...others }) => {
@@ -43,5 +52,5 @@ const NativeModal: FC<IBaseModal> = ({ children, ...others }) => {
43
52
  <ModalView BoxComponent={CalendarBoxContent} {...others}>
44
53
  {children}
45
54
  </ModalView>
46
- )
47
- }
55
+ );
56
+ };
@@ -1,6 +1,6 @@
1
- import styled from "@emotion/native";
2
- import { BoxContent, StyleProps } from "@tecsinapse/react-core";
1
+ import styled from '@emotion/native';
2
+ import { BoxContent, StyleProps } from '@tecsinapse/react-core';
3
3
 
4
4
  export const CalendarBoxContent = styled(BoxContent)<Partial<StyleProps>>`
5
- background-color: ${({ theme }) => theme.color.secondary.xlight};
6
- `
5
+ background-color: ${({ theme }) => theme.color.secondary.xlight};
6
+ `;