@codeleap/mobile 2.3.7 → 2.3.10

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 (344) hide show
  1. package/CodeLeap-Mobile-Packages.code-workspace +7 -7
  2. package/dist/components/ActionIcon/index.d.ts +13 -13
  3. package/dist/components/ActionIcon/index.js +54 -54
  4. package/dist/components/ActionIcon/styles.d.ts +65 -65
  5. package/dist/components/ActionIcon/styles.js +60 -60
  6. package/dist/components/ActivityIndicator/index.d.ts +15 -15
  7. package/dist/components/ActivityIndicator/index.js +58 -58
  8. package/dist/components/ActivityIndicator/styles.d.ts +59 -59
  9. package/dist/components/ActivityIndicator/styles.js +51 -51
  10. package/dist/components/Animated.d.ts +124 -124
  11. package/dist/components/Animated.js +58 -58
  12. package/dist/components/AutoComplete/index.d.ts +33 -33
  13. package/dist/components/AutoComplete/index.js +128 -128
  14. package/dist/components/AutoComplete/styles.d.ts +57 -57
  15. package/dist/components/AutoComplete/styles.js +24 -24
  16. package/dist/components/Backdrop/index.d.ts +14 -14
  17. package/dist/components/Backdrop/index.js +62 -62
  18. package/dist/components/Backdrop/styles.d.ts +53 -53
  19. package/dist/components/Backdrop/styles.js +27 -27
  20. package/dist/components/Button/index.d.ts +246 -246
  21. package/dist/components/Button/index.js +118 -118
  22. package/dist/components/Button/styles.d.ts +65 -65
  23. package/dist/components/Button/styles.js +60 -60
  24. package/dist/components/Calendar/index.d.ts +15 -15
  25. package/dist/components/Calendar/index.js +79 -79
  26. package/dist/components/Calendar/style.d.ts +4 -4
  27. package/dist/components/Calendar/style.js +35 -35
  28. package/dist/components/Calendar/types.d.ts +95 -95
  29. package/dist/components/Calendar/types.js +2 -2
  30. package/dist/components/Checkbox/index.d.ts +15 -15
  31. package/dist/components/Checkbox/index.js +84 -84
  32. package/dist/components/Checkbox/styles.d.ts +56 -56
  33. package/dist/components/Checkbox/styles.js +52 -52
  34. package/dist/components/ContentView/index.d.ts +12 -12
  35. package/dist/components/ContentView/index.js +65 -65
  36. package/dist/components/ContentView/styles.d.ts +53 -53
  37. package/dist/components/ContentView/styles.js +25 -25
  38. package/dist/components/Drawer/index.d.ts +7 -7
  39. package/dist/components/Drawer/index.js +69 -69
  40. package/dist/components/Drawer/styles.d.ts +56 -56
  41. package/dist/components/Drawer/styles.js +38 -38
  42. package/dist/components/EmptyPlaceholder/index.d.ts +22 -22
  43. package/dist/components/EmptyPlaceholder/index.js +77 -77
  44. package/dist/components/EmptyPlaceholder/styles.d.ts +55 -55
  45. package/dist/components/EmptyPlaceholder/styles.js +31 -31
  46. package/dist/components/FileInput/index.d.ts +24 -24
  47. package/dist/components/FileInput/index.js +182 -182
  48. package/dist/components/FileInput/styles.d.ts +53 -53
  49. package/dist/components/FileInput/styles.js +18 -18
  50. package/dist/components/Grid/index.d.ts +32 -32
  51. package/dist/components/Grid/index.js +83 -83
  52. package/dist/components/Grid/styles.d.ts +5 -5
  53. package/dist/components/Grid/styles.js +18 -18
  54. package/dist/components/Icon/index.d.ts +14 -14
  55. package/dist/components/Icon/index.js +78 -78
  56. package/dist/components/Icon/styles.d.ts +61 -61
  57. package/dist/components/Icon/styles.js +48 -48
  58. package/dist/components/Image/index.d.ts +20 -20
  59. package/dist/components/Image/index.js +90 -90
  60. package/dist/components/Image/styles.d.ts +54 -54
  61. package/dist/components/Image/styles.js +24 -24
  62. package/dist/components/ImageView/Spotlight.d.ts +25 -25
  63. package/dist/components/ImageView/Spotlight.js +153 -153
  64. package/dist/components/ImageView/component.d.ts +5 -5
  65. package/dist/components/ImageView/component.js +53 -53
  66. package/dist/components/ImageView/index.d.ts +2 -2
  67. package/dist/components/ImageView/index.js +18 -18
  68. package/dist/components/InputLabel/index.d.ts +12 -12
  69. package/dist/components/InputLabel/index.js +61 -61
  70. package/dist/components/InputLabel/styles.d.ts +4 -4
  71. package/dist/components/InputLabel/styles.js +25 -25
  72. package/dist/components/List/PaginationIndicator.d.ts +67 -67
  73. package/dist/components/List/PaginationIndicator.js +50 -50
  74. package/dist/components/List/index.d.ts +31 -31
  75. package/dist/components/List/index.js +80 -80
  76. package/dist/components/List/styles.d.ts +5 -5
  77. package/dist/components/List/styles.js +26 -26
  78. package/dist/components/Modal/index.d.ts +41 -41
  79. package/dist/components/Modal/index.js +143 -143
  80. package/dist/components/Modal/styles.d.ts +58 -58
  81. package/dist/components/Modal/styles.js +74 -74
  82. package/dist/components/MultiSelect/index.d.ts +6 -6
  83. package/dist/components/MultiSelect/index.js +117 -117
  84. package/dist/components/MultiSelect/styles.d.ts +58 -58
  85. package/dist/components/MultiSelect/styles.js +21 -21
  86. package/dist/components/MultiSelect/types.d.ts +35 -35
  87. package/dist/components/MultiSelect/types.js +2 -2
  88. package/dist/components/Navigation/Navigation.d.ts +3 -3
  89. package/dist/components/Navigation/Navigation.js +83 -83
  90. package/dist/components/Navigation/constants.d.ts +5 -5
  91. package/dist/components/Navigation/constants.js +10 -10
  92. package/dist/components/Navigation/index.d.ts +3 -3
  93. package/dist/components/Navigation/index.js +19 -19
  94. package/dist/components/Navigation/types.d.ts +26 -26
  95. package/dist/components/Navigation/types.js +7 -7
  96. package/dist/components/Navigation/utils.d.ts +3 -3
  97. package/dist/components/Navigation/utils.js +68 -68
  98. package/dist/components/Pager/index.d.ts +26 -26
  99. package/dist/components/Pager/index.js +87 -87
  100. package/dist/components/Pager/styles.d.ts +87 -87
  101. package/dist/components/Pager/styles.js +71 -71
  102. package/dist/components/RadioInput/index.d.ts +27 -27
  103. package/dist/components/RadioInput/index.js +75 -75
  104. package/dist/components/RadioInput/styles.d.ts +58 -58
  105. package/dist/components/RadioInput/styles.js +49 -49
  106. package/dist/components/Scroll/index.d.ts +20 -20
  107. package/dist/components/Scroll/index.js +100 -100
  108. package/dist/components/Scroll/styles.d.ts +4 -4
  109. package/dist/components/Scroll/styles.js +26 -26
  110. package/dist/components/Sections/index.d.ts +11 -11
  111. package/dist/components/Sections/index.js +79 -79
  112. package/dist/components/SegmentedControl/index.d.ts +52 -52
  113. package/dist/components/SegmentedControl/index.js +132 -132
  114. package/dist/components/SegmentedControl/styles.d.ts +60 -60
  115. package/dist/components/SegmentedControl/styles.js +42 -42
  116. package/dist/components/Select/index.d.ts +13 -13
  117. package/dist/components/Select/index.js +130 -130
  118. package/dist/components/Select/styles.d.ts +59 -59
  119. package/dist/components/Select/styles.js +31 -31
  120. package/dist/components/Select/types.d.ts +36 -36
  121. package/dist/components/Select/types.js +2 -2
  122. package/dist/components/Slider/Mark.d.ts +3 -3
  123. package/dist/components/Slider/Mark.js +31 -31
  124. package/dist/components/Slider/Thumb.d.ts +7 -7
  125. package/dist/components/Slider/Thumb.js +29 -29
  126. package/dist/components/Slider/index.d.ts +4 -4
  127. package/dist/components/Slider/index.js +102 -102
  128. package/dist/components/Slider/styles.d.ts +54 -54
  129. package/dist/components/Slider/styles.js +60 -60
  130. package/dist/components/Slider/types.d.ts +26 -26
  131. package/dist/components/Slider/types.js +2 -2
  132. package/dist/components/Switch/index.d.ts +14 -14
  133. package/dist/components/Switch/index.js +84 -84
  134. package/dist/components/Switch/styles.d.ts +55 -55
  135. package/dist/components/Switch/styles.js +33 -33
  136. package/dist/components/Text/index.d.ts +23 -23
  137. package/dist/components/Text/index.js +124 -124
  138. package/dist/components/Text/styles.d.ts +70 -70
  139. package/dist/components/Text/styles.js +30 -30
  140. package/dist/components/TextInput/index.d.ts +181 -181
  141. package/dist/components/TextInput/index.js +213 -213
  142. package/dist/components/TextInput/styles.d.ts +63 -63
  143. package/dist/components/TextInput/styles.js +64 -64
  144. package/dist/components/Touchable/index.d.ts +21 -21
  145. package/dist/components/Touchable/index.js +157 -157
  146. package/dist/components/Touchable/styles.d.ts +58 -58
  147. package/dist/components/Touchable/styles.js +23 -23
  148. package/dist/components/View/index.d.ts +132 -132
  149. package/dist/components/View/index.js +101 -101
  150. package/dist/components/View/styles.d.ts +54 -54
  151. package/dist/components/View/styles.js +28 -28
  152. package/dist/components/components.d.ts +38 -38
  153. package/dist/components/components.js +67 -67
  154. package/dist/components/defaultStyles.d.ts +1369 -1369
  155. package/dist/components/defaultStyles.js +64 -64
  156. package/dist/components/legacy/Modal/index.d.ts +28 -28
  157. package/dist/components/legacy/Modal/index.js +113 -113
  158. package/dist/components/legacy/Modal/styles.d.ts +64 -64
  159. package/dist/components/legacy/Modal/styles.js +59 -59
  160. package/dist/components/legacy/Pager/index.d.ts +20 -20
  161. package/dist/components/legacy/Pager/index.js +167 -167
  162. package/dist/components/legacy/Pager/styles.d.ts +54 -54
  163. package/dist/components/legacy/Pager/styles.js +43 -43
  164. package/dist/components/legacy/index.d.ts +2 -2
  165. package/dist/components/legacy/index.js +18 -18
  166. package/dist/index.d.ts +7 -7
  167. package/dist/index.js +42 -42
  168. package/dist/modules/documentPicker.d.ts +3 -3
  169. package/dist/modules/documentPicker.js +11 -11
  170. package/dist/modules/fastImage.d.ts +1 -1
  171. package/dist/modules/fastImage.js +9 -9
  172. package/dist/modules/reactNavigation.d.ts +5 -5
  173. package/dist/modules/reactNavigation.js +25 -25
  174. package/dist/modules/textInputMask.d.ts +10 -10
  175. package/dist/modules/textInputMask.js +22 -22
  176. package/dist/modules/types/fileTypes.d.ts +138 -138
  177. package/dist/modules/types/fileTypes.js +2 -2
  178. package/dist/modules/types/textInputMask.d.ts +7 -7
  179. package/dist/modules/types/textInputMask.js +2 -2
  180. package/dist/types/index.d.ts +1 -1
  181. package/dist/types/index.js +17 -17
  182. package/dist/types/utility.d.ts +8 -8
  183. package/dist/types/utility.js +2 -2
  184. package/dist/utils/KeyboardAware/context.d.ts +13 -13
  185. package/dist/utils/KeyboardAware/context.js +67 -67
  186. package/dist/utils/KeyboardAware/index.d.ts +8 -8
  187. package/dist/utils/KeyboardAware/index.js +32 -32
  188. package/dist/utils/KeyboardAware/keyboardHooks.d.ts +26 -26
  189. package/dist/utils/KeyboardAware/keyboardHooks.js +89 -89
  190. package/dist/utils/KeyboardAware/lib/KeyboardAwareFlatList.d.ts +3 -3
  191. package/dist/utils/KeyboardAware/lib/KeyboardAwareFlatList.js +8 -8
  192. package/dist/utils/KeyboardAware/lib/KeyboardAwareHOC.d.ts +67 -67
  193. package/dist/utils/KeyboardAware/lib/KeyboardAwareHOC.js +450 -450
  194. package/dist/utils/KeyboardAware/lib/KeyboardAwareInterface.d.ts +7 -7
  195. package/dist/utils/KeyboardAware/lib/KeyboardAwareInterface.js +3 -3
  196. package/dist/utils/KeyboardAware/lib/KeyboardAwareScrollView.d.ts +3 -3
  197. package/dist/utils/KeyboardAware/lib/KeyboardAwareScrollView.js +9 -9
  198. package/dist/utils/KeyboardAware/lib/KeyboardAwareSectionList.d.ts +3 -3
  199. package/dist/utils/KeyboardAware/lib/KeyboardAwareSectionList.js +9 -9
  200. package/dist/utils/KeyboardAware/types.d.ts +1 -1
  201. package/dist/utils/KeyboardAware/types.js +6 -6
  202. package/dist/utils/ModalManager/components.d.ts +20 -20
  203. package/dist/utils/ModalManager/components.js +117 -117
  204. package/dist/utils/ModalManager/context.d.ts +48 -48
  205. package/dist/utils/ModalManager/context.js +204 -204
  206. package/dist/utils/ModalManager/index.d.ts +11 -11
  207. package/dist/utils/ModalManager/index.js +12 -12
  208. package/dist/utils/OSAlert.d.ts +32 -32
  209. package/dist/utils/OSAlert.js +142 -142
  210. package/dist/utils/PermissionManager/context.d.ts +52 -52
  211. package/dist/utils/PermissionManager/context.js +315 -315
  212. package/dist/utils/PermissionManager/index.d.ts +4 -4
  213. package/dist/utils/PermissionManager/index.js +8 -8
  214. package/dist/utils/PermissionManager/types.d.ts +13 -13
  215. package/dist/utils/PermissionManager/types.js +2 -2
  216. package/dist/utils/hooks.d.ts +40 -40
  217. package/dist/utils/hooks.js +130 -130
  218. package/dist/utils/index.d.ts +10 -10
  219. package/dist/utils/index.js +39 -39
  220. package/dist/utils/input.d.ts +35 -35
  221. package/dist/utils/input.js +48 -48
  222. package/dist/utils/misc.d.ts +6 -6
  223. package/dist/utils/misc.js +86 -86
  224. package/dist/utils/notifications.d.ts +34 -34
  225. package/dist/utils/notifications.js +267 -267
  226. package/dist/utils/theme.d.ts +42 -42
  227. package/dist/utils/theme.js +52 -52
  228. package/package.json +54 -54
  229. package/src/components/ActionIcon/index.tsx +32 -0
  230. package/src/components/ActionIcon/styles.ts +97 -0
  231. package/src/components/ActivityIndicator/index.tsx +50 -0
  232. package/src/components/ActivityIndicator/styles.ts +68 -0
  233. package/src/components/Animated.tsx +34 -0
  234. package/src/components/AutoComplete/index.tsx +163 -0
  235. package/src/components/AutoComplete/styles.ts +44 -0
  236. package/src/components/Backdrop/index.tsx +48 -0
  237. package/src/components/Backdrop/styles.ts +33 -0
  238. package/src/components/Button/index.tsx +155 -0
  239. package/src/components/Button/styles.ts +129 -0
  240. package/src/components/Calendar/index.tsx +65 -0
  241. package/src/components/Calendar/style.ts +35 -0
  242. package/src/components/Calendar/types.ts +102 -0
  243. package/src/components/Checkbox/index.tsx +91 -0
  244. package/src/components/Checkbox/styles.ts +81 -0
  245. package/src/components/ContentView/index.tsx +63 -0
  246. package/src/components/ContentView/styles.ts +24 -0
  247. package/src/components/Drawer/index.tsx +33 -0
  248. package/src/components/Drawer/styles.ts +43 -0
  249. package/src/components/EmptyPlaceholder/index.tsx +88 -0
  250. package/src/components/EmptyPlaceholder/styles.ts +58 -0
  251. package/src/components/FileInput/index.tsx +181 -0
  252. package/src/components/FileInput/styles.ts +15 -0
  253. package/src/components/Grid/index.tsx +117 -0
  254. package/src/components/Grid/styles.ts +11 -0
  255. package/src/components/Icon/index.tsx +69 -0
  256. package/src/components/Icon/styles.ts +57 -0
  257. package/src/components/Image/index.tsx +91 -0
  258. package/src/components/Image/styles.ts +20 -0
  259. package/src/components/ImageView/Spotlight.tsx +157 -0
  260. package/src/components/ImageView/component.tsx +38 -0
  261. package/src/components/ImageView/index.ts +2 -0
  262. package/src/components/InputLabel/index.tsx +38 -0
  263. package/src/components/InputLabel/styles.ts +19 -0
  264. package/src/components/List/PaginationIndicator.tsx +71 -0
  265. package/src/components/List/index.tsx +114 -0
  266. package/src/components/List/styles.ts +19 -0
  267. package/src/components/Modal/index.tsx +218 -0
  268. package/src/components/Modal/styles.ts +153 -0
  269. package/src/components/MultiSelect/index.tsx +138 -0
  270. package/src/components/MultiSelect/styles.ts +18 -0
  271. package/src/components/MultiSelect/types.ts +42 -0
  272. package/src/components/Navigation/Navigation.tsx +54 -0
  273. package/src/components/Navigation/constants.ts +8 -0
  274. package/src/components/Navigation/index.tsx +3 -0
  275. package/src/components/Navigation/types.ts +35 -0
  276. package/src/components/Navigation/utils.tsx +57 -0
  277. package/src/components/Pager/index.tsx +121 -0
  278. package/src/components/Pager/styles.ts +81 -0
  279. package/src/components/RadioInput/index.tsx +106 -0
  280. package/src/components/RadioInput/styles.ts +67 -0
  281. package/src/components/Scroll/index.tsx +124 -0
  282. package/src/components/Scroll/styles.ts +18 -0
  283. package/src/components/Sections/index.tsx +91 -0
  284. package/src/components/SegmentedControl/index.tsx +204 -0
  285. package/src/components/SegmentedControl/styles.ts +89 -0
  286. package/src/components/Select/index.tsx +167 -0
  287. package/src/components/Select/styles.ts +62 -0
  288. package/src/components/Select/types.ts +43 -0
  289. package/src/components/Slider/Mark.tsx +46 -0
  290. package/src/components/Slider/Thumb.tsx +29 -0
  291. package/src/components/Slider/index.tsx +130 -0
  292. package/src/components/Slider/styles.ts +76 -0
  293. package/src/components/Slider/types.ts +30 -0
  294. package/src/components/Switch/index.tsx +91 -0
  295. package/src/components/Switch/styles.ts +38 -0
  296. package/src/components/Text/index.tsx +124 -0
  297. package/src/components/Text/styles.ts +50 -0
  298. package/src/components/TextInput/index.tsx +319 -0
  299. package/src/components/TextInput/styles.ts +127 -0
  300. package/src/components/Touchable/index.tsx +174 -0
  301. package/src/components/Touchable/styles.ts +28 -0
  302. package/src/components/View/index.tsx +103 -0
  303. package/src/components/View/styles.ts +24 -0
  304. package/src/components/components.ts +42 -0
  305. package/src/components/defaultStyles.ts +62 -0
  306. package/src/components/legacy/Modal/index.tsx +163 -0
  307. package/src/components/legacy/Modal/styles.ts +125 -0
  308. package/src/components/legacy/Pager/index.tsx +242 -0
  309. package/src/components/legacy/Pager/styles.ts +51 -0
  310. package/src/components/legacy/index.ts +2 -0
  311. package/src/index.ts +7 -7
  312. package/src/modules/documentPicker.ts +7 -0
  313. package/src/modules/fastImage.ts +2 -0
  314. package/src/modules/imageCropPicker.d.ts +497 -0
  315. package/src/modules/index.d.ts +682 -0
  316. package/src/modules/reactNavigation.ts +15 -0
  317. package/src/modules/textInputMask.ts +11 -0
  318. package/src/modules/types/documentPicker.d.ts +215 -0
  319. package/src/modules/types/fileTypes.ts +138 -0
  320. package/src/modules/types/textInputMask.ts +9 -0
  321. package/src/types/index.ts +1 -0
  322. package/src/types/utility.ts +9 -0
  323. package/src/utils/KeyboardAware/context.tsx +75 -0
  324. package/src/utils/KeyboardAware/index.ts +17 -0
  325. package/src/utils/KeyboardAware/keyboardHooks.ts +124 -0
  326. package/src/utils/KeyboardAware/lib/KeyboardAwareFlatList.ts +4 -0
  327. package/src/utils/KeyboardAware/lib/KeyboardAwareHOC.tsx +618 -0
  328. package/src/utils/KeyboardAware/lib/KeyboardAwareInterface.ts +13 -0
  329. package/src/utils/KeyboardAware/lib/KeyboardAwareScrollView.ts +6 -0
  330. package/src/utils/KeyboardAware/lib/KeyboardAwareSectionList.ts +6 -0
  331. package/src/utils/KeyboardAware/types.ts +159 -0
  332. package/src/utils/ModalManager/components.tsx +112 -0
  333. package/src/utils/ModalManager/context.tsx +260 -0
  334. package/src/utils/ModalManager/index.ts +16 -0
  335. package/src/utils/OSAlert.ts +180 -0
  336. package/src/utils/PermissionManager/context.tsx +302 -0
  337. package/src/utils/PermissionManager/index.ts +20 -0
  338. package/src/utils/PermissionManager/types.ts +24 -0
  339. package/src/utils/hooks.ts +163 -0
  340. package/src/utils/index.ts +11 -0
  341. package/src/utils/input.ts +51 -0
  342. package/src/utils/misc.ts +83 -0
  343. package/src/utils/notifications.ts +206 -0
  344. package/src/utils/theme.ts +58 -0
@@ -0,0 +1,19 @@
1
+ import { createDefaultVariantFactory } from '@codeleap/common'
2
+ import { ScrollComposition, ScrollStyles } from '../Scroll/styles'
3
+
4
+ export type ListComposition = ScrollComposition | 'separator'
5
+
6
+ const createListStyle = createDefaultVariantFactory<ListComposition>()
7
+
8
+ export const ListStyles = {
9
+ default: createListStyle((theme) => {
10
+ const defaultStyles = ScrollStyles.default(theme)
11
+ return {
12
+ ...defaultStyles,
13
+ separator: {
14
+ width: '100%',
15
+ height: theme.spacing.value(1),
16
+ },
17
+ }
18
+ }),
19
+ }
@@ -0,0 +1,218 @@
1
+ import * as React from 'react'
2
+ import { View, ViewProps } from '../View'
3
+ import { Button, ButtonProps } from '../Button'
4
+ import { Scroll } from '../Scroll'
5
+ import {
6
+ ComponentVariants,
7
+ getNestedStylesByKey,
8
+ IconPlaceholder,
9
+ onUpdate,
10
+ PropsOf,
11
+ TypeGuards,
12
+ useDefaultComponentStyle,
13
+ } from '@codeleap/common'
14
+ import {
15
+ ModalComposition,
16
+ ModalStyles,
17
+ ModalParts,
18
+ } from './styles'
19
+ import { StyleSheet } from 'react-native'
20
+ import { StylesOf } from '../../types/utility'
21
+
22
+ import { useDynamicAnimation } from 'moti'
23
+ import { Backdrop } from '../Backdrop'
24
+ import { useBackButton, useStaticAnimationStyles } from '../../utils/hooks'
25
+ import { Text, TextProps } from '../Text'
26
+ import { Touchable } from '../Touchable'
27
+ import { GetKeyboardAwarePropsOptions } from '../../utils'
28
+
29
+ export * from './styles'
30
+
31
+ export type ModalProps = Omit<ViewProps, 'variants' | 'styles'> & {
32
+ variants?: ComponentVariants<typeof ModalStyles>['variants']
33
+ styles?: StylesOf<ModalComposition>
34
+ dismissOnBackdrop?: boolean
35
+ buttonProps?: ButtonProps
36
+ accessible?: boolean
37
+ showClose?: boolean
38
+ closable?: boolean
39
+ footer?: React.ReactNode
40
+ title?: React.ReactNode
41
+ debugName: string
42
+ closeIconName?: IconPlaceholder
43
+ visible: boolean
44
+ toggle?: () => void
45
+ zIndex?: number
46
+ scroll?: boolean
47
+ header?: React.ReactElement
48
+ closeOnHardwareBackPress?: boolean
49
+ renderHeader?: (props: ModalHeaderProps) => React.ReactElement
50
+ keyboardAware?: GetKeyboardAwarePropsOptions
51
+ scrollProps?: PropsOf<typeof Scroll>
52
+ }
53
+
54
+ export type ModalHeaderProps = Omit<ModalProps, 'styles' | 'renderHeader'> & {
55
+ styles: {
56
+ wrapper: ViewProps['style']
57
+ title: TextProps['style']
58
+ closeButton: ButtonProps['styles']
59
+ }
60
+ }
61
+
62
+ const DefaultHeader:React.FC<ModalHeaderProps> = (props) => {
63
+ const { styles, title = null, showClose = false, closable, debugName, closeIconName = 'close', toggle } = props
64
+ return <>
65
+ {(title || showClose) && (
66
+ <View style={styles.wrapper}>
67
+ {typeof title === 'string' ? (
68
+ <Text text={title} style={styles.title} />
69
+ ) : (
70
+ title
71
+ )}
72
+
73
+ {(showClose && closable) && (
74
+ <Button
75
+ debugName={`${debugName} modal close button`}
76
+ icon={closeIconName as IconPlaceholder}
77
+ variants={['icon']}
78
+ onPress={toggle}
79
+ styles={styles.closeButton}
80
+ />
81
+ )}
82
+ </View>
83
+ )}</>
84
+ }
85
+
86
+ export const Modal: React.FC<ModalProps> = (modalProps) => {
87
+ const {
88
+ variants = [],
89
+ styles = {},
90
+ visible,
91
+
92
+ closable = true,
93
+
94
+ footer,
95
+ children,
96
+ toggle = () => null,
97
+ dismissOnBackdrop = true,
98
+ header = null,
99
+ debugName,
100
+ scroll = true,
101
+ renderHeader,
102
+ zIndex = null,
103
+ scrollProps = {},
104
+ closeOnHardwareBackPress = true,
105
+ ...props
106
+ } = modalProps
107
+
108
+ const variantStyles = useDefaultComponentStyle('u:Modal', {
109
+ variants: variants as any,
110
+ transform: StyleSheet.flatten,
111
+ styles,
112
+ }) as ModalProps['styles']
113
+
114
+ function getStyles(key: ModalParts) {
115
+ const s = [
116
+ variantStyles[key],
117
+ styles[key],
118
+ ]
119
+
120
+ return StyleSheet.flatten(s)
121
+ }
122
+ const buttonStyles = React.useMemo(() => getNestedStylesByKey('closeButton', variantStyles), [variantStyles])
123
+
124
+ const boxAnimationStates = useStaticAnimationStyles(variantStyles, ['box:hidden', 'box:visible'])
125
+
126
+ const boxAnimation = useDynamicAnimation(() => {
127
+ return visible ? boxAnimationStates['box:visible'] : boxAnimationStates['box:hidden']
128
+ })
129
+
130
+ onUpdate(() => {
131
+ boxAnimation.animateTo(visible ? boxAnimationStates['box:visible'] : boxAnimationStates['box:hidden'])
132
+ }, [visible])
133
+ const wrapperStyle = getStyles('wrapper')
134
+
135
+ const ScrollComponent = scroll ? Scroll : View
136
+ const scrollStyle = scroll ? getStyles('scroll') : getStyles('innerWrapper')
137
+
138
+ const headerProps:ModalHeaderProps = {
139
+ ...modalProps,
140
+ styles: {
141
+ wrapper: getStyles('header'),
142
+ title: getStyles('title'),
143
+ closeButton: buttonStyles,
144
+ },
145
+ }
146
+ const Header = renderHeader || DefaultHeader
147
+
148
+ useBackButton(() => {
149
+ if (visible && closeOnHardwareBackPress) {
150
+ toggle()
151
+ return true
152
+ }
153
+ }, [visible, toggle, closeOnHardwareBackPress])
154
+
155
+ return (
156
+ <View
157
+ style={[wrapperStyle, { zIndex: TypeGuards.isNumber(zIndex) ? zIndex : wrapperStyle?.zIndex }]}
158
+ pointerEvents={visible ? 'auto' : 'none'}
159
+ >
160
+
161
+ <Backdrop visible={visible} debugName={`Modal ${debugName} backdrop`} styles={{
162
+ 'wrapper:hidden': variantStyles['backdrop:hidden'],
163
+ 'wrapper:visible': variantStyles['backdrop:visible'],
164
+ wrapper: variantStyles.backdrop,
165
+ }}
166
+ wrapperProps={{
167
+ transition: { ...variantStyles['backdrop:transition'] },
168
+ }}
169
+ />
170
+ <ScrollComponent
171
+ style={scrollStyle}
172
+ contentContainerStyle={getStyles('scrollContent')}
173
+ keyboardAware= {{
174
+ adapt: 'marginBottom',
175
+ baseStyleProp: 'style',
176
+ animated: true,
177
+ enabled: visible,
178
+ enableOnAndroid: true,
179
+ }}
180
+ animated
181
+ { ...scrollProps}
182
+ >
183
+ {dismissOnBackdrop &&
184
+ <Touchable
185
+ onPress={ closable ? toggle : (() => {})}
186
+ debounce={400}
187
+ debugName={'Modal backdrop touchable'}
188
+ style={variantStyles.backdropTouchable}
189
+ android_ripple={null}
190
+ noFeedback
191
+ />}
192
+
193
+ <View
194
+ animated
195
+ state={boxAnimation}
196
+ style={getStyles('box')}
197
+ transition={{ ...variantStyles['box:transition'] }}
198
+
199
+ {...props}
200
+ >
201
+
202
+ {header ? header : <Header {...headerProps}/>}
203
+
204
+ <View style={getStyles('body')}>{children}</View>
205
+ {footer && (
206
+ <View style={getStyles('footer')}>
207
+ {typeof footer === 'string' ? <Text text={footer} /> : footer}
208
+ </View>
209
+ )}
210
+ </View>
211
+
212
+ </ScrollComponent>
213
+ </View>
214
+
215
+ )
216
+ }
217
+
218
+ export default Modal
@@ -0,0 +1,153 @@
1
+ import {
2
+ assignTextStyle,
3
+ ButtonComposition,
4
+ createDefaultVariantFactory,
5
+ includePresets,
6
+ } from '@codeleap/common'
7
+
8
+ export type AnimatableParts = 'box' | 'backdrop'
9
+
10
+ export type ModalParts =
11
+ | AnimatableParts
12
+ | 'wrapper'
13
+ | 'innerWrapper'
14
+
15
+ | 'scrollContent'
16
+ | 'scroll'
17
+ | 'body'
18
+ | 'footer'
19
+ | 'header'
20
+ | 'backdropTouchable'
21
+ | 'title'
22
+ | `closeButton${Capitalize<ButtonComposition>}`
23
+
24
+ export type ModalComposition =
25
+ | ModalParts
26
+ | `${AnimatableParts}:visible`
27
+ | `${AnimatableParts}:hidden`
28
+ | `${AnimatableParts}:transition`
29
+
30
+ const createModalStyle = createDefaultVariantFactory<ModalComposition>()
31
+
32
+ const presets = includePresets((style) => createModalStyle(() => ({ body: style })))
33
+
34
+ export const ModalStyles = {
35
+
36
+ ...presets,
37
+ default: createModalStyle((theme) => {
38
+ const fullSize = {
39
+ ...theme.presets.whole,
40
+ position: 'absolute',
41
+ width: theme.values.width,
42
+ height: theme.values.height,
43
+ maxHeight: theme.values.height,
44
+ }
45
+
46
+ return {
47
+ wrapper: {
48
+ zIndex: 1,
49
+ height: theme.values.height,
50
+ width: theme.values.width,
51
+ ...theme.presets.whole,
52
+ position: 'absolute',
53
+ ...theme.presets.safeAreaTop(),
54
+ paddingBottom: theme.values.bottomNavHeight,
55
+ },
56
+ 'box:transition': {
57
+ scale: {
58
+ duration: theme.values.transitions.modal.duration,
59
+ type: 'timing',
60
+ },
61
+ opacity: {
62
+ duration: theme.values.transitions.modal.duration,
63
+ type: 'timing',
64
+ },
65
+ },
66
+ 'backdrop:transition': {
67
+ opacity: {
68
+ duration: theme.values.transitions.modal.duration,
69
+ type: 'timing',
70
+ },
71
+ },
72
+ backdrop: {
73
+
74
+ backgroundColor: theme.colors.black,
75
+ ...fullSize,
76
+ },
77
+ backdropTouchable: {
78
+ ...fullSize,
79
+ },
80
+ 'backdrop:visible': {
81
+ opacity: 0.5,
82
+ },
83
+ 'backdrop:hidden': {
84
+ opacity: 0,
85
+ },
86
+ innerWrapper: {
87
+ ...theme.presets.alignCenter,
88
+ ...theme.presets.justifyCenter,
89
+ width: theme.values.width,
90
+ flex: 1,
91
+ },
92
+ scroll: {
93
+ width: theme.values.width,
94
+ height: theme.values.window.height,
95
+ maxHeight: theme.values.window.height,
96
+ },
97
+ scrollContent: {
98
+ ...theme.presets.alignCenter,
99
+ ...theme.presets.justifyCenter,
100
+ ...theme.spacing.paddingVertical(2),
101
+ ...theme.presets.fullWidth,
102
+ flex: 1,
103
+ },
104
+ box: {
105
+ width: '80%',
106
+ backgroundColor: theme.colors.background,
107
+ borderRadius: theme.borderRadius.medium,
108
+ ...theme.spacing.padding(2),
109
+ },
110
+
111
+ 'box:hidden': {
112
+ opacity: 0,
113
+ scale: 0.8,
114
+
115
+ },
116
+ 'box:visible': {
117
+ opacity: 1,
118
+ scale: 1,
119
+ },
120
+ header: {
121
+ flexDirection: 'row',
122
+ ...theme.presets.justifySpaceBetween,
123
+ ...theme.presets.alignCenter,
124
+ },
125
+ closeButtonWrapper: {
126
+ alignSelf: 'center',
127
+ ...theme.spacing.marginLeft('auto'),
128
+ },
129
+ title: {
130
+ ...theme.presets.textCenter,
131
+ ...assignTextStyle('h3')(theme).text,
132
+ ...theme.spacing.paddingBottom(1),
133
+ flex: 1,
134
+ },
135
+ }
136
+ }),
137
+ popup: createModalStyle(() => ({})),
138
+ fullscreen: createModalStyle((theme) => ({
139
+ overlay: {
140
+ backgroundColor: theme.colors.background,
141
+ },
142
+ 'overlay:visible': {
143
+ opacity: 1,
144
+ },
145
+ box: {
146
+ flex: 1,
147
+ borderRadius: 0,
148
+ width: theme.values.width,
149
+ height: theme.values.window.height,
150
+ ...theme.presets.center,
151
+ },
152
+ })),
153
+ }
@@ -0,0 +1,138 @@
1
+ import { IconPlaceholder,
2
+ getNestedStylesByKey,
3
+ useDefaultComponentStyle,
4
+ TypeGuards } from '@codeleap/common'
5
+ import React, { useMemo } from 'react'
6
+ import { StyleSheet } from 'react-native'
7
+ import { List } from '../List'
8
+ import { TextInput } from '../TextInput'
9
+ import { MultiSelectProps } from './types'
10
+ import { ModalManager } from '../../utils'
11
+ import { MultiSelectStyles } from './styles'
12
+ import { SelectItem } from '../Select'
13
+
14
+ export * from './styles'
15
+ export const MultiSelect = <T extends string|number = string>(selectProps:MultiSelectProps<T>) => {
16
+ const {
17
+ value,
18
+ onValueChange,
19
+ label,
20
+ styles = {},
21
+ options,
22
+ style,
23
+ variants,
24
+ hideInput = false,
25
+ renderItem,
26
+ listProps,
27
+ placeholder = 'Select',
28
+ arrowIconName = 'selectArrow',
29
+ selectedIcon = 'multiSelectMarker',
30
+ inputProps = {},
31
+ clearable = false,
32
+ clearIconName = 'close',
33
+ validate = null,
34
+ ...drawerProps
35
+ } = selectProps
36
+
37
+ const variantStyles = useDefaultComponentStyle<'u:MultiSelect', typeof MultiSelectStyles>('u:MultiSelect', {
38
+ transform: StyleSheet.flatten,
39
+ rootElement: 'inputWrapper',
40
+ styles,
41
+ variants,
42
+ })
43
+
44
+ const inputStyles = useMemo(
45
+ () => getNestedStylesByKey('input', variantStyles),
46
+ [variantStyles],
47
+ )
48
+
49
+ const close = () => drawerProps?.toggle?.()
50
+
51
+ const select = (itemValue) => {
52
+ const newVal = [...value]
53
+
54
+ if (newVal.includes(itemValue)) {
55
+ newVal.splice(newVal.indexOf(itemValue), 1)
56
+ } else {
57
+ newVal.push(itemValue)
58
+ }
59
+ onValueChange(newVal)
60
+
61
+ }
62
+
63
+ const selectedLabel:string = useMemo(() => {
64
+ const current = options.filter(o => value.includes(o.value)).map(o => o.label)
65
+
66
+ const display = current?.join(', ') ?? placeholder
67
+
68
+ return TypeGuards.isString(display) ? display : ''
69
+ }, [value, placeholder, options])
70
+
71
+ const Item = renderItem || SelectItem
72
+
73
+ const renderListItem = ({ item }) => {
74
+ return <Item
75
+ isSelected={value.includes(item.value)}
76
+ item={item}
77
+ onPress={() => select(item.value)}
78
+ styles={variantStyles}
79
+ icon={selectedIcon as IconPlaceholder}
80
+ />
81
+ }
82
+
83
+ const isEmpty = value.length === 0
84
+ const showClearIcon = !isEmpty && clearable
85
+ const inputIcon = showClearIcon ? clearIconName : arrowIconName
86
+
87
+ const onPressInputIcon = () => {
88
+ if (showClearIcon) {
89
+ onValueChange([])
90
+ } else {
91
+ close?.()
92
+ }
93
+
94
+ }
95
+ return <>
96
+ {
97
+ !hideInput && (
98
+ <TextInput
99
+ caretHidden
100
+ value={selectedLabel}
101
+ rightIcon={{
102
+ icon: inputIcon as IconPlaceholder,
103
+ onPress: onPressInputIcon,
104
+ }}
105
+ editable={false}
106
+ touchableWrapper
107
+ wrapperProps={{
108
+ debugName: 'Select',
109
+ onPress: close,
110
+ }}
111
+ pointerEvents={'none'}
112
+ label={label}
113
+ debugName={'Select input'}
114
+ styles={inputStyles}
115
+ style={style}
116
+ validate={validate}
117
+ {...inputProps}
118
+ />
119
+ )
120
+ }
121
+
122
+ <ModalManager.Drawer scroll={false} title={label} {...drawerProps} styles={variantStyles}>
123
+ <List<MultiSelectProps<any>['options']>
124
+ data={options}
125
+ style={variantStyles.list}
126
+ contentContainerStyle={variantStyles.listContent}
127
+ keyExtractor={(i) => i.value}
128
+ renderItem={renderListItem}
129
+ {...listProps}
130
+ />
131
+ </ModalManager.Drawer>
132
+
133
+ </>
134
+ }
135
+
136
+ export * from './styles'
137
+ export * from './types'
138
+
@@ -0,0 +1,18 @@
1
+ import { createDefaultVariantFactory } from '@codeleap/common'
2
+ import { SelectComposition, SelectStyles } from '../Select'
3
+ type ItemStates = '' | ':selected'
4
+ export type MultiSelectComposition =
5
+ SelectComposition | `itemIcon${ItemStates}`
6
+
7
+ const createMultiSelectStyle = createDefaultVariantFactory<MultiSelectComposition>()
8
+
9
+ export const MultiSelectStyles = {
10
+ ...SelectStyles,
11
+ default: createMultiSelectStyle((theme) => {
12
+ const defaultStyle = SelectStyles.default(theme)
13
+ return {
14
+ ...defaultStyle,
15
+
16
+ }
17
+ }),
18
+ }
@@ -0,0 +1,42 @@
1
+ import {
2
+ ComponentVariants,
3
+ FormTypes,
4
+ IconPlaceholder,
5
+ } from '@codeleap/common'
6
+ import { StylesOf } from '../../types/utility'
7
+ import { DrawerProps } from '../Drawer'
8
+ import { FlatListProps } from '../List'
9
+ import { TextInputProps } from '../TextInput'
10
+ import { MultiSelectComposition, MultiSelectStyles } from './styles'
11
+
12
+ export type MultiSelectRenderFNProps<T> = {
13
+ styles: StylesOf<MultiSelectComposition>
14
+ onPress: () => void
15
+ isSelected?: boolean
16
+ item: FormTypes.Options<T>[number]
17
+ icon?: IconPlaceholder
18
+ }
19
+
20
+ export type MultiSelectRenderFN<T> = (props: MultiSelectRenderFNProps<T>) => JSX.Element
21
+
22
+ type MultiSelectDrawerProps = Omit<DrawerProps, 'variants' | 'styles'>
23
+
24
+ export type MultiSelectProps<T> = MultiSelectDrawerProps & {
25
+ value: T[]
26
+ placeholder?: FormTypes.Label
27
+ label?: FormTypes.Label
28
+ options?: FormTypes.Options<T>
29
+ onValueChange?: (value: T[]) => void
30
+ renderItem?: MultiSelectRenderFN<T>
31
+ styles?: StylesOf<MultiSelectComposition>
32
+ style?: any
33
+ arrowIconName?: IconPlaceholder
34
+ inputProps?: Partial<TextInputProps>
35
+ selectedIcon?: IconPlaceholder
36
+ hideInput?: boolean
37
+ listProps?: Partial<FlatListProps>
38
+ clearable?: boolean
39
+ clearIconName?: IconPlaceholder
40
+ validate?: TextInputProps['validate']
41
+ } & ComponentVariants<typeof MultiSelectStyles>
42
+
@@ -0,0 +1,54 @@
1
+ // @ts-nocheck
2
+ import * as React from 'react'
3
+ import {
4
+ TypeGuards,
5
+ } from '@codeleap/common'
6
+ import { Icon } from '../Icon'
7
+ import { NavigationProps, NavigatorType, PropTypes, TNavigators } from './types'
8
+ import { Navigators } from './constants'
9
+
10
+ export const Navigation = <T extends NavigatorType>({ type, scenes, ...props }: NavigationProps<T>) => {
11
+ const NavigationComponent = Navigators[type] as TNavigators[T]
12
+
13
+ // console.log('render Navigation', { type, scenes, props, defaultProps })
14
+
15
+ return <NavigationComponent.Navigator {...props}>
16
+ {
17
+ Object.entries(scenes).map(([name, content], idx) => {
18
+ const isFunction = TypeGuards.isFunction(content)
19
+
20
+ let screenProps = {
21
+ name,
22
+ } as PropTypes[T]['Screen']
23
+
24
+ if (isFunction) {
25
+ screenProps.component = content
26
+ // console.log('Render NavigationScreen', { scenes, screenProps, content, isFunction }, 'PACKAGES')
27
+ } else {
28
+ screenProps.component = content?.component?.default || content?.component || content?.default
29
+ const nameParts = name.split('.')
30
+ const title = content?.title || nameParts[nameParts.length - 1] || name.replace('.', '')
31
+
32
+ screenProps = {
33
+ ...screenProps,
34
+ options: (optionProps) => ({
35
+ title,
36
+ tabBarIcon: (style) => <Icon name={content?.icon} style={style}/>,
37
+ tabBarIconFocused: content?.iconFocused ? (style) => <Icon name={content?.iconFocused} style={style}/> : null,
38
+ ...(TypeGuards.isFunction(content.options) ? content.options(optionProps) : content.options),
39
+ }),
40
+ }
41
+ // console.log('Render NavigationScreen loop', { scenes, screenProps, content, title, isFunction, props }, 'PACKAGES')
42
+ }
43
+
44
+ return (
45
+ // @ts-ignore
46
+ <NavigationComponent.Screen
47
+ key={idx}
48
+ {...screenProps}
49
+ />
50
+ )
51
+ })
52
+ }
53
+ </NavigationComponent.Navigator>
54
+ }
@@ -0,0 +1,8 @@
1
+ // @ts-nocheck
2
+ import { createBottomTabNavigator, createDrawerNavigator, createStackNavigator } from '../../modules/reactNavigation'
3
+
4
+ export const Navigators = {
5
+ Drawer: createDrawerNavigator(),
6
+ Stack: createStackNavigator(),
7
+ Tab: createBottomTabNavigator(),
8
+ }
@@ -0,0 +1,3 @@
1
+ export * from './Navigation'
2
+ export * from './types'
3
+ export * from './utils'
@@ -0,0 +1,35 @@
1
+ import { IconPlaceholder } from '@codeleap/common'
2
+ import { Navigators } from './constants'
3
+
4
+ export type TNavigators = typeof Navigators
5
+ export type NavigatorType = keyof TNavigators
6
+
7
+ export type PropTypes = {
8
+ [P in NavigatorType] : {
9
+ Screen: Omit<React.ComponentPropsWithRef<TNavigators[P]['Screen']>, 'children'|'name'>
10
+ Navigator: Omit<React.ComponentPropsWithRef<TNavigators[P]['Navigator']>, 'children'|'name'>
11
+ Group: Omit<React.ComponentPropsWithRef<TNavigators[P]['Group']>, 'children'|'name'>
12
+ }
13
+ }
14
+ export type SceneComponent<K extends NavigatorType> = PropTypes[K]['Screen']
15
+ export type SceneOptions<K extends NavigatorType> =
16
+ { icon?: IconPlaceholder; default?:SceneComponent<K> } & PropTypes[K]['Screen']
17
+ export type Scene<K extends NavigatorType> = SceneComponent<K> | SceneOptions<K>
18
+
19
+ export type Scenes<K extends NavigatorType> = {
20
+ [x:string] : Scene<K>
21
+ }
22
+
23
+ export type SceneProps = any
24
+
25
+ export type NavigationProps<T extends NavigatorType> = {
26
+ type: T
27
+ scenes: Scenes<T>
28
+ } & PropTypes[T]['Navigator']
29
+
30
+ // export type NavigationStructure = {
31
+ // [module:string] : {
32
+ // scenes: Scenes,
33
+
34
+ // }
35
+ // }