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