@codeleap/mobile 1.9.25 → 1.9.28

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 (222) 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 +54 -54
  4. package/dist/components/ActivityIndicator.js.map +0 -0
  5. package/dist/components/Animated.d.ts +123 -15
  6. package/dist/components/Animated.js +58 -58
  7. package/dist/components/Animated.js.map +0 -0
  8. package/dist/components/Button.d.ts +132 -125
  9. package/dist/components/Button.js +93 -82
  10. package/dist/components/Button.js.map +1 -1
  11. package/dist/components/Checkbox/index.d.ts +15 -15
  12. package/dist/components/Checkbox/index.js +79 -79
  13. package/dist/components/Checkbox/index.js.map +0 -0
  14. package/dist/components/Checkbox/styles.d.ts +55 -55
  15. package/dist/components/Checkbox/styles.js +51 -51
  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/EmptyPlaceholder.d.ts +12 -0
  21. package/dist/components/EmptyPlaceholder.js +54 -0
  22. package/dist/components/EmptyPlaceholder.js.map +1 -0
  23. package/dist/components/FileInput.d.ts +31 -31
  24. package/dist/components/FileInput.js +230 -230
  25. package/dist/components/FileInput.js.map +0 -0
  26. package/dist/components/Gap.d.ts +8 -0
  27. package/dist/components/Gap.js +60 -0
  28. package/dist/components/Gap.js.map +1 -0
  29. package/dist/components/Icon.d.ts +12 -12
  30. package/dist/components/Icon.js +70 -70
  31. package/dist/components/Icon.js.map +0 -0
  32. package/dist/components/Image.d.ts +18 -18
  33. package/dist/components/Image.js +59 -59
  34. package/dist/components/Image.js.map +0 -0
  35. package/dist/components/List.d.ts +14 -14
  36. package/dist/components/List.js +84 -83
  37. package/dist/components/List.js.map +1 -1
  38. package/dist/components/Modal/index.d.ts +27 -26
  39. package/dist/components/Modal/index.js +113 -112
  40. package/dist/components/Modal/index.js.map +1 -1
  41. package/dist/components/Modal/styles.d.ts +64 -69
  42. package/dist/components/Modal/styles.js +59 -64
  43. package/dist/components/Modal/styles.js.map +1 -1
  44. package/dist/components/Navigation/Navigation.d.ts +3 -3
  45. package/dist/components/Navigation/Navigation.js +87 -87
  46. package/dist/components/Navigation/Navigation.js.map +0 -0
  47. package/dist/components/Navigation/constants.d.ts +5 -5
  48. package/dist/components/Navigation/constants.js +10 -10
  49. package/dist/components/Navigation/constants.js.map +0 -0
  50. package/dist/components/Navigation/index.d.ts +3 -3
  51. package/dist/components/Navigation/index.js +19 -19
  52. package/dist/components/Navigation/index.js.map +0 -0
  53. package/dist/components/Navigation/types.d.ts +26 -26
  54. package/dist/components/Navigation/types.js +7 -7
  55. package/dist/components/Navigation/types.js.map +0 -0
  56. package/dist/components/Navigation/utils.d.ts +3 -3
  57. package/dist/components/Navigation/utils.js +69 -69
  58. package/dist/components/Navigation/utils.js.map +0 -0
  59. package/dist/components/NewPager/index.d.ts +26 -0
  60. package/dist/components/NewPager/index.js +88 -0
  61. package/dist/components/NewPager/index.js.map +1 -0
  62. package/dist/components/NewPager/styles.d.ts +87 -0
  63. package/dist/components/NewPager/styles.js +70 -0
  64. package/dist/components/NewPager/styles.js.map +1 -0
  65. package/dist/components/Overlay.d.ts +16 -16
  66. package/dist/components/Overlay.js +69 -69
  67. package/dist/components/Overlay.js.map +0 -0
  68. package/dist/components/Pager/index.d.ts +20 -20
  69. package/dist/components/Pager/index.js +167 -167
  70. package/dist/components/Pager/index.js.map +0 -0
  71. package/dist/components/Pager/styles.d.ts +54 -54
  72. package/dist/components/Pager/styles.js +43 -43
  73. package/dist/components/Pager/styles.js.map +0 -0
  74. package/dist/components/RadioInput/index.d.ts +26 -26
  75. package/dist/components/RadioInput/index.js +72 -72
  76. package/dist/components/RadioInput/index.js.map +0 -0
  77. package/dist/components/RadioInput/styles.d.ts +57 -57
  78. package/dist/components/RadioInput/styles.js +44 -44
  79. package/dist/components/RadioInput/styles.js.map +0 -0
  80. package/dist/components/Scroll.d.ts +13 -13
  81. package/dist/components/Scroll.js +81 -81
  82. package/dist/components/Scroll.js.map +0 -0
  83. package/dist/components/Sections.d.ts +11 -11
  84. package/dist/components/Sections.js +80 -80
  85. package/dist/components/Sections.js.map +0 -0
  86. package/dist/components/Select/index.d.ts +5 -5
  87. package/dist/components/Select/index.js +150 -150
  88. package/dist/components/Select/index.js.map +0 -0
  89. package/dist/components/Select/styles.d.ts +9 -9
  90. package/dist/components/Select/styles.js +56 -56
  91. package/dist/components/Select/styles.js.map +0 -0
  92. package/dist/components/Select/types.d.ts +40 -40
  93. package/dist/components/Select/types.js +2 -2
  94. package/dist/components/Select/types.js.map +0 -0
  95. package/dist/components/Slider/Mark.d.ts +3 -3
  96. package/dist/components/Slider/Mark.js +31 -31
  97. package/dist/components/Slider/Mark.js.map +0 -0
  98. package/dist/components/Slider/Thumb.d.ts +7 -7
  99. package/dist/components/Slider/Thumb.js +29 -29
  100. package/dist/components/Slider/Thumb.js.map +0 -0
  101. package/dist/components/Slider/index.d.ts +3 -3
  102. package/dist/components/Slider/index.js +97 -97
  103. package/dist/components/Slider/index.js.map +0 -0
  104. package/dist/components/Slider/types.d.ts +25 -25
  105. package/dist/components/Slider/types.js +2 -2
  106. package/dist/components/Slider/types.js.map +0 -0
  107. package/dist/components/Switch.d.ts +13 -13
  108. package/dist/components/Switch.js +75 -75
  109. package/dist/components/Switch.js.map +0 -0
  110. package/dist/components/Text.d.ts +12 -12
  111. package/dist/components/Text.js +52 -52
  112. package/dist/components/Text.js.map +0 -0
  113. package/dist/components/TextInput.d.ts +183 -183
  114. package/dist/components/TextInput.js +180 -180
  115. package/dist/components/TextInput.js.map +0 -0
  116. package/dist/components/Touchable.d.ts +14 -14
  117. package/dist/components/Touchable.js +75 -75
  118. package/dist/components/Touchable.js.map +0 -0
  119. package/dist/components/View.d.ts +123 -120
  120. package/dist/components/View.js +55 -54
  121. package/dist/components/View.js.map +1 -1
  122. package/dist/components/components.d.ts +28 -25
  123. package/dist/components/components.js +44 -41
  124. package/dist/components/components.js.map +1 -1
  125. package/dist/index.d.ts +6 -5
  126. package/dist/index.js +30 -28
  127. package/dist/index.js.map +1 -1
  128. package/dist/modules/documentPicker.d.ts +3 -3
  129. package/dist/modules/documentPicker.js +11 -11
  130. package/dist/modules/documentPicker.js.map +0 -0
  131. package/dist/modules/fastImage.d.ts +1 -1
  132. package/dist/modules/fastImage.js +9 -9
  133. package/dist/modules/fastImage.js.map +0 -0
  134. package/dist/modules/reactNavigation.d.ts +3 -3
  135. package/dist/modules/reactNavigation.js +10 -10
  136. package/dist/modules/reactNavigation.js.map +0 -0
  137. package/dist/modules/textInputMask.d.ts +9 -12
  138. package/dist/modules/textInputMask.js +7 -7
  139. package/dist/modules/types/fileTypes.d.ts +138 -138
  140. package/dist/modules/types/fileTypes.js +2 -2
  141. package/dist/modules/types/fileTypes.js.map +0 -0
  142. package/dist/modules/types/textInputMask.d.ts +7 -12
  143. package/dist/modules/types/textInputMask.js +2 -2
  144. package/dist/types/utility.d.ts +2 -2
  145. package/dist/types/utility.js +2 -2
  146. package/dist/types/utility.js.map +0 -0
  147. package/dist/utils/ModalManager/components.d.ts +12 -0
  148. package/dist/utils/ModalManager/components.js +79 -0
  149. package/dist/utils/ModalManager/components.js.map +1 -0
  150. package/dist/utils/ModalManager/context.d.ts +42 -0
  151. package/dist/utils/ModalManager/context.js +172 -0
  152. package/dist/utils/ModalManager/context.js.map +1 -0
  153. package/dist/utils/ModalManager/index.d.ts +14 -0
  154. package/dist/utils/ModalManager/index.js +12 -0
  155. package/dist/utils/ModalManager/index.js.map +1 -0
  156. package/dist/utils/OSAlert.d.ts +31 -31
  157. package/dist/utils/OSAlert.js +141 -141
  158. package/dist/utils/OSAlert.js.map +0 -0
  159. package/dist/utils/misc.d.ts +2 -2
  160. package/dist/utils/misc.js +25 -25
  161. package/dist/utils/misc.js.map +0 -0
  162. package/dist/utils/styles.d.ts +1 -1
  163. package/dist/utils/styles.js +12 -12
  164. package/dist/utils/styles.js.map +0 -0
  165. package/package.json +43 -40
  166. package/src/components/ActivityIndicator.tsx +46 -46
  167. package/src/components/Animated.tsx +34 -34
  168. package/src/components/Button.tsx +117 -95
  169. package/src/components/Checkbox/index.tsx +85 -85
  170. package/src/components/Checkbox/styles.ts +76 -76
  171. package/src/components/ContentView.tsx +58 -58
  172. package/src/components/EmptyPlaceholder.tsx +53 -0
  173. package/src/components/FileInput.tsx +230 -230
  174. package/src/components/Gap.tsx +40 -0
  175. package/src/components/Icon.tsx +58 -58
  176. package/src/components/Image.tsx +61 -61
  177. package/src/components/List.tsx +116 -111
  178. package/src/components/Modal/index.tsx +162 -161
  179. package/src/components/Modal/styles.ts +126 -133
  180. package/src/components/Navigation/Navigation.tsx +58 -58
  181. package/src/components/Navigation/constants.ts +8 -8
  182. package/src/components/Navigation/index.tsx +3 -3
  183. package/src/components/Navigation/types.ts +35 -35
  184. package/src/components/Navigation/utils.tsx +59 -59
  185. package/src/components/NewPager/index.tsx +121 -0
  186. package/src/components/NewPager/styles.ts +76 -0
  187. package/src/components/Overlay.tsx +77 -77
  188. package/src/components/Pager/index.tsx +242 -242
  189. package/src/components/Pager/styles.ts +51 -51
  190. package/src/components/RadioInput/index.tsx +101 -101
  191. package/src/components/RadioInput/styles.ts +67 -67
  192. package/src/components/Scroll.tsx +106 -106
  193. package/src/components/Sections.tsx +101 -101
  194. package/src/components/Select/index.tsx +195 -195
  195. package/src/components/Select/styles.ts +81 -81
  196. package/src/components/Select/types.ts +46 -46
  197. package/src/components/Slider/Mark.tsx +46 -46
  198. package/src/components/Slider/Thumb.tsx +29 -29
  199. package/src/components/Slider/index.tsx +123 -123
  200. package/src/components/Slider/types.ts +25 -25
  201. package/src/components/Switch.tsx +81 -81
  202. package/src/components/Text.tsx +30 -30
  203. package/src/components/TextInput.tsx +247 -247
  204. package/src/components/Touchable.tsx +78 -78
  205. package/src/components/View.tsx +48 -46
  206. package/src/components/components.ts +28 -26
  207. package/src/index.ts +6 -6
  208. package/src/modules/documentPicker.ts +7 -7
  209. package/src/modules/fastImage.ts +2 -2
  210. package/src/modules/index.d.ts +496 -496
  211. package/src/modules/reactNavigation.ts +4 -4
  212. package/src/modules/textInputMask.ts +9 -9
  213. package/src/modules/types/documentPicker.d.ts +215 -215
  214. package/src/modules/types/fileTypes.ts +138 -138
  215. package/src/modules/types/textInputMask.ts +9 -13
  216. package/src/types/utility.ts +3 -3
  217. package/src/utils/ModalManager/components.tsx +58 -0
  218. package/src/utils/ModalManager/context.tsx +208 -0
  219. package/src/utils/ModalManager/index.ts +9 -0
  220. package/src/utils/OSAlert.ts +180 -180
  221. package/src/utils/misc.ts +24 -24
  222. package/src/utils/styles.ts +14 -14
@@ -1,13 +1,13 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.useLogStyles = void 0;
4
- var common_1 = require("@codeleap/common");
5
- var react_native_1 = require("react-native");
6
- function useLogStyles() {
7
- var logger = (0, common_1.useCodeleapContext)().logger;
8
- return function (name, styles) {
9
- logger.debug.blue(name, JSON.stringify(react_native_1.StyleSheet.flatten(styles), null, 2), 'Component Styles');
10
- };
11
- }
12
- exports.useLogStyles = useLogStyles;
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useLogStyles = void 0;
4
+ var common_1 = require("@codeleap/common");
5
+ var react_native_1 = require("react-native");
6
+ function useLogStyles() {
7
+ var logger = (0, common_1.useCodeleapContext)().logger;
8
+ return function (name, styles) {
9
+ logger.debug.blue(name, JSON.stringify(react_native_1.StyleSheet.flatten(styles), null, 2), 'Component Styles');
10
+ };
11
+ }
12
+ exports.useLogStyles = useLogStyles;
13
13
  //# sourceMappingURL=styles.js.map
File without changes
package/package.json CHANGED
@@ -1,40 +1,43 @@
1
- {
2
- "name": "@codeleap/mobile",
3
- "version": "1.9.25",
4
- "main": "src/index.ts",
5
- "author": "Paulo Henrique De Souza <paulosouza300272@gmail.com>",
6
- "license": "UNLICENSED",
7
- "repository": "PRIVATE",
8
- "devDependencies": {
9
- "@codeleap/config": "*",
10
- "@types/react-native": "^0.66.15",
11
- "@types/react-window": "^1.8.5",
12
- "typescript": "^4.5.5"
13
- },
14
- "scripts": {
15
- "build": "tsc --build",
16
- "lint": "eslint -c .eslintrc.js --fix \"./src/**/*.{ts,tsx,js,jsx}\""
17
- },
18
- "peerDependencies": {
19
- "@codeleap/common": "*",
20
- "@react-navigation/bottom-tabs": "^6.0.9",
21
- "@react-navigation/drawer": "^6.1.8",
22
- "@react-navigation/native": "^6.0.6",
23
- "@react-navigation/native-stack": "^6.2.5",
24
- "@react-navigation/stack": "^6.1.1",
25
- "react": "*",
26
- "react-native": "*",
27
- "react-native-animatable": "^1.3.3",
28
- "react-native-fast-image": "^8.5.11",
29
- "react-native-gesture-handler": "^2.2.0",
30
- "react-native-image-crop-picker": "*",
31
- "react-native-keyboard-aware-scroll-view": "^0.9.5",
32
- "react-native-text-input-mask": "3.1.4"
33
- },
34
- "dependencies": {
35
- "@miblanchard/react-native-slider": "^2.1.0",
36
- "react-native-animatable": "^1.3.3",
37
- "react-native-masked-text": "^1.13.0",
38
- "react-native-pose": "^0.9.1"
39
- }
40
- }
1
+ {
2
+ "name": "@codeleap/mobile",
3
+ "version": "1.9.28",
4
+ "main": "src/index.ts",
5
+ "author": "Paulo Henrique De Souza <paulosouza300272@gmail.com>",
6
+ "license": "UNLICENSED",
7
+ "repository": "PRIVATE",
8
+ "devDependencies": {
9
+ "@codeleap/config": "*",
10
+ "@types/react-native": "^0.66.15",
11
+ "@types/react-window": "^1.8.5",
12
+ "moti": "^0.18.0",
13
+ "typescript": "^4.5.5"
14
+ },
15
+ "scripts": {
16
+ "build": "tsc --build",
17
+ "lint": "eslint -c .eslintrc.js --fix \"./src/**/*.{ts,tsx,js,jsx}\""
18
+ },
19
+ "peerDependencies": {
20
+ "@codeleap/common": "*",
21
+ "@react-navigation/bottom-tabs": "^6.0.9",
22
+ "@react-navigation/drawer": "^6.1.8",
23
+ "@react-navigation/native": "^6.0.6",
24
+ "@react-navigation/native-stack": "^6.2.5",
25
+ "@react-navigation/stack": "^6.1.1",
26
+ "moti": "^0.18.0",
27
+ "react": "*",
28
+ "react-native": "*",
29
+ "react-native-animatable": "^1.3.3",
30
+ "react-native-fast-image": "^8.5.11",
31
+ "react-native-gesture-handler": "^2.2.0",
32
+ "react-native-image-crop-picker": "*",
33
+ "react-native-keyboard-aware-scroll-view": "^0.9.5",
34
+ "react-native-text-input-mask": "3.1.4"
35
+ },
36
+ "dependencies": {
37
+ "@gorhom/portal": "^1.0.13",
38
+ "@miblanchard/react-native-slider": "^2.1.0",
39
+ "react-native-animatable": "^1.3.3",
40
+ "react-native-masked-text": "^1.13.0",
41
+ "react-native-pose": "^0.9.1"
42
+ }
43
+ }
@@ -1,46 +1,46 @@
1
- import * as React from 'react'
2
- import { ComponentPropsWithoutRef, forwardRef } from 'react'
3
- import { ActivityIndicator as Indicator, StyleSheet } from 'react-native'
4
- import {
5
- ActivityIndicatorComposition,
6
- ActivityIndicatorStyles,
7
- useDefaultComponentStyle,
8
- ComponentVariants,
9
- useCodeleapContext,
10
- } from '@codeleap/common'
11
- import { StylesOf } from '../types/utility'
12
-
13
- export type ActivityIndicatorProps = ComponentPropsWithoutRef<
14
- typeof Indicator
15
- > & {
16
- variants?: ComponentVariants<typeof ActivityIndicatorStyles>['variants']
17
- styles?: StylesOf<ActivityIndicatorComposition>
18
- }
19
-
20
- export const ActivityIndicator = forwardRef<Indicator, ActivityIndicatorProps>(
21
- (activityIndicatorProps, ref) => {
22
- const { variants = [], style, styles: propStyles, ...props } = activityIndicatorProps
23
-
24
- const variantStyles = useDefaultComponentStyle('ActivityIndicator', {
25
- variants,
26
- transform: StyleSheet.flatten,
27
- styles: propStyles,
28
- })
29
-
30
- const { Theme } = useCodeleapContext()
31
-
32
- const styles = StyleSheet.flatten([variantStyles.wrapper, style])
33
- const color = styles?.color || Theme.colors.gray
34
- const size = styles?.height || styles?.width || 'large'
35
-
36
- return (
37
- <Indicator
38
- size={size}
39
- ref={ref}
40
- color={color}
41
- style={styles}
42
- {...props}
43
- />
44
- )
45
- },
46
- )
1
+ import * as React from 'react'
2
+ import { ComponentPropsWithoutRef, forwardRef } from 'react'
3
+ import { ActivityIndicator as Indicator, StyleSheet } from 'react-native'
4
+ import {
5
+ ActivityIndicatorComposition,
6
+ ActivityIndicatorStyles,
7
+ useDefaultComponentStyle,
8
+ ComponentVariants,
9
+ useCodeleapContext,
10
+ } from '@codeleap/common'
11
+ import { StylesOf } from '../types/utility'
12
+
13
+ export type ActivityIndicatorProps = ComponentPropsWithoutRef<
14
+ typeof Indicator
15
+ > & {
16
+ variants?: ComponentVariants<typeof ActivityIndicatorStyles>['variants']
17
+ styles?: StylesOf<ActivityIndicatorComposition>
18
+ }
19
+
20
+ export const ActivityIndicator = forwardRef<Indicator, ActivityIndicatorProps>(
21
+ (activityIndicatorProps, ref) => {
22
+ const { variants = [], style, styles: propStyles, ...props } = activityIndicatorProps
23
+
24
+ const variantStyles = useDefaultComponentStyle('ActivityIndicator', {
25
+ variants,
26
+ transform: StyleSheet.flatten,
27
+ styles: propStyles,
28
+ })
29
+
30
+ const { Theme } = useCodeleapContext()
31
+
32
+ const styles = StyleSheet.flatten([variantStyles.wrapper, style])
33
+ const color = styles?.color || Theme.colors.gray
34
+ const size = styles?.height || styles?.width || 'large'
35
+
36
+ return (
37
+ <Indicator
38
+ size={size}
39
+ ref={ref}
40
+ color={color}
41
+ style={styles}
42
+ {...props}
43
+ />
44
+ )
45
+ },
46
+ )
@@ -1,34 +1,34 @@
1
- import { onUpdate } from '@codeleap/common'
2
- import React, { useRef } from 'react'
3
-
4
- import posed from 'react-native-pose'
5
- import { Touchable } from './Touchable'
6
- import { View } from './View'
7
- const Components = {
8
- Touchable,
9
- View,
10
- }
11
-
12
- const PosedComponents = Object.fromEntries(
13
- Object.entries(Components).map(([key, Render]) => [key, posed(Render)]),
14
- )
15
-
16
- type AnimatedComponents = typeof Components
17
- type CP = keyof AnimatedComponents
18
-
19
- type AnimatedProps<T extends CP, CFG = Record<string, any>> = {
20
- component: T
21
- config: CFG
22
- pose: keyof CFG
23
- initialPose?: keyof CFG
24
- } & Omit<Parameters<AnimatedComponents[T]>[0], 'component'>
25
-
26
- export const Animated = <T extends CP, CFG = any>({
27
- config,
28
- component,
29
- ...props
30
- }: AnimatedProps<T, CFG>) => {
31
- const Component = useRef(PosedComponents[component](config)).current
32
-
33
- return <Component withParent={false} {...props} />
34
- }
1
+ import { onUpdate } from '@codeleap/common'
2
+ import React, { useRef } from 'react'
3
+
4
+ import posed from 'react-native-pose'
5
+ import { Touchable } from './Touchable'
6
+ import { View } from './View'
7
+ const Components = {
8
+ Touchable,
9
+ View,
10
+ }
11
+
12
+ const PosedComponents = Object.fromEntries(
13
+ Object.entries(Components).map(([key, Render]) => [key, posed(Render)]),
14
+ )
15
+
16
+ type AnimatedComponents = typeof Components
17
+ type CP = keyof AnimatedComponents
18
+
19
+ type AnimatedProps<T extends CP, CFG = Record<string, any>> = {
20
+ component: T
21
+ config: CFG
22
+ pose: keyof CFG
23
+ initialPose?: keyof CFG
24
+ } & Omit<Parameters<AnimatedComponents[T]>[0], 'component'>
25
+
26
+ export const Animated = <T extends CP, CFG = any>({
27
+ config,
28
+ component,
29
+ ...props
30
+ }: AnimatedProps<T, CFG>) => {
31
+ const Component = useRef(PosedComponents[component](config)).current
32
+
33
+ return <Component withParent={false} {...props} />
34
+ }
@@ -1,95 +1,117 @@
1
- import * as React from 'react'
2
- import {
3
- useDefaultComponentStyle,
4
- ButtonStyles,
5
- ComponentVariants,
6
- ButtonComposition,
7
- ButtonParts,
8
- IconPlaceholder,
9
- } from '@codeleap/common'
10
- import { forwardRef } from 'react'
11
- import { StylesOf } from '../types/utility'
12
- import { Text } from './Text'
13
- import { Touchable, TouchableProps } from './Touchable'
14
- import { Icon } from './Icon'
15
- import { ActivityIndicator } from './ActivityIndicator'
16
- import { StyleSheet, TouchableOpacity } from 'react-native'
17
-
18
- export type ButtonProps = Omit<TouchableProps, 'variants'> &
19
- ComponentVariants<typeof ButtonStyles> & {
20
- text?: string
21
- rightIcon?: IconPlaceholder
22
- icon?: IconPlaceholder
23
- styles?: StylesOf<ButtonComposition>
24
- loading?: boolean
25
- debounce?: number
26
- debugName: string
27
- }
28
-
29
- export const Button = forwardRef<TouchableOpacity, ButtonProps>((buttonProps, ref) => {
30
- const {
31
- variants = [],
32
- children,
33
- icon,
34
- text,
35
- loading,
36
- styles = {},
37
- onPress,
38
- disabled,
39
- rightIcon,
40
- debounce = 600,
41
- style,
42
- ...props
43
- } = buttonProps
44
- const [pressed, setPressed] = React.useState(false)
45
-
46
- const variantStyles = useDefaultComponentStyle('Button', {
47
- variants,
48
- transform: StyleSheet.flatten,
49
- styles,
50
- })
51
-
52
- function handlePress() {
53
- if (!pressed) {
54
- setPressed(true)
55
-
56
- setTimeout(() => setPressed(false), debounce)
57
-
58
- onPress && onPress()
59
- }
60
- }
61
-
62
- function getStyles(key: ButtonParts) {
63
- return [
64
- variantStyles[key],
65
- key === 'wrapper' && style,
66
- disabled && variantStyles[key + ':disabled'],
67
- styles[key],
68
- disabled && styles[key + ':disabled'],
69
- ]
70
- }
71
-
72
- const iconStyle = getStyles('icon')
73
-
74
- const leftIconStyle = StyleSheet.flatten([iconStyle, getStyles('leftIcon')])
75
- const rightIconStyle = StyleSheet.flatten([iconStyle, getStyles('rightIcon')])
76
-
77
- const hasText = !!(text || children)
78
- return (
79
- <Touchable
80
- style={getStyles('wrapper')}
81
- onPress={handlePress}
82
- ref={ref}
83
- disabled={disabled}
84
- debugComponent={'Button'}
85
- {...props}
86
- >
87
-
88
- {loading && <ActivityIndicator style={getStyles('loader')} />}
89
- {!loading && <Icon name={icon} style={leftIconStyle} renderEmptySpace={hasText}/>}
90
- {text ? <Text text={text} style={getStyles('text')} /> : null}
91
- {children}
92
- <Icon name={rightIcon} style={rightIconStyle} renderEmptySpace={hasText} />
93
- </Touchable>
94
- )
95
- })
1
+ import * as React from 'react'
2
+ import {
3
+ useDefaultComponentStyle,
4
+ ButtonStyles,
5
+ ComponentVariants,
6
+ ButtonComposition,
7
+ ButtonParts,
8
+ IconPlaceholder,
9
+ } from '@codeleap/common'
10
+ import { forwardRef } from 'react'
11
+ import { StylesOf } from '../types/utility'
12
+ import { Text } from './Text'
13
+ import { Touchable, TouchableProps } from './Touchable'
14
+ import { Icon } from './Icon'
15
+ import { ActivityIndicator } from './ActivityIndicator'
16
+ import { StyleSheet, TouchableOpacity } from 'react-native'
17
+
18
+ type ChildProps = {
19
+ styles: StylesOf<ButtonParts>
20
+ pressed: boolean
21
+ props: Omit<ButtonProps, 'children'>
22
+ }
23
+
24
+ export type ButtonProps = Omit<TouchableProps, 'variants'> &
25
+ ComponentVariants<typeof ButtonStyles> & {
26
+ text?: string
27
+ rightIcon?: IconPlaceholder
28
+ icon?: IconPlaceholder
29
+ styles?: StylesOf<ButtonComposition>
30
+ loading?: boolean
31
+ debounce?: number
32
+ debugName: string
33
+ children?: React.ReactNode | ((props: ChildProps) => React.ReactNode)
34
+ }
35
+
36
+ export const Button = forwardRef<TouchableOpacity, ButtonProps>((buttonProps, ref) => {
37
+ const {
38
+ variants = [],
39
+ children,
40
+ icon,
41
+ text,
42
+ loading,
43
+ styles = {},
44
+ onPress,
45
+ disabled,
46
+ rightIcon,
47
+ debounce = 600,
48
+ style,
49
+ ...props
50
+ } = buttonProps
51
+ const [pressed, setPressed] = React.useState(false)
52
+
53
+ const variantStyles = useDefaultComponentStyle('Button', {
54
+ variants,
55
+ transform: StyleSheet.flatten,
56
+ styles,
57
+ })
58
+
59
+ function handlePress() {
60
+ if (!pressed) {
61
+ setPressed(true)
62
+
63
+ setTimeout(() => setPressed(false), debounce)
64
+
65
+ onPress && onPress()
66
+ }
67
+ }
68
+
69
+ function getStyles(key: ButtonParts) {
70
+ return [
71
+ variantStyles[key],
72
+ key === 'wrapper' && style,
73
+ disabled && variantStyles[key + ':disabled'],
74
+ styles[key],
75
+ disabled && styles[key + ':disabled'],
76
+ ]
77
+ }
78
+
79
+ const iconStyle = getStyles('icon')
80
+
81
+ const leftIconStyle = StyleSheet.flatten([iconStyle, getStyles('leftIcon')])
82
+ const rightIconStyle = StyleSheet.flatten([iconStyle, getStyles('rightIcon')])
83
+
84
+ const hasText = !!(text || children)
85
+
86
+ const _styles = {
87
+ wrapper: getStyles('wrapper'),
88
+ loader: getStyles('loader'),
89
+ leftIcon: leftIconStyle,
90
+ rightIcon: rightIconStyle,
91
+ text: getStyles('text'),
92
+ icon: getStyles('icon'),
93
+
94
+ }
95
+
96
+ const childrenContent = typeof children === 'function' ?
97
+ children({ styles: _styles, props: buttonProps, pressed })
98
+ : children
99
+
100
+ return (
101
+ <Touchable
102
+ style={_styles.wrapper}
103
+ onPress={handlePress}
104
+ ref={ref}
105
+ disabled={disabled}
106
+ debugComponent={'Button'}
107
+ {...props}
108
+ >
109
+
110
+ {loading && <ActivityIndicator style={_styles.loader} />}
111
+ {!loading && <Icon name={icon} style={_styles.leftIcon} renderEmptySpace={hasText}/>}
112
+ {text ? <Text text={text} style={_styles.text} /> : null}
113
+ {childrenContent}
114
+ <Icon name={rightIcon} style={_styles.rightIcon} renderEmptySpace={hasText} />
115
+ </Touchable>
116
+ )
117
+ })
@@ -1,85 +1,85 @@
1
- import * as React from 'react'
2
- import {
3
- ComponentVariants,
4
- useDefaultComponentStyle,
5
- StylesOf,
6
- Form,
7
- useValidate,
8
- } from '@codeleap/common'
9
- import { ComponentPropsWithRef, forwardRef, ReactNode } from 'react'
10
- import { Switch as NativeCheckbox } from 'react-native'
11
- import { InputLabel, FormError } from '../TextInput'
12
- import { View } from '../View'
13
- import { Touchable } from '../Touchable'
14
- import {
15
- MobileCheckboxStyles as CheckboxStyles,
16
- MobileCheckboxComposition as CheckboxComposition,
17
- } from './styles'
18
- export * from './styles'
19
-
20
- type NativeCheckboxProps = Omit<
21
- ComponentPropsWithRef<typeof NativeCheckbox>,
22
- 'thumbColor' | 'trackColor'
23
- >
24
- type CheckboxProps = NativeCheckboxProps & {
25
- variants?: ComponentVariants<typeof CheckboxStyles>['variants']
26
- label?: ReactNode
27
- styles?: StylesOf<CheckboxComposition>
28
- validate?: Form.ValidatorFunctionWithoutForm | string
29
- required?: boolean
30
- }
31
-
32
- export const Checkbox = forwardRef<NativeCheckbox, CheckboxProps>(
33
- (checkboxProps, ref) => {
34
- const {
35
- variants = [],
36
- style = {},
37
- styles = {},
38
- label,
39
- value,
40
- onValueChange,
41
- validate,
42
- required,
43
- ...props
44
- } = checkboxProps
45
-
46
- const variantStyles = useDefaultComponentStyle('Checkbox', {
47
- // @ts-ignore
48
- variants,
49
- })
50
-
51
- const { error, showError } = useValidate(value, validate)
52
-
53
- function getStyles(key: CheckboxComposition) {
54
- return [
55
- variantStyles[key],
56
- variantStyles[key],
57
- key === 'wrapper' ? style : {},
58
- value ? variantStyles[key + ':checked'] : {},
59
- value ? styles[key + ':checked'] : {},
60
- showError ? variantStyles[key + ':error'] : {},
61
- showError ? styles[key + ':error'] : {},
62
- checkboxProps.disabled ? variantStyles[key + ':disabled'] : {},
63
- checkboxProps.disabled ? styles[key + ':disabled'] : {},
64
- ]
65
- }
66
-
67
- return (
68
- <View style={getStyles('wrapper')} {...props}>
69
- <Touchable
70
- debugName={`Set checkbox value to ${!value}`}
71
- style={getStyles('input')}
72
- onPress={() => onValueChange(!value)}
73
- >
74
- <View style={getStyles('checkmarkWrapper')}>
75
- <View style={getStyles('checkmark')} />
76
- </View>
77
- <View style={getStyles('labelWrapper')}>
78
- <InputLabel label={label} style={getStyles('label')} required={required}/>
79
- </View>
80
- </Touchable>
81
- <FormError message={error.message} style={getStyles('error')} />
82
- </View>
83
- )
84
- },
85
- )
1
+ import * as React from 'react'
2
+ import {
3
+ ComponentVariants,
4
+ useDefaultComponentStyle,
5
+ StylesOf,
6
+ Form,
7
+ useValidate,
8
+ } from '@codeleap/common'
9
+ import { ComponentPropsWithRef, forwardRef, ReactNode } from 'react'
10
+ import { Switch as NativeCheckbox } from 'react-native'
11
+ import { InputLabel, FormError } from '../TextInput'
12
+ import { View } from '../View'
13
+ import { Touchable } from '../Touchable'
14
+ import {
15
+ MobileCheckboxStyles as CheckboxStyles,
16
+ MobileCheckboxComposition as CheckboxComposition,
17
+ } from './styles'
18
+ export * from './styles'
19
+
20
+ type NativeCheckboxProps = Omit<
21
+ ComponentPropsWithRef<typeof NativeCheckbox>,
22
+ 'thumbColor' | 'trackColor'
23
+ >
24
+ type CheckboxProps = NativeCheckboxProps & {
25
+ variants?: ComponentVariants<typeof CheckboxStyles>['variants']
26
+ label?: ReactNode
27
+ styles?: StylesOf<CheckboxComposition>
28
+ validate?: Form.ValidatorFunctionWithoutForm | string
29
+ required?: boolean
30
+ }
31
+
32
+ export const Checkbox = forwardRef<NativeCheckbox, CheckboxProps>(
33
+ (checkboxProps, ref) => {
34
+ const {
35
+ variants = [],
36
+ style = {},
37
+ styles = {},
38
+ label,
39
+ value,
40
+ onValueChange,
41
+ validate,
42
+ required,
43
+ ...props
44
+ } = checkboxProps
45
+
46
+ const variantStyles = useDefaultComponentStyle('Checkbox', {
47
+ // @ts-ignore
48
+ variants,
49
+ })
50
+
51
+ const { error, showError } = useValidate(value, validate)
52
+
53
+ function getStyles(key: CheckboxComposition) {
54
+ return [
55
+ variantStyles[key],
56
+ variantStyles[key],
57
+ key === 'wrapper' ? style : {},
58
+ value ? variantStyles[key + ':checked'] : {},
59
+ value ? styles[key + ':checked'] : {},
60
+ showError ? variantStyles[key + ':error'] : {},
61
+ showError ? styles[key + ':error'] : {},
62
+ checkboxProps.disabled ? variantStyles[key + ':disabled'] : {},
63
+ checkboxProps.disabled ? styles[key + ':disabled'] : {},
64
+ ]
65
+ }
66
+
67
+ return (
68
+ <View style={getStyles('wrapper')} {...props}>
69
+ <Touchable
70
+ debugName={`Set checkbox value to ${!value}`}
71
+ style={getStyles('input')}
72
+ onPress={() => onValueChange(!value)}
73
+ >
74
+ <View style={getStyles('checkmarkWrapper')}>
75
+ <View style={getStyles('checkmark')} />
76
+ </View>
77
+ <View style={getStyles('labelWrapper')}>
78
+ <InputLabel label={label} style={getStyles('label')} required={required}/>
79
+ </View>
80
+ </Touchable>
81
+ <FormError message={error.message} style={getStyles('error')} />
82
+ </View>
83
+ )
84
+ },
85
+ )