@codeleap/mobile 1.4.4 → 1.5.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (191) hide show
  1. package/.eslintignore +1 -1
  2. package/.eslintrc.js +3 -3
  3. package/.vscode/settings.json +10 -10
  4. package/CodeLeap-Mobile-Packages.code-workspace +7 -7
  5. package/dist/components/ActivityIndicator.d.ts +13 -13
  6. package/dist/components/ActivityIndicator.js +54 -50
  7. package/dist/components/ActivityIndicator.js.map +1 -1
  8. package/dist/components/Animated.d.ts +15 -15
  9. package/dist/components/Animated.js +58 -54
  10. package/dist/components/Animated.js.map +1 -1
  11. package/dist/components/Button.d.ts +125 -119
  12. package/dist/components/Button.js +82 -77
  13. package/dist/components/Button.js.map +1 -1
  14. package/dist/components/Checkbox/index.d.ts +14 -14
  15. package/dist/components/Checkbox/index.js +77 -73
  16. package/dist/components/Checkbox/index.js.map +1 -1
  17. package/dist/components/Checkbox/styles.d.ts +55 -52
  18. package/dist/components/Checkbox/styles.js +48 -48
  19. package/dist/components/Checkbox/styles.js.map +0 -0
  20. package/dist/components/ContentView.d.ts +10 -10
  21. package/dist/components/ContentView.js +50 -50
  22. package/dist/components/ContentView.js.map +0 -0
  23. package/dist/components/FileInput.d.ts +26 -26
  24. package/dist/components/FileInput.js +178 -174
  25. package/dist/components/FileInput.js.map +1 -1
  26. package/dist/components/Icon.d.ts +12 -12
  27. package/dist/components/Icon.js +70 -66
  28. package/dist/components/Icon.js.map +1 -1
  29. package/dist/components/Image.d.ts +18 -18
  30. package/dist/components/Image.js +57 -53
  31. package/dist/components/Image.js.map +1 -1
  32. package/dist/components/List.d.ts +11 -11
  33. package/dist/components/List.js +80 -76
  34. package/dist/components/List.js.map +1 -1
  35. package/dist/components/Modal/index.d.ts +25 -25
  36. package/dist/components/Modal/index.js +112 -108
  37. package/dist/components/Modal/index.js.map +1 -1
  38. package/dist/components/Modal/styles.d.ts +69 -66
  39. package/dist/components/Modal/styles.js +64 -64
  40. package/dist/components/Modal/styles.js.map +0 -0
  41. package/dist/components/Navigation/Navigation.d.ts +3 -3
  42. package/dist/components/Navigation/Navigation.js +87 -83
  43. package/dist/components/Navigation/Navigation.js.map +1 -1
  44. package/dist/components/Navigation/constants.d.ts +5 -5
  45. package/dist/components/Navigation/constants.js +10 -10
  46. package/dist/components/Navigation/constants.js.map +0 -0
  47. package/dist/components/Navigation/index.d.ts +3 -3
  48. package/dist/components/Navigation/index.js +19 -15
  49. package/dist/components/Navigation/index.js.map +1 -1
  50. package/dist/components/Navigation/types.d.ts +26 -26
  51. package/dist/components/Navigation/types.js +7 -7
  52. package/dist/components/Navigation/types.js.map +0 -0
  53. package/dist/components/Navigation/utils.d.ts +3 -3
  54. package/dist/components/Navigation/utils.js +69 -69
  55. package/dist/components/Navigation/utils.js.map +0 -0
  56. package/dist/components/Overlay.d.ts +16 -16
  57. package/dist/components/Overlay.js +69 -65
  58. package/dist/components/Overlay.js.map +1 -1
  59. package/dist/components/Pager/index.d.ts +19 -19
  60. package/dist/components/Pager/index.js +167 -163
  61. package/dist/components/Pager/index.js.map +1 -1
  62. package/dist/components/Pager/styles.d.ts +54 -51
  63. package/dist/components/Pager/styles.js +43 -43
  64. package/dist/components/Pager/styles.js.map +0 -0
  65. package/dist/components/RadioInput/index.d.ts +26 -26
  66. package/dist/components/RadioInput/index.js +72 -68
  67. package/dist/components/RadioInput/index.js.map +1 -1
  68. package/dist/components/RadioInput/styles.d.ts +57 -54
  69. package/dist/components/RadioInput/styles.js +44 -44
  70. package/dist/components/RadioInput/styles.js.map +0 -0
  71. package/dist/components/Scroll.d.ts +11 -11
  72. package/dist/components/Scroll.js +79 -75
  73. package/dist/components/Scroll.js.map +1 -1
  74. package/dist/components/Sections.d.ts +11 -11
  75. package/dist/components/Sections.js +80 -76
  76. package/dist/components/Sections.js.map +1 -1
  77. package/dist/components/Select/index.d.ts +5 -5
  78. package/dist/components/Select/index.js +148 -144
  79. package/dist/components/Select/index.js.map +1 -1
  80. package/dist/components/Select/styles.d.ts +9 -9
  81. package/dist/components/Select/styles.js +56 -56
  82. package/dist/components/Select/styles.js.map +0 -0
  83. package/dist/components/Select/types.d.ts +33 -33
  84. package/dist/components/Select/types.js +2 -2
  85. package/dist/components/Select/types.js.map +0 -0
  86. package/dist/components/Slider/Mark.d.ts +3 -3
  87. package/dist/components/Slider/Mark.js +31 -31
  88. package/dist/components/Slider/Mark.js.map +0 -0
  89. package/dist/components/Slider/Thumb.d.ts +7 -7
  90. package/dist/components/Slider/Thumb.js +29 -29
  91. package/dist/components/Slider/Thumb.js.map +0 -0
  92. package/dist/components/Slider/index.d.ts +3 -3
  93. package/dist/components/Slider/index.js +97 -93
  94. package/dist/components/Slider/index.js.map +1 -1
  95. package/dist/components/Slider/types.d.ts +25 -25
  96. package/dist/components/Slider/types.js +2 -2
  97. package/dist/components/Slider/types.js.map +0 -0
  98. package/dist/components/Switch.d.ts +13 -13
  99. package/dist/components/Switch.js +75 -71
  100. package/dist/components/Switch.js.map +1 -1
  101. package/dist/components/Text.d.ts +12 -12
  102. package/dist/components/Text.js +52 -48
  103. package/dist/components/Text.js.map +1 -1
  104. package/dist/components/TextInput.d.ts +168 -162
  105. package/dist/components/TextInput.js +153 -149
  106. package/dist/components/TextInput.js.map +1 -1
  107. package/dist/components/Touchable.d.ts +14 -14
  108. package/dist/components/Touchable.js +61 -57
  109. package/dist/components/Touchable.js.map +1 -1
  110. package/dist/components/View.d.ts +120 -114
  111. package/dist/components/View.js +54 -50
  112. package/dist/components/View.js.map +1 -1
  113. package/dist/components/components.d.ts +24 -24
  114. package/dist/components/components.js +40 -36
  115. package/dist/components/components.js.map +1 -1
  116. package/dist/index.d.ts +5 -5
  117. package/dist/index.js +28 -24
  118. package/dist/index.js.map +1 -1
  119. package/dist/modules/documentPicker.d.ts +3 -3
  120. package/dist/modules/documentPicker.js +11 -11
  121. package/dist/modules/documentPicker.js.map +0 -0
  122. package/dist/modules/fastImage.d.ts +1 -1
  123. package/dist/modules/fastImage.js +9 -9
  124. package/dist/modules/fastImage.js.map +0 -0
  125. package/dist/modules/reactNavigation.d.ts +3 -3
  126. package/dist/modules/reactNavigation.js +10 -10
  127. package/dist/modules/reactNavigation.js.map +0 -0
  128. package/dist/modules/types/fileTypes.d.ts +138 -138
  129. package/dist/modules/types/fileTypes.js +2 -2
  130. package/dist/modules/types/fileTypes.js.map +0 -0
  131. package/dist/types/utility.d.ts +2 -2
  132. package/dist/types/utility.js +2 -2
  133. package/dist/types/utility.js.map +0 -0
  134. package/dist/utils/OSAlert.d.ts +31 -31
  135. package/dist/utils/OSAlert.js +141 -141
  136. package/dist/utils/OSAlert.js.map +1 -1
  137. package/dist/utils/misc.d.ts +2 -2
  138. package/dist/utils/misc.js +25 -25
  139. package/dist/utils/misc.js.map +0 -0
  140. package/dist/utils/styles.d.ts +1 -1
  141. package/dist/utils/styles.js +12 -12
  142. package/dist/utils/styles.js.map +0 -0
  143. package/package.json +40 -40
  144. package/src/components/ActivityIndicator.tsx +46 -46
  145. package/src/components/Animated.tsx +34 -34
  146. package/src/components/Button.tsx +95 -95
  147. package/src/components/Checkbox/index.tsx +81 -81
  148. package/src/components/Checkbox/styles.ts +72 -72
  149. package/src/components/ContentView.tsx +58 -58
  150. package/src/components/FileInput.tsx +179 -179
  151. package/src/components/Icon.tsx +58 -58
  152. package/src/components/Image.tsx +59 -61
  153. package/src/components/List.tsx +100 -100
  154. package/src/components/Modal/index.tsx +158 -158
  155. package/src/components/Modal/styles.ts +133 -133
  156. package/src/components/Navigation/Navigation.tsx +58 -58
  157. package/src/components/Navigation/constants.ts +8 -8
  158. package/src/components/Navigation/index.tsx +3 -3
  159. package/src/components/Navigation/types.ts +35 -35
  160. package/src/components/Navigation/utils.tsx +59 -59
  161. package/src/components/Overlay.tsx +77 -77
  162. package/src/components/Pager/index.tsx +240 -240
  163. package/src/components/Pager/styles.ts +51 -51
  164. package/src/components/RadioInput/index.tsx +101 -101
  165. package/src/components/RadioInput/styles.ts +67 -67
  166. package/src/components/Scroll.tsx +98 -98
  167. package/src/components/Sections.tsx +100 -100
  168. package/src/components/Select/index.tsx +184 -184
  169. package/src/components/Select/styles.ts +81 -81
  170. package/src/components/Select/types.ts +41 -41
  171. package/src/components/Slider/Mark.tsx +46 -46
  172. package/src/components/Slider/Thumb.tsx +29 -29
  173. package/src/components/Slider/index.tsx +123 -123
  174. package/src/components/Slider/types.ts +25 -25
  175. package/src/components/Switch.tsx +81 -81
  176. package/src/components/Text.tsx +30 -30
  177. package/src/components/TextInput.tsx +204 -204
  178. package/src/components/Touchable.tsx +64 -65
  179. package/src/components/View.tsx +46 -46
  180. package/src/components/components.ts +26 -26
  181. package/src/index.ts +6 -6
  182. package/src/modules/documentPicker.ts +7 -7
  183. package/src/modules/fastImage.ts +2 -2
  184. package/src/modules/index.d.ts +496 -496
  185. package/src/modules/reactNavigation.ts +4 -4
  186. package/src/modules/types/documentPicker.d.ts +215 -215
  187. package/src/modules/types/fileTypes.ts +138 -138
  188. package/src/types/utility.ts +3 -3
  189. package/src/utils/OSAlert.ts +180 -180
  190. package/src/utils/misc.ts +24 -24
  191. package/src/utils/styles.ts +14 -14
@@ -1,51 +1,51 @@
1
- import {
2
- createDefaultVariantFactory,
3
- includePresets,
4
- } from '@codeleap/common'
5
-
6
- export type PagerComposition =
7
- | 'page'
8
- | 'page:transition'
9
- | 'page:pose:previous'
10
- | 'page:pose:next'
11
- | 'page:pose:current'
12
- | 'wrapper'
13
-
14
- const createPagerStyle = createDefaultVariantFactory<PagerComposition>()
15
-
16
- const presets = includePresets((style) => createPagerStyle(() => ({ wrapper: style })),
17
- )
18
-
19
- export const MobilePagerStyles = {
20
- ...presets,
21
- default: createPagerStyle((Theme) => {
22
- const transition = {
23
- duration: 500,
24
- ease: 'easeInOut',
25
- useNativeDriver: true,
26
- }
27
-
28
- return {
29
- wrapper: {
30
- ...Theme.presets.full,
31
- },
32
- 'page:pose:next': {
33
- left: Theme.values.width * 1.8,
34
- transition: transition,
35
- },
36
- 'page:pose:current': {
37
- left: 0,
38
- transition: transition,
39
- },
40
- 'page:pose:previous': {
41
- left: -Theme.values.width * 1.8,
42
- transition: transition,
43
- },
44
- page: {
45
- width: '100%',
46
- height: '100%',
47
- },
48
- }
49
- }),
50
- pageless: createPagerStyle(() => ({})),
51
- }
1
+ import {
2
+ createDefaultVariantFactory,
3
+ includePresets,
4
+ } from '@codeleap/common'
5
+
6
+ export type PagerComposition =
7
+ | 'page'
8
+ | 'page:transition'
9
+ | 'page:pose:previous'
10
+ | 'page:pose:next'
11
+ | 'page:pose:current'
12
+ | 'wrapper'
13
+
14
+ const createPagerStyle = createDefaultVariantFactory<PagerComposition>()
15
+
16
+ const presets = includePresets((style) => createPagerStyle(() => ({ wrapper: style })),
17
+ )
18
+
19
+ export const MobilePagerStyles = {
20
+ ...presets,
21
+ default: createPagerStyle((Theme) => {
22
+ const transition = {
23
+ duration: 500,
24
+ ease: 'easeInOut',
25
+ useNativeDriver: true,
26
+ }
27
+
28
+ return {
29
+ wrapper: {
30
+ ...Theme.presets.full,
31
+ },
32
+ 'page:pose:next': {
33
+ left: Theme.values.width * 1.8,
34
+ transition: transition,
35
+ },
36
+ 'page:pose:current': {
37
+ left: 0,
38
+ transition: transition,
39
+ },
40
+ 'page:pose:previous': {
41
+ left: -Theme.values.width * 1.8,
42
+ transition: transition,
43
+ },
44
+ page: {
45
+ width: '100%',
46
+ height: '100%',
47
+ },
48
+ }
49
+ }),
50
+ pageless: createPagerStyle(() => ({})),
51
+ }
@@ -1,101 +1,101 @@
1
- import * as React from 'react'
2
- import { ReactNode, useRef, ComponentPropsWithoutRef } from 'react'
3
- import { v4 } from 'uuid'
4
-
5
- import { Text } from '../Text'
6
- import { Touchable } from '../Touchable'
7
- import {
8
- ComponentVariants,
9
- StylesOf,
10
- useDefaultComponentStyle,
11
- } from '@codeleap/common'
12
- import { View } from '../View'
13
- import { MobileRadioInputStyles, MobileRadioInputComposition } from './styles'
14
-
15
- export * from './styles'
16
-
17
- type RadioItem<T extends unknown = any> = {
18
- value: T
19
- label: ReactNode
20
- }
21
-
22
- const getRadioStyle = (props) => useDefaultComponentStyle('RadioInput', props)
23
-
24
- export type RadioButtonProps = Omit<
25
- ComponentPropsWithoutRef<typeof Touchable>,
26
- 'style'
27
- > & {
28
- item: RadioItem
29
- select: () => void
30
- style: StylesOf<MobileRadioInputComposition>
31
- checked: boolean
32
- defaultValue?: number
33
- }
34
-
35
- export type RadioGroupProps<T> = {
36
- options: RadioItem<T>[]
37
- value: T
38
- onValueChange(value: T): void
39
- label: ReactNode
40
- styles?: StylesOf<MobileRadioInputComposition>
41
- } & ComponentVariants<typeof MobileRadioInputStyles>
42
-
43
- export const RadioButton: React.FC<RadioButtonProps> = ({
44
- item,
45
- select,
46
- style,
47
- checked,
48
- ...props
49
- }) => {
50
- return (
51
- <Touchable onPress={select} style={style.itemWrapper} debugName={'Change radioButton value'}>
52
- <View style={[style.button, checked && style['button:checked']]}>
53
- <View
54
- style={[style.buttonMark, checked && style['buttonMark:checked']]}
55
- />
56
- </View>
57
- {typeof item.label === 'string' ? (
58
- <Text text={item.label} style={style.text} />
59
- ) : (
60
- item.label
61
- )}
62
- </Touchable>
63
- )
64
- }
65
-
66
- export const RadioGroup = <T extends unknown>(
67
- radioGroupProps: RadioGroupProps<T>,
68
- ) => {
69
- const {
70
- options,
71
- value,
72
- onValueChange,
73
- label,
74
- responsiveVariants,
75
- variants,
76
- styles,
77
- } = radioGroupProps
78
-
79
- const radioStyle = getRadioStyle({
80
- responsiveVariants,
81
- variants,
82
- styles,
83
- })
84
- return (
85
- <View style={radioStyle.wrapper}>
86
- {typeof label === 'string' ? <Text text={label} /> : label}
87
- <View style={radioStyle.listWrapper}>
88
- {options?.map((item, idx) => (
89
- <RadioButton
90
- debugName={'RadioButton'}
91
- item={item}
92
- key={idx}
93
- style={radioStyle}
94
- checked={value === item.value}
95
- select={() => onValueChange(item.value)}
96
- />
97
- ))}
98
- </View>
99
- </View>
100
- )
101
- }
1
+ import * as React from 'react'
2
+ import { ReactNode, useRef, ComponentPropsWithoutRef } from 'react'
3
+ import { v4 } from 'uuid'
4
+
5
+ import { Text } from '../Text'
6
+ import { Touchable } from '../Touchable'
7
+ import {
8
+ ComponentVariants,
9
+ StylesOf,
10
+ useDefaultComponentStyle,
11
+ } from '@codeleap/common'
12
+ import { View } from '../View'
13
+ import { MobileRadioInputStyles, MobileRadioInputComposition } from './styles'
14
+
15
+ export * from './styles'
16
+
17
+ type RadioItem<T extends unknown = any> = {
18
+ value: T
19
+ label: ReactNode
20
+ }
21
+
22
+ const getRadioStyle = (props) => useDefaultComponentStyle('RadioInput', props)
23
+
24
+ export type RadioButtonProps = Omit<
25
+ ComponentPropsWithoutRef<typeof Touchable>,
26
+ 'style'
27
+ > & {
28
+ item: RadioItem
29
+ select: () => void
30
+ style: StylesOf<MobileRadioInputComposition>
31
+ checked: boolean
32
+ defaultValue?: number
33
+ }
34
+
35
+ export type RadioGroupProps<T> = {
36
+ options: RadioItem<T>[]
37
+ value: T
38
+ onValueChange(value: T): void
39
+ label: ReactNode
40
+ styles?: StylesOf<MobileRadioInputComposition>
41
+ } & ComponentVariants<typeof MobileRadioInputStyles>
42
+
43
+ export const RadioButton: React.FC<RadioButtonProps> = ({
44
+ item,
45
+ select,
46
+ style,
47
+ checked,
48
+ ...props
49
+ }) => {
50
+ return (
51
+ <Touchable onPress={select} style={style.itemWrapper} debugName={'Change radioButton value'}>
52
+ <View style={[style.button, checked && style['button:checked']]}>
53
+ <View
54
+ style={[style.buttonMark, checked && style['buttonMark:checked']]}
55
+ />
56
+ </View>
57
+ {typeof item.label === 'string' ? (
58
+ <Text text={item.label} style={style.text} />
59
+ ) : (
60
+ item.label
61
+ )}
62
+ </Touchable>
63
+ )
64
+ }
65
+
66
+ export const RadioGroup = <T extends unknown>(
67
+ radioGroupProps: RadioGroupProps<T>,
68
+ ) => {
69
+ const {
70
+ options,
71
+ value,
72
+ onValueChange,
73
+ label,
74
+ responsiveVariants,
75
+ variants,
76
+ styles,
77
+ } = radioGroupProps
78
+
79
+ const radioStyle = getRadioStyle({
80
+ responsiveVariants,
81
+ variants,
82
+ styles,
83
+ })
84
+ return (
85
+ <View style={radioStyle.wrapper}>
86
+ {typeof label === 'string' ? <Text text={label} /> : label}
87
+ <View style={radioStyle.listWrapper}>
88
+ {options?.map((item, idx) => (
89
+ <RadioButton
90
+ debugName={'RadioButton'}
91
+ item={item}
92
+ key={idx}
93
+ style={radioStyle}
94
+ checked={value === item.value}
95
+ select={() => onValueChange(item.value)}
96
+ />
97
+ ))}
98
+ </View>
99
+ </View>
100
+ )
101
+ }
@@ -1,67 +1,67 @@
1
- import {
2
- createDefaultVariantFactory,
3
- RadioInputStyles,
4
- } from '@codeleap/common'
5
- type RadioParts = 'button' | 'itemWrapper' | 'text' | 'buttonMark'
6
-
7
- type RadioGroupParts = 'label' | 'wrapper' | 'list'
8
-
9
- export type MobileRadioInputComposition =
10
- | `${RadioParts}:checked`
11
- | RadioParts
12
- | RadioGroupParts
13
-
14
- const createRadioStyle =
15
- createDefaultVariantFactory<MobileRadioInputComposition>()
16
-
17
- const defaultStyles = RadioInputStyles.default
18
-
19
- export const MobileRadioInputStyles = {
20
- ...RadioInputStyles,
21
- default: createRadioStyle((theme) => {
22
- const style = defaultStyles(theme)
23
-
24
- const itemHeight = theme.typography.baseFontSize * 1.2
25
- const markHeight = itemHeight / 2
26
- const translateX = -(markHeight / 2)
27
- const translateY = -(markHeight / 2)
28
- return {
29
- ...style,
30
- itemWrapper: {
31
- ...style.itemWrapper,
32
- },
33
- button: {
34
- height: itemHeight,
35
- width: itemHeight,
36
- ...theme.border.primary(1),
37
- borderRadius: theme.borderRadius.large,
38
-
39
- position: 'relative',
40
- ...theme.spacing.marginRight(1),
41
- },
42
- buttonMark: {
43
- backgroundColor: theme.colors.primary,
44
- position: 'absolute',
45
- left: '50%',
46
- top: '50%',
47
- height: markHeight,
48
- width: markHeight,
49
-
50
- transform: [{ translateX }, { translateY }],
51
- borderRadius: theme.borderRadius.large,
52
- opacity: 0,
53
- },
54
- 'buttonMark:checked': {
55
- opacity: 1,
56
- },
57
- }
58
- }),
59
- square: createRadioStyle(() => ({
60
- buttonMark: {
61
- borderRadius: 0,
62
- },
63
- button: {
64
- borderRadius: 0,
65
- },
66
- })),
67
- }
1
+ import {
2
+ createDefaultVariantFactory,
3
+ RadioInputStyles,
4
+ } from '@codeleap/common'
5
+ type RadioParts = 'button' | 'itemWrapper' | 'text' | 'buttonMark'
6
+
7
+ type RadioGroupParts = 'label' | 'wrapper' | 'list'
8
+
9
+ export type MobileRadioInputComposition =
10
+ | `${RadioParts}:checked`
11
+ | RadioParts
12
+ | RadioGroupParts
13
+
14
+ const createRadioStyle =
15
+ createDefaultVariantFactory<MobileRadioInputComposition>()
16
+
17
+ const defaultStyles = RadioInputStyles.default
18
+
19
+ export const MobileRadioInputStyles = {
20
+ ...RadioInputStyles,
21
+ default: createRadioStyle((theme) => {
22
+ const style = defaultStyles(theme)
23
+
24
+ const itemHeight = theme.typography.baseFontSize * 1.2
25
+ const markHeight = itemHeight / 2
26
+ const translateX = -(markHeight / 2)
27
+ const translateY = -(markHeight / 2)
28
+ return {
29
+ ...style,
30
+ itemWrapper: {
31
+ ...style.itemWrapper,
32
+ },
33
+ button: {
34
+ height: itemHeight,
35
+ width: itemHeight,
36
+ ...theme.border.primary(1),
37
+ borderRadius: theme.borderRadius.large,
38
+
39
+ position: 'relative',
40
+ ...theme.spacing.marginRight(1),
41
+ },
42
+ buttonMark: {
43
+ backgroundColor: theme.colors.primary,
44
+ position: 'absolute',
45
+ left: '50%',
46
+ top: '50%',
47
+ height: markHeight,
48
+ width: markHeight,
49
+
50
+ transform: [{ translateX }, { translateY }],
51
+ borderRadius: theme.borderRadius.large,
52
+ opacity: 0,
53
+ },
54
+ 'buttonMark:checked': {
55
+ opacity: 1,
56
+ },
57
+ }
58
+ }),
59
+ square: createRadioStyle(() => ({
60
+ buttonMark: {
61
+ borderRadius: 0,
62
+ },
63
+ button: {
64
+ borderRadius: 0,
65
+ },
66
+ })),
67
+ }
@@ -1,98 +1,98 @@
1
- import * as React from 'react'
2
- import { forwardRef, useState } from 'react'
3
- import {
4
- deepEqual,
5
- onUpdate,
6
- useDefaultComponentStyle,
7
- usePrevious,
8
- useCodeleapContext,
9
- } from '@codeleap/common'
10
- import {
11
- KeyboardAwareScrollViewProps,
12
- KeyboardAwareScrollView as KBDView,
13
- } from 'react-native-keyboard-aware-scroll-view'
14
- import { RefreshControl, ScrollView, ScrollViewProps, ViewStyle } from 'react-native'
15
- import { ViewProps } from './View'
16
-
17
- export type ScrollProps = KeyboardAwareScrollViewProps &
18
- ViewProps & {
19
- onRefresh?: () => void
20
- refreshTimeout?: number
21
- changeData?: any
22
- styles?: ViewStyle
23
- }
24
-
25
- const KeyboardAwareScrollView =
26
- KBDView as unknown as React.ForwardRefExoticComponent<
27
- ViewProps & {
28
- refreshControl?: JSX.Element
29
- ref?: ScrollView
30
-
31
- } & ScrollViewProps
32
- >
33
-
34
- export const Scroll = forwardRef<ScrollView, ScrollProps>(
35
- (scrollProps, ref) => {
36
- const {
37
- variants = [],
38
- style,
39
- refreshTimeout = 3000,
40
- children,
41
- changeData,
42
- styles,
43
- ...props
44
- } = scrollProps
45
- const hasRefresh = !!props.onRefresh
46
- const [refreshing, setRefreshing] = useState(false)
47
-
48
- const timer = React.useRef(null)
49
- const previousData = usePrevious(changeData)
50
-
51
- const onRefresh = () => {
52
- if (timer.current) {
53
- clearTimeout(timer.current)
54
- }
55
-
56
- setRefreshing(true)
57
-
58
- props.onRefresh()
59
-
60
- timer.current = setTimeout(() => {
61
- setRefreshing(false)
62
- }, refreshTimeout)
63
- }
64
- onUpdate(() => {
65
- if (refreshing && !deepEqual(previousData, changeData)) {
66
- setRefreshing(false)
67
- if (timer.current) {
68
- clearTimeout(timer.current)
69
- }
70
- }
71
- }, [refreshing, changeData])
72
- const { Theme } = useCodeleapContext()
73
-
74
- const variantStyles = useDefaultComponentStyle('View', {
75
- variants,
76
- styles: {
77
- wrapper: styles,
78
- },
79
- rootElement: 'wrapper',
80
- })
81
-
82
- return (
83
- <KeyboardAwareScrollView
84
- style={[Theme.presets.full, style]}
85
- contentContainerStyle={[variantStyles.wrapper]}
86
- ref={ref as unknown as ScrollView}
87
- {...props}
88
- refreshControl={
89
- hasRefresh && (
90
- <RefreshControl refreshing={refreshing} onRefresh={onRefresh} />
91
- )
92
- }
93
- >
94
- {children}
95
- </KeyboardAwareScrollView>
96
- )
97
- },
98
- )
1
+ import * as React from 'react'
2
+ import { forwardRef, useState } from 'react'
3
+ import {
4
+ deepEqual,
5
+ onUpdate,
6
+ useDefaultComponentStyle,
7
+ usePrevious,
8
+ useCodeleapContext,
9
+ } from '@codeleap/common'
10
+ import {
11
+ KeyboardAwareScrollViewProps,
12
+ KeyboardAwareScrollView as KBDView,
13
+ } from 'react-native-keyboard-aware-scroll-view'
14
+ import { RefreshControl, ScrollView, ScrollViewProps, ViewStyle } from 'react-native'
15
+ import { ViewProps } from './View'
16
+
17
+ export type ScrollProps = KeyboardAwareScrollViewProps &
18
+ ViewProps & {
19
+ onRefresh?: () => void
20
+ refreshTimeout?: number
21
+ changeData?: any
22
+ styles?: ViewStyle
23
+ }
24
+
25
+ const KeyboardAwareScrollView =
26
+ KBDView as unknown as React.ForwardRefExoticComponent<
27
+ ViewProps & {
28
+ refreshControl?: JSX.Element
29
+ ref?: ScrollView
30
+
31
+ } & ScrollViewProps
32
+ >
33
+
34
+ export const Scroll = forwardRef<ScrollView, ScrollProps>(
35
+ (scrollProps, ref) => {
36
+ const {
37
+ variants = [],
38
+ style,
39
+ refreshTimeout = 3000,
40
+ children,
41
+ changeData,
42
+ styles,
43
+ ...props
44
+ } = scrollProps
45
+ const hasRefresh = !!props.onRefresh
46
+ const [refreshing, setRefreshing] = useState(false)
47
+
48
+ const timer = React.useRef(null)
49
+ const previousData = usePrevious(changeData)
50
+
51
+ const onRefresh = () => {
52
+ if (timer.current) {
53
+ clearTimeout(timer.current)
54
+ }
55
+
56
+ setRefreshing(true)
57
+
58
+ props.onRefresh()
59
+
60
+ timer.current = setTimeout(() => {
61
+ setRefreshing(false)
62
+ }, refreshTimeout)
63
+ }
64
+ onUpdate(() => {
65
+ if (refreshing && !deepEqual(previousData, changeData)) {
66
+ setRefreshing(false)
67
+ if (timer.current) {
68
+ clearTimeout(timer.current)
69
+ }
70
+ }
71
+ }, [refreshing, changeData])
72
+ const { Theme } = useCodeleapContext()
73
+
74
+ const variantStyles = useDefaultComponentStyle('View', {
75
+ variants,
76
+ styles: {
77
+ wrapper: styles,
78
+ },
79
+ rootElement: 'wrapper',
80
+ })
81
+
82
+ return (
83
+ <KeyboardAwareScrollView
84
+ style={[Theme.presets.full, style]}
85
+ contentContainerStyle={[variantStyles.wrapper]}
86
+ ref={ref as unknown as ScrollView}
87
+ {...props}
88
+ refreshControl={
89
+ hasRefresh && (
90
+ <RefreshControl refreshing={refreshing} onRefresh={onRefresh} />
91
+ )
92
+ }
93
+ >
94
+ {children}
95
+ </KeyboardAwareScrollView>
96
+ )
97
+ },
98
+ )