@codeleap/mobile 1.3.1 → 1.4.0

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 (197) 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.js +9 -6
  6. package/dist/components/ActivityIndicator.js.map +1 -1
  7. package/dist/components/Animated.d.ts +1 -89
  8. package/dist/components/Animated.js +2 -2
  9. package/dist/components/Animated.js.map +1 -1
  10. package/dist/components/Button.d.ts +107 -98
  11. package/dist/components/Button.js +29 -9
  12. package/dist/components/Button.js.map +1 -1
  13. package/dist/components/Checkbox/index.d.ts +1 -1
  14. package/dist/components/Checkbox/index.js +7 -8
  15. package/dist/components/Checkbox/index.js.map +1 -1
  16. package/dist/components/Checkbox/styles.d.ts +47 -43
  17. package/dist/components/Checkbox/styles.js +8 -8
  18. package/dist/components/Checkbox/styles.js.map +1 -1
  19. package/dist/components/ContentView.js +4 -2
  20. package/dist/components/ContentView.js.map +1 -1
  21. package/dist/components/FileInput.d.ts +10 -3
  22. package/dist/components/FileInput.js +94 -32
  23. package/dist/components/FileInput.js.map +1 -1
  24. package/dist/components/Icon.d.ts +4 -6
  25. package/dist/components/Icon.js +25 -11
  26. package/dist/components/Icon.js.map +1 -1
  27. package/dist/components/Image.d.ts +7 -6
  28. package/dist/components/Image.js +4 -4
  29. package/dist/components/Image.js.map +1 -1
  30. package/dist/components/List.d.ts +11 -0
  31. package/dist/components/List.js +77 -0
  32. package/dist/components/List.js.map +1 -0
  33. package/dist/components/Modal/index.d.ts +2 -1
  34. package/dist/components/Modal/index.js +23 -30
  35. package/dist/components/Modal/index.js.map +1 -1
  36. package/dist/components/Modal/styles.d.ts +51 -47
  37. package/dist/components/Modal/styles.js +13 -18
  38. package/dist/components/Modal/styles.js.map +1 -1
  39. package/dist/components/Navigation/Navigation.d.ts +3 -0
  40. package/dist/components/Navigation/Navigation.js +76 -0
  41. package/dist/components/Navigation/Navigation.js.map +1 -0
  42. package/dist/components/Navigation/constants.d.ts +5 -0
  43. package/dist/components/Navigation/constants.js +11 -0
  44. package/dist/components/Navigation/constants.js.map +1 -0
  45. package/dist/components/Navigation/index.d.ts +3 -0
  46. package/dist/components/Navigation/index.js +16 -0
  47. package/dist/components/Navigation/index.js.map +1 -0
  48. package/dist/components/Navigation/types.d.ts +26 -0
  49. package/dist/components/Navigation/types.js +8 -0
  50. package/dist/components/Navigation/types.js.map +1 -0
  51. package/dist/components/Navigation/utils.d.ts +3 -0
  52. package/dist/components/Navigation/utils.js +67 -0
  53. package/dist/components/Navigation/utils.js.map +1 -0
  54. package/dist/components/Overlay.d.ts +5 -5
  55. package/dist/components/Overlay.js +13 -15
  56. package/dist/components/Overlay.js.map +1 -1
  57. package/dist/components/Pager/index.d.ts +19 -0
  58. package/dist/components/Pager/index.js +164 -0
  59. package/dist/components/Pager/index.js.map +1 -0
  60. package/dist/components/Pager/styles.d.ts +51 -0
  61. package/dist/components/Pager/styles.js +44 -0
  62. package/dist/components/Pager/styles.js.map +1 -0
  63. package/dist/components/RadioInput/index.d.ts +1 -0
  64. package/dist/components/RadioInput/index.js +13 -19
  65. package/dist/components/RadioInput/index.js.map +1 -1
  66. package/dist/components/RadioInput/styles.d.ts +48 -44
  67. package/dist/components/RadioInput/styles.js +4 -4
  68. package/dist/components/RadioInput/styles.js.map +1 -1
  69. package/dist/components/Scroll.d.ts +3 -2
  70. package/dist/components/Scroll.js +11 -8
  71. package/dist/components/Scroll.js.map +1 -1
  72. package/dist/components/Sections.d.ts +11 -0
  73. package/dist/components/Sections.js +77 -0
  74. package/dist/components/Sections.js.map +1 -0
  75. package/dist/components/Select/index.d.ts +5 -2
  76. package/dist/components/Select/index.js +118 -5
  77. package/dist/components/Select/index.js.map +1 -1
  78. package/dist/components/Select/styles.d.ts +9 -0
  79. package/dist/components/Select/styles.js +57 -0
  80. package/dist/components/Select/styles.js.map +1 -0
  81. package/dist/components/Select/types.d.ts +33 -0
  82. package/dist/components/Select/types.js +3 -0
  83. package/dist/components/Select/types.js.map +1 -0
  84. package/dist/components/Slider/Mark.d.ts +3 -0
  85. package/dist/components/Slider/Mark.js +32 -0
  86. package/dist/components/Slider/Mark.js.map +1 -0
  87. package/dist/components/Slider/Thumb.d.ts +7 -0
  88. package/dist/components/Slider/Thumb.js +30 -0
  89. package/dist/components/Slider/Thumb.js.map +1 -0
  90. package/dist/components/Slider/index.d.ts +3 -0
  91. package/dist/components/Slider/index.js +94 -0
  92. package/dist/components/Slider/index.js.map +1 -0
  93. package/dist/components/{Slider.d.ts → Slider/types.d.ts} +12 -7
  94. package/dist/components/Slider/types.js +3 -0
  95. package/dist/components/Slider/types.js.map +1 -0
  96. package/dist/components/Switch.d.ts +2 -2
  97. package/dist/components/Switch.js +6 -7
  98. package/dist/components/Switch.js.map +1 -1
  99. package/dist/components/Text.js +5 -5
  100. package/dist/components/Text.js.map +1 -1
  101. package/dist/components/TextInput.d.ts +108 -94
  102. package/dist/components/TextInput.js +28 -25
  103. package/dist/components/TextInput.js.map +1 -1
  104. package/dist/components/Touchable.d.ts +1 -0
  105. package/dist/components/Touchable.js +9 -11
  106. package/dist/components/Touchable.js.map +1 -1
  107. package/dist/components/View.d.ts +97 -175
  108. package/dist/components/View.js +4 -4
  109. package/dist/components/View.js.map +1 -1
  110. package/dist/components/{index.d.ts → components.d.ts} +3 -0
  111. package/dist/components/{index.js → components.js} +4 -1
  112. package/dist/components/components.js.map +1 -0
  113. package/dist/index.d.ts +3 -1
  114. package/dist/index.js +5 -2
  115. package/dist/index.js.map +1 -1
  116. package/dist/modules/documentPicker.d.ts +3 -1
  117. package/dist/modules/documentPicker.js +6 -4
  118. package/dist/modules/documentPicker.js.map +1 -1
  119. package/dist/modules/fastImage.js +1 -1
  120. package/dist/modules/fastImage.js.map +1 -1
  121. package/dist/modules/reactNavigation.d.ts +3 -0
  122. package/dist/modules/reactNavigation.js +11 -0
  123. package/dist/modules/reactNavigation.js.map +1 -0
  124. package/dist/modules/types/fileTypes.d.ts +138 -0
  125. package/dist/modules/types/fileTypes.js +3 -0
  126. package/dist/modules/types/fileTypes.js.map +1 -0
  127. package/dist/types/utility.d.ts +1 -1
  128. package/dist/utils/OSAlert.d.ts +3 -3
  129. package/dist/utils/OSAlert.js.map +1 -1
  130. package/dist/utils/misc.d.ts +2 -0
  131. package/dist/utils/misc.js +26 -0
  132. package/dist/utils/misc.js.map +1 -0
  133. package/dist/utils/styles.js +1 -1
  134. package/dist/utils/styles.js.map +1 -1
  135. package/package.json +6 -3
  136. package/src/components/ActivityIndicator.tsx +38 -28
  137. package/src/components/Animated.tsx +22 -19
  138. package/src/components/Button.tsx +67 -34
  139. package/src/components/Checkbox/index.tsx +60 -48
  140. package/src/components/Checkbox/styles.ts +39 -30
  141. package/src/components/ContentView.tsx +24 -18
  142. package/src/components/FileInput.tsx +161 -52
  143. package/src/components/Icon.tsx +36 -23
  144. package/src/components/Image.tsx +42 -36
  145. package/src/components/List.tsx +100 -0
  146. package/src/components/Modal/index.tsx +109 -94
  147. package/src/components/Modal/styles.ts +62 -66
  148. package/src/components/Navigation/Navigation.tsx +51 -0
  149. package/src/components/Navigation/constants.ts +8 -0
  150. package/src/components/Navigation/index.tsx +3 -0
  151. package/src/components/Navigation/types.ts +37 -0
  152. package/src/components/Navigation/utils.tsx +54 -0
  153. package/src/components/Overlay.tsx +68 -64
  154. package/src/components/Pager/index.tsx +241 -0
  155. package/src/components/Pager/styles.ts +51 -0
  156. package/src/components/RadioInput/index.tsx +76 -52
  157. package/src/components/RadioInput/styles.ts +23 -18
  158. package/src/components/Scroll.tsx +84 -73
  159. package/src/components/Select/index.tsx +179 -6
  160. package/src/components/Select/styles.ts +81 -0
  161. package/src/components/Select/types.ts +41 -0
  162. package/src/components/Slider/Mark.tsx +46 -0
  163. package/src/components/Slider/Thumb.tsx +29 -0
  164. package/src/components/Slider/index.tsx +123 -0
  165. package/src/components/Slider/types.ts +25 -0
  166. package/src/components/Switch.tsx +63 -54
  167. package/src/components/Text.tsx +22 -23
  168. package/src/components/TextInput.tsx +195 -198
  169. package/src/components/Touchable.tsx +43 -30
  170. package/src/components/View.tsx +32 -29
  171. package/src/components/components.ts +26 -0
  172. package/src/index.ts +6 -3
  173. package/src/modules/documentPicker.ts +8 -2
  174. package/src/modules/fastImage.ts +2 -2
  175. package/src/modules/index.d.ts +496 -0
  176. package/src/modules/reactNavigation.ts +4 -0
  177. package/src/modules/types/documentPicker.d.ts +215 -0
  178. package/src/modules/types/fileTypes.ts +138 -0
  179. package/src/types/utility.ts +2 -2
  180. package/src/utils/OSAlert.ts +35 -33
  181. package/src/utils/misc.ts +24 -0
  182. package/src/utils/styles.ts +14 -17
  183. package/dist/components/Drawer.d.ts +0 -23
  184. package/dist/components/Drawer.js +0 -78
  185. package/dist/components/Drawer.js.map +0 -1
  186. package/dist/components/Navigation.d.ts +0 -30
  187. package/dist/components/Navigation.js +0 -126
  188. package/dist/components/Navigation.js.map +0 -1
  189. package/dist/components/Slider.js +0 -130
  190. package/dist/components/Slider.js.map +0 -1
  191. package/dist/components/index.js.map +0 -1
  192. package/dist/modules/cropPicker.d.ts +0 -1
  193. package/dist/modules/cropPicker.js +0 -10
  194. package/dist/modules/cropPicker.js.map +0 -1
  195. package/src/components/Navigation.tsx +0 -125
  196. package/src/components/Slider.tsx +0 -198
  197. package/src/components/index.ts +0 -23
@@ -1,13 +1,20 @@
1
- import * as React from 'react'
2
- import {
3
- View,
4
- ViewProps,
5
- AnimatedView
6
- } from '../View'
7
- import { Button, ButtonProps } from '../Button'
1
+ import * as React from 'react'
2
+ import { View, ViewProps, AnimatedView } from '../View'
3
+ import { Button, ButtonProps } from '../Button'
8
4
  import { Scroll } from '../Scroll'
9
- import { capitalize, ComponentVariants, IconPlaceholder, onUpdate, useComponentStyle, useStyle } from '@codeleap/common'
10
- import { MobileModalComposition, MobileModalStyles, MobileModalParts } from './styles'
5
+ import {
6
+ capitalize,
7
+ ComponentVariants,
8
+ IconPlaceholder,
9
+ onUpdate,
10
+ useDefaultComponentStyle,
11
+ useCodeleapContext,
12
+ } from '@codeleap/common'
13
+ import {
14
+ MobileModalComposition,
15
+ MobileModalStyles,
16
+ MobileModalParts,
17
+ } from './styles'
11
18
  import { StyleSheet } from 'react-native'
12
19
  import { StylesOf } from '../../types/utility'
13
20
 
@@ -15,57 +22,55 @@ import { Touchable } from '../Touchable'
15
22
  import { Text } from '../Text'
16
23
  import { Animated } from '../Animated'
17
24
 
18
-
19
25
  export * from './styles'
20
26
 
21
- export type ModalProps = Omit<ViewProps, 'variants'|'styles'> & {
22
- variants?: ComponentVariants<typeof MobileModalStyles>['variants']
23
- styles?: StylesOf<MobileModalComposition>
24
- dismissOnBackdrop?: boolean
25
- buttonProps?: ButtonProps
26
- accessible?:boolean
27
- showClose?: boolean
28
- closable?: boolean
29
- footer?: React.ReactNode
27
+ export type ModalProps = Omit<ViewProps, 'variants' | 'styles'> & {
28
+ variants?: ComponentVariants<typeof MobileModalStyles>['variants'];
29
+ styles?: StylesOf<MobileModalComposition>;
30
+ dismissOnBackdrop?: boolean;
31
+ buttonProps?: ButtonProps;
32
+ accessible?: boolean;
33
+ showClose?: boolean;
34
+ closable?: boolean;
35
+ footer?: React.ReactNode;
30
36
  title?: React.ReactNode;
31
- debugName?: string
32
- closeIconName?: IconPlaceholder
33
- visible: boolean
34
- toggle: () => void
35
- }
36
-
37
- export const Modal:React.FC<ModalProps> = (modalProps) => {
38
-
39
- const {
40
- variants = [],
41
- styles = { },
42
- style,
37
+ debugName?: string;
38
+ closeIconName?: IconPlaceholder;
39
+ visible: boolean;
40
+ toggle?: () => void;
41
+ scroll?: boolean;
42
+ };
43
+
44
+ export const Modal: React.FC<ModalProps> = (modalProps) => {
45
+ const {
46
+ variants = [],
47
+ styles = {},
43
48
  visible,
44
49
  showClose,
45
50
  closable = true,
46
51
  title,
47
52
  footer,
48
53
  children,
49
- toggle,
54
+ toggle = () => null,
50
55
  dismissOnBackdrop = true,
51
56
  closeIconName = 'close',
52
57
  debugName,
58
+ scroll = true,
53
59
  ...props
54
- } = modalProps
55
-
56
- const variantStyles = useComponentStyle('Modal', {
57
- variants: variants as any,
60
+ } = modalProps
61
+
62
+ const variantStyles = useDefaultComponentStyle('Modal', {
63
+ variants: variants as any,
58
64
  transform: StyleSheet.flatten,
59
- styles
65
+ styles,
60
66
  }) as ModalProps['styles']
61
67
 
62
-
63
- function getStyles(key:MobileModalParts){
64
- const s = [
68
+ function getStyles(key: MobileModalParts) {
69
+ const s = [
65
70
  variantStyles[key],
66
- styles[key],
67
- visible ? variantStyles[key + ':visible'] : {},
68
- visible ? styles[key + ':visible'] : {},
71
+ styles[key],
72
+ visible ? variantStyles[key + ':visible'] : {},
73
+ visible ? styles[key + ':visible'] : {},
69
74
  ]
70
75
 
71
76
  return s
@@ -74,70 +79,80 @@ export const Modal:React.FC<ModalProps> = (modalProps) => {
74
79
  const buttonStyles = React.useMemo(() => {
75
80
  const buttonEntries = {}
76
81
 
77
- for(const [key,style] of Object.entries(variantStyles)){
78
- if(key.startsWith('closeButton')){
79
- buttonEntries[capitalize(key.replace('closeButton', ''), true)] = style
80
- }
82
+ for (const [key, style] of Object.entries(variantStyles)) {
83
+ if (key.startsWith('closeButton')) {
84
+ buttonEntries[capitalize(key.replace('closeButton', ''), true)] = style
85
+ }
81
86
  }
82
87
  return buttonEntries
83
88
  }, [variantStyles])
84
89
 
85
90
  const boxAnimation = {
86
- hidden : {
91
+ hidden: {
87
92
  ...variantStyles['box:pose'],
88
93
  ...styles['box:pose'],
89
94
  },
90
- visible : {
95
+ visible: {
91
96
  ...variantStyles['box:pose:visible'],
92
97
  ...styles['box:pose:visible'],
93
- }
98
+ },
94
99
  }
95
100
 
96
101
  return (
97
-
98
- <View style={getStyles('wrapper')} pointerEvents={visible ? 'auto' : 'none'} >
99
- <AnimatedView style={getStyles('overlay')} transition={'opacity'}/>
100
- <Scroll style={getStyles('innerWrapper')} contentContainerStyle={getStyles('innerWrapperScroll')}>
101
- {
102
- dismissOnBackdrop &&
103
- <Touchable
104
- debugName={`${debugName} modal backdrop`}
105
- activeOpacity={1}
106
- onPress={() => toggle()}
107
- style={getStyles('touchableBackdrop')}
108
-
109
- />
110
- }
111
- <Animated component='View' config={boxAnimation} pose={visible ? 'visible' : 'hidden'} style={getStyles('box')}>
112
- {
113
- (title || showClose) &&
114
-
115
- <View style={getStyles('header')}>
116
-
117
- {typeof title === 'string' ? <Text text={title} style={getStyles('title')}/> : title}
118
-
119
- {
120
- (showClose && closable) &&
121
- <Button debugName={`${debugName} modal close button`} icon={closeIconName as IconPlaceholder} variants={['icon']} onPress={toggle} styles={buttonStyles}/>
122
- }
123
- </View>
124
- }
125
-
126
- <View style={getStyles('body')}>
127
- {children}
128
- </View>
129
- {
130
- footer && <View style={getStyles('footer')}>
131
- {footer}
132
- </View>
133
- }
134
- </Animated>
135
-
136
- </Scroll>
137
- </View>
102
+ <View
103
+ style={getStyles('wrapper')}
104
+ pointerEvents={visible ? 'auto' : 'none'}
105
+ >
106
+ <AnimatedView style={getStyles('overlay')} transition={'opacity'} />
107
+ <Scroll
108
+ style={getStyles('innerWrapper')}
109
+ contentContainerStyle={getStyles('innerWrapperScroll')}
110
+ scrollEnabled={scroll}
111
+ >
112
+ {dismissOnBackdrop && (
113
+ <Touchable
114
+ debugName={`${debugName} modal backdrop`}
115
+ activeOpacity={1}
116
+ onPress={() => toggle()}
117
+ style={getStyles('touchableBackdrop')}
118
+ />
119
+ )}
120
+ <Animated
121
+ component='View'
122
+ config={boxAnimation}
123
+ pose={visible ? 'visible' : 'hidden'}
124
+ style={getStyles('box')}
125
+ >
126
+ {(title || showClose) && (
127
+ <View style={getStyles('header')}>
128
+ {typeof title === 'string' ? (
129
+ <Text text={title} style={getStyles('title')} />
130
+ ) : (
131
+ title
132
+ )}
133
+
134
+ {showClose && closable && (
135
+ <Button
136
+ debugName={`${debugName} modal close button`}
137
+ icon={closeIconName as IconPlaceholder}
138
+ variants={['icon']}
139
+ onPress={toggle}
140
+ styles={buttonStyles}
141
+ />
142
+ )}
143
+ </View>
144
+ )}
145
+
146
+ <View style={getStyles('body')}>{children}</View>
147
+ {footer && (
148
+ <View style={getStyles('footer')}>
149
+ {typeof footer === 'string' ? <Text text={footer} /> : footer}
150
+ </View>
151
+ )}
152
+ </Animated>
153
+ </Scroll>
154
+ </View>
138
155
  )
139
156
  }
140
157
 
141
-
142
-
143
- export default Modal
158
+ export default Modal
@@ -1,47 +1,53 @@
1
- import { ButtonComposition, createDefaultVariantFactory, includePresets, ModalComposition, ModalStyles } from '@codeleap/common'
2
-
1
+ import {
2
+ ButtonComposition,
3
+ createDefaultVariantFactory,
4
+ includePresets,
5
+ ModalComposition,
6
+ ModalStyles,
7
+ assignTextStyle,
8
+ } from '@codeleap/common'
3
9
 
4
10
  export const backgroundTransition = {
5
- duration: 200,
6
- ease: 'easeOut',
7
- useNativeDriver: false,
8
- }
9
-
10
- export const modalTransition = {
11
- duration: 150,
12
- ease: 'easeOut',
13
- useNativeDriver: false,
11
+ duration: 200,
12
+ ease: 'easeOut',
13
+ useNativeDriver: false,
14
14
  }
15
-
16
15
 
17
- export type MobileModalParts =
18
- | 'wrapper'
19
- | 'overlay'
20
- | 'innerWrapper'
21
- | 'innerWrapperScroll'
22
- | 'box'
23
- | 'footer'
24
- | 'body'
25
- | 'header'
26
- | 'touchableBackdrop'
27
- | 'box:pose'
16
+ export const modalTransition = {
17
+ duration: 150,
18
+ ease: 'easeOut',
19
+ useNativeDriver: false,
20
+ }
28
21
 
29
- | 'title'
30
- | `closeButton${Capitalize<ButtonComposition>}`
22
+ export type MobileModalParts =
23
+ | 'wrapper'
24
+ | 'overlay'
25
+ | 'innerWrapper'
26
+ | 'innerWrapperScroll'
27
+ | 'box'
28
+ | 'footer'
29
+ | 'body'
30
+ | 'header'
31
+ | 'touchableBackdrop'
32
+ | 'box:pose'
33
+ | 'title'
34
+ | `closeButton${Capitalize<ButtonComposition>}`;
31
35
 
32
- export type MobileModalComposition = MobileModalParts | `${MobileModalParts}:visible`
36
+ export type MobileModalComposition =
37
+ | MobileModalParts
38
+ | `${MobileModalParts}:visible`;
33
39
 
34
40
  const createModalStyle = createDefaultVariantFactory<MobileModalComposition>()
35
-
36
- const presets = includePresets((style ) => createModalStyle(() => ({wrapper: style})))
41
+
42
+ const presets = includePresets((style) => createModalStyle(() => ({ body: style })),
43
+ )
37
44
 
38
45
  const defaultModalStyles = ModalStyles
39
46
 
40
47
  export const MobileModalStyles = {
41
- ...presets,
42
- ...defaultModalStyles,
43
- default: createModalStyle((Theme) => {
44
-
48
+ ...defaultModalStyles,
49
+ ...presets,
50
+ default: createModalStyle((Theme) => {
45
51
  const fullSize = {
46
52
  ...Theme.presets.whole,
47
53
  position: 'absolute',
@@ -51,53 +57,42 @@ export const MobileModalStyles = {
51
57
 
52
58
  return {
53
59
  wrapper: {
54
- zIndex:1,
60
+ zIndex: 1,
55
61
 
56
- ...fullSize
62
+ ...fullSize,
57
63
  },
58
-
64
+
59
65
  overlay: {
60
66
  opacity: 0,
61
- zIndex: 2,
62
-
67
+
63
68
  backgroundColor: Theme.colors.black,
64
- ...fullSize
69
+ ...fullSize,
65
70
  },
66
- "overlay:visible": {
67
- opacity: 0.5
71
+ 'overlay:visible': {
72
+ opacity: 0.5,
68
73
  },
69
- innerWrapper: {
70
-
71
- zIndex: 3,
72
- },
74
+ innerWrapper: {},
73
75
  innerWrapperScroll: {
74
76
  display: 'flex',
75
77
  alignItems: 'center',
76
78
  ...Theme.presets.justifyCenter,
77
79
  minHeight: Theme.values.height,
78
- zIndex: 3
79
80
  },
80
81
  box: {
81
82
  width: '80%',
82
- backgroundColor: Theme.colors.white,
83
- zIndex: 10,
83
+ backgroundColor: Theme.colors.background,
84
84
  borderRadius: Theme.borderRadius.medium,
85
- ...Theme.spacing.padding(1)
86
-
85
+ ...Theme.spacing.padding(2),
87
86
  },
88
87
  touchableBackdrop: {
89
88
  ...fullSize,
90
-
91
- zIndex:5
92
89
  },
93
- "box:pose": {
90
+ 'box:pose': {
94
91
  opacity: 0,
95
92
  scale: 0.8,
96
- y: Theme.values.height * 0.15,
97
93
  transition: modalTransition,
98
94
  },
99
- "box:pose:visible": {
100
- y: 0,
95
+ 'box:pose:visible': {
101
96
  opacity: 1,
102
97
  scale: 1,
103
98
  transition: modalTransition,
@@ -105,18 +100,19 @@ export const MobileModalStyles = {
105
100
  header: {
106
101
  flexDirection: 'row',
107
102
  ...Theme.presets.justifySpaceBetween,
108
- ...Theme.presets.alignCenter
103
+ ...Theme.presets.alignCenter,
109
104
  },
110
105
  closeButtonWrapper: {
111
106
  alignSelf: 'center',
112
-
113
- }
114
-
115
-
107
+ ...Theme.spacing.marginLeft('auto'),
108
+ },
109
+ title: {
110
+ ...Theme.presets.textCenter,
111
+ ...assignTextStyle('h3')(Theme).text,
112
+ ...Theme.spacing.paddingBottom(1),
113
+ flex: 1,
114
+ },
116
115
  }
117
-
118
- }),
119
- popup: createModalStyle((Theme) => ({
120
-
121
- }))
122
- }
116
+ }),
117
+ popup: createModalStyle((Theme) => ({})),
118
+ }
@@ -0,0 +1,51 @@
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
+
11
+ export const Navigation = <T extends NavigatorType>({type, scenes, ...props}: NavigationProps<T>) => {
12
+ const NavigationComponent = Navigators[type] as TNavigators[T]
13
+
14
+
15
+ return <NavigationComponent.Navigator {...(props as any)}>
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
+ } else {
27
+ screenProps.component = content?.component?.default || content?.component || content?.default
28
+ const nameParts = name.split('.')
29
+
30
+ screenProps = {
31
+ ...screenProps,
32
+ options: (optionProps) => ({
33
+ title: nameParts[nameParts.length - 1] || name.replace('.', ''),
34
+ tabBarIcon: (style) => <Icon name={content?.icon} style={style}/>,
35
+ ...(TypeGuards.isFunction(content.options) ? content.options(optionProps) : content.options),
36
+ }),
37
+ }
38
+ }
39
+
40
+ return (
41
+ // @ts-ignore
42
+ <NavigationComponent.Screen
43
+ key={idx}
44
+ {...screenProps}
45
+
46
+ />
47
+ )
48
+ })
49
+ }
50
+ </NavigationComponent.Navigator>
51
+ }
@@ -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,37 @@
1
+ import { IconPlaceholder } from '@codeleap/common'
2
+ import { Navigators } from './constants'
3
+
4
+
5
+ export type TNavigators = typeof Navigators
6
+ export type NavigatorType = keyof TNavigators
7
+
8
+ export type PropTypes = {
9
+ [P in NavigatorType] : {
10
+ Screen: Omit<React.ComponentPropsWithRef<TNavigators[P]['Screen']>, 'children'|'name'>
11
+ Navigator: Omit<React.ComponentPropsWithRef<TNavigators[P]['Navigator']>, 'children'|'name'>
12
+ Group: Omit<React.ComponentPropsWithRef<TNavigators[P]['Group']>, 'children'|'name'>
13
+ }
14
+ }
15
+ export type SceneComponent<K extends NavigatorType> = PropTypes[K]['Screen']['component']
16
+ export type SceneOptions<K extends NavigatorType> =
17
+ { icon?: IconPlaceholder; default?:SceneComponent<K> } & PropTypes[K]['Screen']
18
+ export type Scene<K extends NavigatorType> = SceneComponent<K> | SceneOptions<K>
19
+
20
+ export type Scenes<K extends NavigatorType> = {
21
+ [x:string] : Scene<K>
22
+ }
23
+
24
+ export type SceneProps = any
25
+
26
+ export type NavigationProps<T extends NavigatorType> = {
27
+ type: T
28
+ scenes: Scenes<T>
29
+ } & PropTypes[T]['Navigator']
30
+
31
+
32
+ // export type NavigationStructure = {
33
+ // [module:string] : {
34
+ // scenes: Scenes,
35
+
36
+ // }
37
+ // }
@@ -0,0 +1,54 @@
1
+ import React from 'react'
2
+ import { Navigation } from './Navigation'
3
+
4
+ export function createAppNavigation(Scenes:any ){
5
+ const AllScenes = Object.entries<any>(Scenes).reduce((allScenes, [moduleName, content]) => {
6
+
7
+ const subScenes = []
8
+
9
+ for (const [name, sceneContent] of Object.entries(content.scenes)){
10
+
11
+ subScenes.push(
12
+ [`${moduleName}.${name}`, sceneContent],
13
+ )
14
+ }
15
+
16
+ return [
17
+ ...allScenes,
18
+ ...subScenes,
19
+ ]
20
+ }, [])
21
+
22
+ const AppScenes = Object.fromEntries(AllScenes)
23
+
24
+ const SCENES_RESULT = Object.fromEntries(
25
+ Object.entries<any>(Scenes)
26
+ .map(([S, { _ig_scenes, exclude, type, navigationProps, ...otherProps }]) => {
27
+ let filterScenes = null
28
+
29
+ if (exclude){
30
+ filterScenes = Object.fromEntries(
31
+ AllScenes.filter(([path]) => !exclude.some(param => path.startsWith(param))),
32
+ )
33
+ }
34
+
35
+ const Component = () => <Navigation
36
+ type={type || 'Stack'}
37
+ scenes={filterScenes || AppScenes}
38
+ screenOptions={{
39
+ headerShown: false,
40
+ ...navigationProps?.screenOptions,
41
+ }}
42
+ {...navigationProps}
43
+ />
44
+
45
+ return [S, {
46
+ ...otherProps,
47
+ component: Component,
48
+ }]
49
+ }),
50
+ )
51
+
52
+ return SCENES_RESULT
53
+ }
54
+