@codeleap/mobile 1.8.1 → 1.8.4

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 (189) hide show
  1. package/CodeLeap-Mobile-Packages.code-workspace +7 -7
  2. package/dist/components/ActivityIndicator.d.ts +13 -13
  3. package/dist/components/ActivityIndicator.js +50 -54
  4. package/dist/components/ActivityIndicator.js.map +1 -1
  5. package/dist/components/Animated.d.ts +15 -15
  6. package/dist/components/Animated.js +54 -58
  7. package/dist/components/Animated.js.map +1 -1
  8. package/dist/components/Button.d.ts +125 -125
  9. package/dist/components/Button.js +78 -82
  10. package/dist/components/Button.js.map +1 -1
  11. package/dist/components/Checkbox/index.d.ts +14 -14
  12. package/dist/components/Checkbox/index.js +73 -77
  13. package/dist/components/Checkbox/index.js.map +1 -1
  14. package/dist/components/Checkbox/styles.d.ts +55 -55
  15. package/dist/components/Checkbox/styles.js +48 -48
  16. package/dist/components/Checkbox/styles.js.map +0 -0
  17. package/dist/components/ContentView.d.ts +10 -10
  18. package/dist/components/ContentView.js +50 -50
  19. package/dist/components/ContentView.js.map +0 -0
  20. package/dist/components/FileInput.d.ts +26 -26
  21. package/dist/components/FileInput.js +174 -178
  22. package/dist/components/FileInput.js.map +1 -1
  23. package/dist/components/Icon.d.ts +12 -12
  24. package/dist/components/Icon.js +66 -70
  25. package/dist/components/Icon.js.map +1 -1
  26. package/dist/components/Image.d.ts +18 -18
  27. package/dist/components/Image.js +55 -59
  28. package/dist/components/Image.js.map +1 -1
  29. package/dist/components/List.d.ts +13 -12
  30. package/dist/components/List.js +78 -82
  31. package/dist/components/List.js.map +1 -1
  32. package/dist/components/Modal/index.d.ts +26 -26
  33. package/dist/components/Modal/index.js +108 -112
  34. package/dist/components/Modal/index.js.map +1 -1
  35. package/dist/components/Modal/styles.d.ts +69 -69
  36. package/dist/components/Modal/styles.js +64 -64
  37. package/dist/components/Modal/styles.js.map +0 -0
  38. package/dist/components/Navigation/Navigation.d.ts +3 -2
  39. package/dist/components/Navigation/Navigation.js +83 -87
  40. package/dist/components/Navigation/Navigation.js.map +1 -1
  41. package/dist/components/Navigation/constants.d.ts +5 -5
  42. package/dist/components/Navigation/constants.js +10 -10
  43. package/dist/components/Navigation/constants.js.map +0 -0
  44. package/dist/components/Navigation/index.d.ts +3 -3
  45. package/dist/components/Navigation/index.js +15 -19
  46. package/dist/components/Navigation/index.js.map +1 -1
  47. package/dist/components/Navigation/types.d.ts +26 -26
  48. package/dist/components/Navigation/types.js +7 -7
  49. package/dist/components/Navigation/types.js.map +0 -0
  50. package/dist/components/Navigation/utils.d.ts +3 -3
  51. package/dist/components/Navigation/utils.js +69 -69
  52. package/dist/components/Navigation/utils.js.map +0 -0
  53. package/dist/components/Overlay.d.ts +16 -16
  54. package/dist/components/Overlay.js +65 -69
  55. package/dist/components/Overlay.js.map +1 -1
  56. package/dist/components/Pager/index.d.ts +20 -20
  57. package/dist/components/Pager/index.js +163 -167
  58. package/dist/components/Pager/index.js.map +1 -1
  59. package/dist/components/Pager/styles.d.ts +54 -54
  60. package/dist/components/Pager/styles.js +43 -43
  61. package/dist/components/Pager/styles.js.map +0 -0
  62. package/dist/components/RadioInput/index.d.ts +26 -26
  63. package/dist/components/RadioInput/index.js +68 -72
  64. package/dist/components/RadioInput/index.js.map +1 -1
  65. package/dist/components/RadioInput/styles.d.ts +57 -57
  66. package/dist/components/RadioInput/styles.js +44 -44
  67. package/dist/components/RadioInput/styles.js.map +0 -0
  68. package/dist/components/Scroll.d.ts +12 -12
  69. package/dist/components/Scroll.js +76 -80
  70. package/dist/components/Scroll.js.map +1 -1
  71. package/dist/components/Sections.d.ts +11 -11
  72. package/dist/components/Sections.js +76 -80
  73. package/dist/components/Sections.js.map +1 -1
  74. package/dist/components/Select/index.d.ts +5 -4
  75. package/dist/components/Select/index.js +146 -150
  76. package/dist/components/Select/index.js.map +1 -1
  77. package/dist/components/Select/styles.d.ts +9 -9
  78. package/dist/components/Select/styles.js +56 -56
  79. package/dist/components/Select/styles.js.map +0 -0
  80. package/dist/components/Select/types.d.ts +39 -39
  81. package/dist/components/Select/types.js +2 -2
  82. package/dist/components/Select/types.js.map +0 -0
  83. package/dist/components/Slider/Mark.d.ts +3 -3
  84. package/dist/components/Slider/Mark.js +31 -31
  85. package/dist/components/Slider/Mark.js.map +0 -0
  86. package/dist/components/Slider/Thumb.d.ts +7 -6
  87. package/dist/components/Slider/Thumb.js +29 -29
  88. package/dist/components/Slider/Thumb.js.map +0 -0
  89. package/dist/components/Slider/index.d.ts +3 -3
  90. package/dist/components/Slider/index.js +93 -97
  91. package/dist/components/Slider/index.js.map +1 -1
  92. package/dist/components/Slider/types.d.ts +25 -25
  93. package/dist/components/Slider/types.js +2 -2
  94. package/dist/components/Slider/types.js.map +0 -0
  95. package/dist/components/Switch.d.ts +13 -13
  96. package/dist/components/Switch.js +71 -75
  97. package/dist/components/Switch.js.map +1 -1
  98. package/dist/components/Text.d.ts +12 -12
  99. package/dist/components/Text.js +48 -52
  100. package/dist/components/Text.js.map +1 -1
  101. package/dist/components/TextInput.d.ts +171 -171
  102. package/dist/components/TextInput.js +157 -161
  103. package/dist/components/TextInput.js.map +1 -1
  104. package/dist/components/Touchable.d.ts +14 -14
  105. package/dist/components/Touchable.js +57 -61
  106. package/dist/components/Touchable.js.map +1 -1
  107. package/dist/components/View.d.ts +120 -120
  108. package/dist/components/View.js +50 -54
  109. package/dist/components/View.js.map +1 -1
  110. package/dist/components/components.d.ts +24 -25
  111. package/dist/components/components.js +36 -41
  112. package/dist/components/components.js.map +1 -1
  113. package/dist/index.d.ts +5 -5
  114. package/dist/index.js +24 -28
  115. package/dist/index.js.map +1 -1
  116. package/dist/modules/documentPicker.d.ts +3 -3
  117. package/dist/modules/documentPicker.js +11 -11
  118. package/dist/modules/documentPicker.js.map +0 -0
  119. package/dist/modules/fastImage.d.ts +1 -1
  120. package/dist/modules/fastImage.js +9 -9
  121. package/dist/modules/fastImage.js.map +0 -0
  122. package/dist/modules/reactNavigation.d.ts +3 -3
  123. package/dist/modules/reactNavigation.js +10 -10
  124. package/dist/modules/reactNavigation.js.map +0 -0
  125. package/dist/modules/types/fileTypes.d.ts +138 -138
  126. package/dist/modules/types/fileTypes.js +2 -2
  127. package/dist/modules/types/fileTypes.js.map +0 -0
  128. package/dist/types/utility.d.ts +2 -2
  129. package/dist/types/utility.js +2 -2
  130. package/dist/types/utility.js.map +0 -0
  131. package/dist/utils/OSAlert.d.ts +31 -31
  132. package/dist/utils/OSAlert.js +141 -141
  133. package/dist/utils/OSAlert.js.map +1 -1
  134. package/dist/utils/misc.d.ts +2 -2
  135. package/dist/utils/misc.js +25 -25
  136. package/dist/utils/misc.js.map +0 -0
  137. package/dist/utils/styles.d.ts +1 -1
  138. package/dist/utils/styles.js +12 -12
  139. package/dist/utils/styles.js.map +0 -0
  140. package/package.json +38 -38
  141. package/src/components/ActivityIndicator.tsx +46 -46
  142. package/src/components/Animated.tsx +34 -34
  143. package/src/components/Button.tsx +95 -95
  144. package/src/components/Checkbox/index.tsx +81 -81
  145. package/src/components/Checkbox/styles.ts +72 -72
  146. package/src/components/ContentView.tsx +58 -58
  147. package/src/components/FileInput.tsx +179 -179
  148. package/src/components/Icon.tsx +58 -58
  149. package/src/components/Image.tsx +61 -61
  150. package/src/components/List.tsx +109 -109
  151. package/src/components/Modal/index.tsx +161 -161
  152. package/src/components/Modal/styles.ts +133 -133
  153. package/src/components/Navigation/Navigation.tsx +58 -58
  154. package/src/components/Navigation/constants.ts +8 -8
  155. package/src/components/Navigation/index.tsx +3 -3
  156. package/src/components/Navigation/types.ts +35 -35
  157. package/src/components/Navigation/utils.tsx +59 -59
  158. package/src/components/Overlay.tsx +77 -77
  159. package/src/components/Pager/index.tsx +242 -242
  160. package/src/components/Pager/styles.ts +51 -51
  161. package/src/components/RadioInput/index.tsx +101 -101
  162. package/src/components/RadioInput/styles.ts +67 -67
  163. package/src/components/Scroll.tsx +104 -104
  164. package/src/components/Sections.tsx +101 -101
  165. package/src/components/Select/index.tsx +195 -195
  166. package/src/components/Select/styles.ts +81 -81
  167. package/src/components/Select/types.ts +45 -45
  168. package/src/components/Slider/Mark.tsx +46 -46
  169. package/src/components/Slider/Thumb.tsx +29 -29
  170. package/src/components/Slider/index.tsx +123 -123
  171. package/src/components/Slider/types.ts +25 -25
  172. package/src/components/Switch.tsx +81 -81
  173. package/src/components/Text.tsx +30 -30
  174. package/src/components/TextInput.tsx +218 -216
  175. package/src/components/Touchable.tsx +64 -64
  176. package/src/components/View.tsx +46 -46
  177. package/src/components/components.ts +26 -26
  178. package/src/index.ts +6 -6
  179. package/src/modules/documentPicker.ts +7 -7
  180. package/src/modules/fastImage.ts +2 -2
  181. package/src/modules/index.d.ts +496 -496
  182. package/src/modules/reactNavigation.ts +4 -4
  183. package/src/modules/types/documentPicker.d.ts +215 -215
  184. package/src/modules/types/fileTypes.ts +138 -138
  185. package/src/types/utility.ts +3 -3
  186. package/src/utils/OSAlert.ts +180 -180
  187. package/src/utils/misc.ts +24 -24
  188. package/src/utils/styles.ts +14 -14
  189. package/dist/components/Icon.js3278065646 +0 -71
@@ -1,216 +1,218 @@
1
- import * as React from 'react'
2
- import {
3
- ComponentVariants,
4
- FormTypes,
5
- IconPlaceholder,
6
- TextInputComposition,
7
- TextInputStyles,
8
- useBooleanToggle,
9
- useDefaultComponentStyle,
10
- useValidate,
11
- } from '@codeleap/common'
12
- import { ComponentPropsWithoutRef, forwardRef, useImperativeHandle, useRef, useState } from 'react'
13
- import { Text } from './Text'
14
- import { View, ViewProps } from './View'
15
- import { Button } from './Button'
16
- import { StylesOf } from '../types/utility'
17
- import { Icon } from './Icon'
18
- import { NativeSyntheticEvent, StyleSheet, TextInput as NativeTextInput, TextInputChangeEventData } from 'react-native'
19
- import { Touchable, TouchableProps } from './Touchable'
20
-
21
- type IconProp = { name: IconPlaceholder; action?: () => void }
22
-
23
- type NativeProps = ComponentPropsWithoutRef<typeof NativeTextInput>
24
-
25
- export type TextInputProps =
26
- ComponentVariants<typeof TextInputStyles> &
27
- Omit<NativeProps, 'value'> &
28
- {
29
- multiline?: boolean
30
- onChangeText?: (text: string) => void
31
- disabled?: boolean
32
- edited?: boolean
33
- type?: string
34
- label?: React.ReactNode
35
- debugName: string
36
- leftIcon?: IconProp
37
- rightIcon?: IconProp
38
- styles?: StylesOf<TextInputComposition>
39
- validate?: FormTypes.ValidatorFunctionWithoutForm | string
40
- value?: string
41
- password?: boolean
42
- visibilityToggle?: boolean
43
- touchableWrapper?: boolean
44
- onPress?: () => void
45
- innerWrapperProps?: TouchableProps | ViewProps
46
- }
47
-
48
- export const TextInput = forwardRef<NativeTextInput, TextInputProps>((rawprops, inputRef) => {
49
- const {
50
- onChange,
51
- type,
52
- value,
53
- onChangeText,
54
- disabled,
55
- edited,
56
- onFocus,
57
- onBlur,
58
- variants,
59
- label,
60
- leftIcon,
61
- rightIcon,
62
- styles,
63
- validate,
64
- password,
65
- visibilityToggle,
66
- touchableWrapper,
67
- innerWrapperProps,
68
- debugName,
69
- ...props
70
- } = rawprops
71
-
72
- const [isFocused, setFocus] = useState(false)
73
- const [editedState, setEdited] = useState(edited)
74
-
75
- const input = useRef<any>(null)
76
- const [textIsVisible, setTextVisible] = useBooleanToggle(false)
77
- const variantStyles = useDefaultComponentStyle('TextInput', {
78
- variants,
79
- styles,
80
- })
81
- const InputElement = NativeTextInput
82
-
83
- const handleBlur: TextInputProps['onBlur'] = (e) => {
84
- if (!editedState && value) setEdited(true)
85
- setFocus(false)
86
-
87
- if (onBlur) {
88
- onBlur(e)
89
- }
90
- }
91
-
92
- const handleFocus: TextInputProps['onFocus'] = (e) => {
93
- setFocus(true)
94
- if (onFocus) {
95
- onFocus(e)
96
- }
97
- }
98
-
99
- const handleChange = (event: NativeSyntheticEvent<TextInputChangeEventData>) => {
100
- const text = event.nativeEvent.text
101
-
102
- if (onChange) onChange(event)
103
- if (onChangeText) onChangeText(text)
104
- }
105
-
106
- useImperativeHandle(inputRef, () => ({ ...input.current, focus: () => {
107
- input.current?.focus?.()
108
- }, isTextInput: true }))
109
-
110
- const { showError, error } = useValidate(value, validate)
111
-
112
- const leftIconStyle = {
113
- ...variantStyles.icon,
114
- ...(isFocused ? variantStyles['icon:focus'] : {}),
115
- ...(showError ? variantStyles['icon:error'] : {}),
116
- ...variantStyles.leftIcon,
117
- ...(isFocused ? variantStyles['leftIcon:focus'] : {}),
118
- ...(showError ? variantStyles['leftIcon:error'] : {}),
119
- }
120
-
121
- const rightIconStyle = {
122
- ...variantStyles.icon,
123
- ...(isFocused ? variantStyles['icon:focus'] : {}),
124
- ...(showError ? variantStyles['icon:error'] : {}),
125
- ...variantStyles.rightIcon,
126
- ...(isFocused ? variantStyles['rightIcon:focus'] : {}),
127
- ...(showError ? variantStyles['rightIcon:error'] : {}),
128
- }
129
-
130
- const buttonIconWrapperStyle = {
131
- ...variantStyles.buttonIconWrapper,
132
- ...(isFocused ? variantStyles['buttonIconWrapper:focus'] : {}),
133
- ...(showError ? variantStyles['buttonIconWrapper:error'] : {}),
134
- }
135
- function getStyles(key: TextInputComposition) {
136
- const requestedStyles = [
137
- variantStyles[key],
138
- isFocused ? variantStyles[key + ':focus'] : {},
139
- showError ? variantStyles[key + ':error'] : {},
140
- ]
141
- return requestedStyles
142
- }
143
-
144
- function handlePress() {
145
- if (props.onPress) {
146
- props.onPress()
147
- } else {
148
- input.current?.focus?.()
149
- }
150
- }
151
-
152
- return (
153
- <Touchable
154
- style={getStyles('wrapper')}
155
- debugName={debugName}
156
- onPress={handlePress}
157
- {...innerWrapperProps}
158
- >
159
- <InputLabel label={label} style={getStyles('label')} />
160
- <View style={getStyles('innerWrapper')} {...innerWrapperProps}>
161
- <InputIcon {...leftIcon} style={leftIconStyle} wrapperStyle={buttonIconWrapperStyle} />
162
- <InputElement
163
- ref={input}
164
- secureTextEntry={password && !textIsVisible}
165
- onChange={handleChange}
166
- value={value}
167
- editable={disabled}
168
- onFocus={handleFocus}
169
- onBlur={handleBlur}
170
- placeholderTextColor={StyleSheet.flatten(getStyles('placeholder'))?.color}
171
- {...props}
172
- style={getStyles('textField')}
173
- />
174
- {
175
- visibilityToggle ?
176
- <InputIcon name={
177
- (textIsVisible ? 'input-visiblity:visible' : 'input-visiblity:hidden') as IconPlaceholder
178
- } action={() => setTextVisible()} style={rightIconStyle} wrapperStyle={buttonIconWrapperStyle}/>
179
- :
180
- <InputIcon {...rightIcon} style={rightIconStyle} wrapperStyle={buttonIconWrapperStyle} />
181
- }
182
- </View>
183
- <FormError message={error.message} style={getStyles('error')} />
184
- </Touchable>
185
- )
186
- })
187
-
188
- export const FormError = ({ message, ...props }) => {
189
- if (['number', 'string', 'undefined'].includes(typeof message)) {
190
- return <Text text={`${message || ' '}`} variants={['p2', 'marginTop:1']} {...props} />
191
- }
192
- return message
193
- }
194
-
195
- export const InputIcon: React.FC<{ style: any; wrapperStyle: any } & IconProp> = ({ name, style, action, wrapperStyle = {}}) => {
196
- if (!name) return null
197
- if (action) {
198
- return <Touchable debugName={`${name} icon button`} onPress={() => action()} style={wrapperStyle} >
199
- <Icon name={name} style={style}/>
200
- </Touchable>
201
- }
202
- return <Icon name={name} style={style} />
203
- }
204
-
205
- export const InputLabel = ({ label, style }) => {
206
- if (!label) return null
207
-
208
- switch (typeof label) {
209
- case 'string':
210
- return <Text style={style} text={label} />
211
- case 'object':
212
- return label
213
- default:
214
- return null
215
- }
216
- }
1
+ import * as React from 'react'
2
+ import {
3
+ ComponentVariants,
4
+ FormTypes,
5
+ IconPlaceholder,
6
+ TextInputComposition,
7
+ TextInputStyles,
8
+ useBooleanToggle,
9
+ useDefaultComponentStyle,
10
+ useValidate,
11
+ } from '@codeleap/common'
12
+ import { ComponentPropsWithoutRef, forwardRef, useImperativeHandle, useRef, useState } from 'react'
13
+ import { Text } from './Text'
14
+ import { View, ViewProps } from './View'
15
+ import { Button } from './Button'
16
+ import { StylesOf } from '../types/utility'
17
+ import { Icon } from './Icon'
18
+ import { NativeSyntheticEvent, StyleSheet, TextInput as NativeTextInput, TextInputChangeEventData } from 'react-native'
19
+ import { Touchable, TouchableProps } from './Touchable'
20
+
21
+ type IconProp = { name: IconPlaceholder; action?: () => void }
22
+
23
+ type NativeProps = ComponentPropsWithoutRef<typeof NativeTextInput>
24
+
25
+ export type TextInputProps =
26
+ ComponentVariants<typeof TextInputStyles> &
27
+ Omit<NativeProps, 'value'> &
28
+ {
29
+ multiline?: boolean
30
+ onChangeText?: (text: string) => void
31
+ disabled?: boolean
32
+ edited?: boolean
33
+ type?: string
34
+ label?: React.ReactNode
35
+ debugName: string
36
+ leftIcon?: IconProp
37
+ rightIcon?: IconProp
38
+ styles?: StylesOf<TextInputComposition>
39
+ validate?: FormTypes.ValidatorFunctionWithoutForm | string
40
+ value?: string
41
+ password?: boolean
42
+ visibilityToggle?: boolean
43
+ touchableWrapper?: boolean
44
+ onPress?: () => void
45
+ innerWrapperProps?: TouchableProps | ViewProps
46
+ }
47
+
48
+ export const TextInput = forwardRef<NativeTextInput, TextInputProps>((rawprops, inputRef) => {
49
+ const {
50
+ onChange,
51
+ type,
52
+ value,
53
+ onChangeText,
54
+ disabled,
55
+ edited,
56
+ onFocus,
57
+ onBlur,
58
+ variants,
59
+ label,
60
+ leftIcon,
61
+ rightIcon,
62
+ styles,
63
+ validate,
64
+ password,
65
+ visibilityToggle,
66
+ touchableWrapper,
67
+ innerWrapperProps,
68
+ debugName,
69
+ ...props
70
+ } = rawprops
71
+
72
+ const [isFocused, setFocus] = useState(false)
73
+ const [editedState, setEdited] = useState(edited)
74
+
75
+ const input = useRef<any>(null)
76
+ const [textIsVisible, setTextVisible] = useBooleanToggle(false)
77
+ const variantStyles = useDefaultComponentStyle('TextInput', {
78
+ variants,
79
+ styles,
80
+ })
81
+ const InputElement = NativeTextInput
82
+
83
+ const handleBlur: TextInputProps['onBlur'] = (e) => {
84
+ if (!editedState && value) setEdited(true)
85
+ setFocus(false)
86
+
87
+ if (onBlur) {
88
+ onBlur(e)
89
+ }
90
+ }
91
+
92
+ const handleFocus: TextInputProps['onFocus'] = (e) => {
93
+ setFocus(true)
94
+ if (onFocus) {
95
+ onFocus(e)
96
+ }
97
+ }
98
+
99
+ const handleChange = (event: NativeSyntheticEvent<TextInputChangeEventData>) => {
100
+ const text = event.nativeEvent.text
101
+
102
+ if (onChange) onChange(event)
103
+ if (onChangeText) onChangeText(text)
104
+ }
105
+
106
+ useImperativeHandle(inputRef, () => ({ ...input.current, focus: () => {
107
+ input.current?.focus?.()
108
+ }, isTextInput: true }))
109
+
110
+ const { showError, error } = useValidate(value, validate)
111
+
112
+ const leftIconStyle = {
113
+ ...variantStyles.icon,
114
+ ...(isFocused ? variantStyles['icon:focus'] : {}),
115
+ ...(showError ? variantStyles['icon:error'] : {}),
116
+ ...variantStyles.leftIcon,
117
+ ...(isFocused ? variantStyles['leftIcon:focus'] : {}),
118
+ ...(showError ? variantStyles['leftIcon:error'] : {}),
119
+ }
120
+
121
+ const rightIconStyle = {
122
+ ...variantStyles.icon,
123
+ ...(isFocused ? variantStyles['icon:focus'] : {}),
124
+ ...(showError ? variantStyles['icon:error'] : {}),
125
+ ...variantStyles.rightIcon,
126
+ ...(isFocused ? variantStyles['rightIcon:focus'] : {}),
127
+ ...(showError ? variantStyles['rightIcon:error'] : {}),
128
+ }
129
+
130
+ const buttonIconWrapperStyle = {
131
+ ...variantStyles.buttonIconWrapper,
132
+ ...(isFocused ? variantStyles['buttonIconWrapper:focus'] : {}),
133
+ ...(showError ? variantStyles['buttonIconWrapper:error'] : {}),
134
+ }
135
+ function getStyles(key: TextInputComposition) {
136
+ const requestedStyles = [
137
+ variantStyles[key],
138
+ isFocused ? variantStyles[key + ':focus'] : {},
139
+ showError ? variantStyles[key + ':error'] : {},
140
+ ]
141
+ return requestedStyles
142
+ }
143
+
144
+ function handlePress() {
145
+ if (props.onPress) {
146
+ props.onPress()
147
+ } else {
148
+ input.current?.focus?.()
149
+ }
150
+ }
151
+
152
+ return (
153
+ <Touchable
154
+ style={getStyles('wrapper')}
155
+ debugName={debugName}
156
+ onPress={handlePress}
157
+ {...innerWrapperProps}
158
+ >
159
+ <InputLabel label={label} style={getStyles('label')} />
160
+ <View style={getStyles('innerWrapper')} {...innerWrapperProps}>
161
+ <InputIcon {...leftIcon} style={leftIconStyle} wrapperStyle={buttonIconWrapperStyle} />
162
+ <InputElement
163
+ ref={input}
164
+ secureTextEntry={password && !textIsVisible}
165
+ onChange={handleChange}
166
+ value={value}
167
+ editable={disabled}
168
+ onFocus={handleFocus}
169
+ onBlur={handleBlur}
170
+ placeholderTextColor={StyleSheet.flatten(getStyles('placeholder'))?.color}
171
+ selectionColor={StyleSheet.flatten(getStyles('selection'))?.color}
172
+ {...props}
173
+ style={getStyles('textField')}
174
+ />
175
+ {
176
+ visibilityToggle ?
177
+ <InputIcon name={
178
+ (textIsVisible ? 'input-visiblity:visible' : 'input-visiblity:hidden') as IconPlaceholder
179
+ } action={() => setTextVisible()} style={rightIconStyle} wrapperStyle={buttonIconWrapperStyle}/>
180
+ :
181
+ <InputIcon {...rightIcon} style={rightIconStyle} wrapperStyle={buttonIconWrapperStyle} />
182
+ }
183
+ </View>
184
+ <FormError message={error.message} style={getStyles('error')} />
185
+ </Touchable>
186
+ )
187
+ })
188
+
189
+ export const FormError = ({ message, ...props }) => {
190
+ if (['number', 'string', 'undefined'].includes(typeof message)) {
191
+ const text = message ? `${message.charAt(0).toUpperCase() + message.slice(1)}` : ' '
192
+ return <Text text={text} variants={['p2', 'marginTop:1']} {...props} />
193
+ }
194
+ return message
195
+ }
196
+
197
+ export const InputIcon: React.FC<{ style: any; wrapperStyle: any } & IconProp> = ({ name, style, action, wrapperStyle = {}}) => {
198
+ if (!name) return null
199
+ if (action) {
200
+ return <Touchable debugName={`${name} icon button`} onPress={() => action()} style={wrapperStyle} >
201
+ <Icon name={name} style={style}/>
202
+ </Touchable>
203
+ }
204
+ return <Icon name={name} style={style} />
205
+ }
206
+
207
+ export const InputLabel = ({ label, style }) => {
208
+ if (!label) return null
209
+
210
+ switch (typeof label) {
211
+ case 'string':
212
+ return <Text style={style} text={label} />
213
+ case 'object':
214
+ return label
215
+ default:
216
+ return null
217
+ }
218
+ }
@@ -1,64 +1,64 @@
1
- import * as React from 'react'
2
- import { ComponentPropsWithoutRef, forwardRef } from 'react'
3
- import {
4
- ComponentVariants,
5
- useDefaultComponentStyle,
6
- BaseViewProps,
7
- ViewStyles,
8
- useCodeleapContext,
9
- AnyFunction,
10
- } from '@codeleap/common'
11
- import { TouchableOpacity as NativeTouchable } from 'react-native'
12
-
13
- import { createAnimatableComponent } from 'react-native-animatable'
14
- export type TouchableProps = Omit<
15
- ComponentPropsWithoutRef<typeof NativeTouchable>,
16
- 'onPress'
17
- > & {
18
- variants?: ComponentVariants<typeof ViewStyles>['variants']
19
- component?: any
20
- ref?: React.Ref<NativeTouchable>
21
- debugName: string
22
- debugComponent?: string
23
- onPress?: AnyFunction
24
- } & BaseViewProps
25
-
26
- export const Touchable: React.FC<TouchableProps> = forwardRef<
27
- NativeTouchable,
28
- TouchableProps
29
- >((touchableProps, ref) => {
30
- const {
31
- variants = [],
32
- children,
33
- onPress,
34
- style,
35
- debugName,
36
- debugComponent,
37
- ...props
38
- } = touchableProps
39
-
40
- const variantStyles = useDefaultComponentStyle('View', {
41
- variants,
42
- })
43
-
44
- const { logger } = useCodeleapContext()
45
- const press = () => {
46
- if (!onPress) { throw { message: 'No onPress passed to touchable', touchableProps } }
47
- logger.log(
48
- `<${debugComponent || 'Touchable'}/> pressed`,
49
- { debugName, style, variants },
50
- 'User interaction',
51
- )
52
- onPress && onPress()
53
- }
54
-
55
- const styles = [variantStyles.wrapper, style]
56
-
57
- return (
58
- <NativeTouchable onPress={press} style={styles} {...props} ref={ref}>
59
- {children}
60
- </NativeTouchable>
61
- )
62
- })
63
-
64
- export const AnimatedTouchable = createAnimatableComponent(Touchable) as unknown as typeof Touchable
1
+ import * as React from 'react'
2
+ import { ComponentPropsWithoutRef, forwardRef } from 'react'
3
+ import {
4
+ ComponentVariants,
5
+ useDefaultComponentStyle,
6
+ BaseViewProps,
7
+ ViewStyles,
8
+ useCodeleapContext,
9
+ AnyFunction,
10
+ } from '@codeleap/common'
11
+ import { TouchableOpacity as NativeTouchable } from 'react-native'
12
+
13
+ import { createAnimatableComponent } from 'react-native-animatable'
14
+ export type TouchableProps = Omit<
15
+ ComponentPropsWithoutRef<typeof NativeTouchable>,
16
+ 'onPress'
17
+ > & {
18
+ variants?: ComponentVariants<typeof ViewStyles>['variants']
19
+ component?: any
20
+ ref?: React.Ref<NativeTouchable>
21
+ debugName: string
22
+ debugComponent?: string
23
+ onPress?: AnyFunction
24
+ } & BaseViewProps
25
+
26
+ export const Touchable: React.FC<TouchableProps> = forwardRef<
27
+ NativeTouchable,
28
+ TouchableProps
29
+ >((touchableProps, ref) => {
30
+ const {
31
+ variants = [],
32
+ children,
33
+ onPress,
34
+ style,
35
+ debugName,
36
+ debugComponent,
37
+ ...props
38
+ } = touchableProps
39
+
40
+ const variantStyles = useDefaultComponentStyle('View', {
41
+ variants,
42
+ })
43
+
44
+ const { logger } = useCodeleapContext()
45
+ const press = () => {
46
+ if (!onPress) { throw { message: 'No onPress passed to touchable', touchableProps } }
47
+ logger.log(
48
+ `<${debugComponent || 'Touchable'}/> pressed`,
49
+ { debugName, style, variants },
50
+ 'User interaction',
51
+ )
52
+ onPress && onPress()
53
+ }
54
+
55
+ const styles = [variantStyles.wrapper, style]
56
+
57
+ return (
58
+ <NativeTouchable onPress={press} style={styles} {...props} ref={ref}>
59
+ {children}
60
+ </NativeTouchable>
61
+ )
62
+ })
63
+
64
+ export const AnimatedTouchable = createAnimatableComponent(Touchable) as unknown as typeof Touchable
@@ -1,46 +1,46 @@
1
- import * as React from 'react'
2
- import * as Animatable from 'react-native-animatable'
3
- import { ComponentPropsWithoutRef, forwardRef } from 'react'
4
- import {
5
- ComponentVariants,
6
- useDefaultComponentStyle,
7
- ViewStyles,
8
- BaseViewProps,
9
- } from '@codeleap/common'
10
- import { View as NativeView, ViewStyle } from 'react-native'
11
-
12
- export type ViewProps = ComponentPropsWithoutRef<typeof NativeView> &
13
- ComponentVariants<typeof ViewStyles> & {
14
- ref?: any
15
- component?: any
16
- } & BaseViewProps
17
-
18
- export const View: React.FC<ViewProps> = forwardRef<NativeView, ViewProps>((viewProps, ref) => {
19
- const {
20
- responsiveVariants = {},
21
- variants = [],
22
- children,
23
- style,
24
- onHover,
25
- component,
26
- ...props
27
- } = viewProps
28
-
29
- const variantStyles = useDefaultComponentStyle('View', {
30
- responsiveVariants,
31
- variants,
32
- })
33
- const Component = component || NativeView
34
-
35
- return (
36
- <Component style={[variantStyles.wrapper, style]} ref={ref} {...props}>
37
- {children}
38
- </Component>
39
- )
40
- })
41
-
42
- export const AnimatedView = Animatable.createAnimatableComponent(
43
- View,
44
- ) as unknown as React.ForwardRefExoticComponent<
45
- { transition?: any; animation?: any } & ViewProps
46
- >
1
+ import * as React from 'react'
2
+ import * as Animatable from 'react-native-animatable'
3
+ import { ComponentPropsWithoutRef, forwardRef } from 'react'
4
+ import {
5
+ ComponentVariants,
6
+ useDefaultComponentStyle,
7
+ ViewStyles,
8
+ BaseViewProps,
9
+ } from '@codeleap/common'
10
+ import { View as NativeView, ViewStyle } from 'react-native'
11
+
12
+ export type ViewProps = ComponentPropsWithoutRef<typeof NativeView> &
13
+ ComponentVariants<typeof ViewStyles> & {
14
+ ref?: any
15
+ component?: any
16
+ } & BaseViewProps
17
+
18
+ export const View: React.FC<ViewProps> = forwardRef<NativeView, ViewProps>((viewProps, ref) => {
19
+ const {
20
+ responsiveVariants = {},
21
+ variants = [],
22
+ children,
23
+ style,
24
+ onHover,
25
+ component,
26
+ ...props
27
+ } = viewProps
28
+
29
+ const variantStyles = useDefaultComponentStyle('View', {
30
+ responsiveVariants,
31
+ variants,
32
+ })
33
+ const Component = component || NativeView
34
+
35
+ return (
36
+ <Component style={[variantStyles.wrapper, style]} ref={ref} {...props}>
37
+ {children}
38
+ </Component>
39
+ )
40
+ })
41
+
42
+ export const AnimatedView = Animatable.createAnimatableComponent(
43
+ View,
44
+ ) as unknown as React.ForwardRefExoticComponent<
45
+ { transition?: any; animation?: any } & ViewProps
46
+ >