@codeleap/mobile 1.9.26 → 1.9.29

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 (133) hide show
  1. package/dist/components/Backdrop.d.ts +66 -0
  2. package/dist/components/Backdrop.js +70 -0
  3. package/dist/components/Backdrop.js.map +1 -0
  4. package/dist/components/Button.d.ts +11 -4
  5. package/dist/components/Button.js +17 -6
  6. package/dist/components/Button.js.map +1 -1
  7. package/dist/components/EmptyPlaceholder.d.ts +12 -0
  8. package/dist/components/EmptyPlaceholder.js +54 -0
  9. package/dist/components/EmptyPlaceholder.js.map +1 -0
  10. package/dist/components/FileInput.js +0 -2
  11. package/dist/components/FileInput.js.map +1 -1
  12. package/dist/components/Gap.d.ts +8 -0
  13. package/dist/components/Gap.js +60 -0
  14. package/dist/components/Gap.js.map +1 -0
  15. package/dist/components/Image.js +2 -2
  16. package/dist/components/Image.js.map +1 -1
  17. package/dist/components/List.d.ts +25 -6
  18. package/dist/components/List.js +20 -3
  19. package/dist/components/List.js.map +1 -1
  20. package/dist/components/Modal/index.d.ts +2 -1
  21. package/dist/components/Modal/index.js +27 -27
  22. package/dist/components/Modal/index.js.map +1 -1
  23. package/dist/components/Modal/styles.d.ts +4 -15
  24. package/dist/components/Modal/styles.js +27 -23
  25. package/dist/components/Modal/styles.js.map +1 -1
  26. package/dist/components/NewModal/index.d.ts +27 -0
  27. package/dist/components/NewModal/index.js +99 -0
  28. package/dist/components/NewModal/index.js.map +1 -0
  29. package/dist/components/NewModal/styles.d.ts +57 -0
  30. package/dist/components/NewModal/styles.js +58 -0
  31. package/dist/components/NewModal/styles.js.map +1 -0
  32. package/dist/components/NewPager/index.js +3 -7
  33. package/dist/components/NewPager/index.js.map +1 -1
  34. package/dist/components/Overlay.js +13 -9
  35. package/dist/components/Overlay.js.map +1 -1
  36. package/dist/components/Scroll.d.ts +4 -2
  37. package/dist/components/Scroll.js.map +1 -1
  38. package/dist/components/SegmentedControl/index.d.ts +42 -0
  39. package/dist/components/SegmentedControl/index.js +137 -0
  40. package/dist/components/SegmentedControl/index.js.map +1 -0
  41. package/dist/components/SegmentedControl/styles.d.ts +54 -0
  42. package/dist/components/SegmentedControl/styles.js +36 -0
  43. package/dist/components/SegmentedControl/styles.js.map +1 -0
  44. package/dist/components/SegmentedControl.d.ts +5 -0
  45. package/dist/components/SegmentedControl.js +32 -0
  46. package/dist/components/SegmentedControl.js.map +1 -0
  47. package/dist/components/Select/index.js +1 -1
  48. package/dist/components/Select/index.js.map +1 -1
  49. package/dist/components/Text.d.ts +8 -3
  50. package/dist/components/Text.js +12 -5
  51. package/dist/components/Text.js.map +1 -1
  52. package/dist/components/TextInput.d.ts +4 -2
  53. package/dist/components/TextInput.js +2 -2
  54. package/dist/components/TextInput.js.map +1 -1
  55. package/dist/components/Touchable.d.ts +5 -3
  56. package/dist/components/Touchable.js +26 -19
  57. package/dist/components/Touchable.js.map +1 -1
  58. package/dist/components/View.js +1 -1
  59. package/dist/components/View.js.map +1 -1
  60. package/dist/components/_Modal/index.d.ts +27 -0
  61. package/dist/components/_Modal/index.js +114 -0
  62. package/dist/components/_Modal/index.js.map +1 -0
  63. package/dist/components/_Modal/styles.d.ts +64 -0
  64. package/dist/components/_Modal/styles.js +60 -0
  65. package/dist/components/_Modal/styles.js.map +1 -0
  66. package/dist/components/components.d.ts +5 -1
  67. package/dist/components/components.js +5 -1
  68. package/dist/components/components.js.map +1 -1
  69. package/dist/index.d.ts +4 -0
  70. package/dist/index.js +18 -1
  71. package/dist/index.js.map +1 -1
  72. package/dist/modules/textInputMask.d.ts +4 -7
  73. package/dist/modules/types/textInputMask.d.ts +5 -10
  74. package/dist/utils/ModalManager/components.d.ts +12 -0
  75. package/dist/utils/ModalManager/components.js +86 -0
  76. package/dist/utils/ModalManager/components.js.map +1 -0
  77. package/dist/utils/ModalManager/context.d.ts +47 -0
  78. package/dist/utils/ModalManager/context.js +196 -0
  79. package/dist/utils/ModalManager/context.js.map +1 -0
  80. package/dist/utils/ModalManager/index.d.ts +10 -0
  81. package/dist/utils/ModalManager/index.js +12 -0
  82. package/dist/utils/ModalManager/index.js.map +1 -0
  83. package/dist/utils/PermissionManager/components.d.ts +18 -0
  84. package/dist/utils/PermissionManager/components.js +52 -0
  85. package/dist/utils/PermissionManager/components.js.map +1 -0
  86. package/dist/utils/PermissionManager/context.d.ts +52 -0
  87. package/dist/utils/PermissionManager/context.js +325 -0
  88. package/dist/utils/PermissionManager/context.js.map +1 -0
  89. package/dist/utils/PermissionManager/index.d.ts +4 -0
  90. package/dist/utils/PermissionManager/index.js +9 -0
  91. package/dist/utils/PermissionManager/index.js.map +1 -0
  92. package/dist/utils/PermissionManager/types.d.ts +13 -0
  93. package/dist/utils/PermissionManager/types.js +3 -0
  94. package/dist/utils/PermissionManager/types.js.map +1 -0
  95. package/dist/utils/hooks.d.ts +6 -0
  96. package/dist/utils/hooks.js +62 -0
  97. package/dist/utils/hooks.js.map +1 -0
  98. package/package.json +2 -1
  99. package/src/components/Backdrop.tsx +77 -0
  100. package/src/components/Button.tsx +31 -8
  101. package/src/components/EmptyPlaceholder.tsx +53 -0
  102. package/src/components/FileInput.tsx +2 -2
  103. package/src/components/Gap.tsx +40 -0
  104. package/src/components/Image.tsx +3 -2
  105. package/src/components/List.tsx +50 -6
  106. package/src/components/Modal/index.tsx +39 -49
  107. package/src/components/Modal/styles.ts +36 -39
  108. package/src/components/NewPager/index.tsx +5 -7
  109. package/src/components/Overlay.tsx +22 -13
  110. package/src/components/Pager/index.tsx +19 -19
  111. package/src/components/Pager/styles.ts +6 -7
  112. package/src/components/Scroll.tsx +3 -1
  113. package/src/components/SegmentedControl/index.tsx +182 -0
  114. package/src/components/SegmentedControl/styles.ts +65 -0
  115. package/src/components/Select/index.tsx +1 -2
  116. package/src/components/Text.tsx +23 -10
  117. package/src/components/TextInput.tsx +4 -2
  118. package/src/components/Touchable.tsx +31 -20
  119. package/src/components/View.tsx +1 -1
  120. package/src/components/_Modal/index.tsx +162 -0
  121. package/src/components/_Modal/styles.ts +125 -0
  122. package/src/components/components.ts +5 -1
  123. package/src/index.ts +6 -0
  124. package/src/modules/imageCropPicker.d.ts +497 -0
  125. package/src/modules/index.d.ts +186 -0
  126. package/src/modules/types/textInputMask.ts +6 -10
  127. package/src/utils/ModalManager/components.tsx +69 -0
  128. package/src/utils/ModalManager/context.tsx +247 -0
  129. package/src/utils/ModalManager/index.ts +13 -0
  130. package/src/utils/PermissionManager/context.tsx +299 -0
  131. package/src/utils/PermissionManager/index.ts +20 -0
  132. package/src/utils/PermissionManager/types.ts +24 -0
  133. package/src/utils/hooks.ts +65 -0
@@ -0,0 +1,162 @@
1
+ import * as React from 'react'
2
+ import { View, ViewProps, AnimatedView } from '../View'
3
+ import { Button, ButtonProps } from '../Button'
4
+ import { Scroll } from '../Scroll'
5
+ import {
6
+ capitalize,
7
+ ComponentVariants,
8
+ IconPlaceholder,
9
+ useDefaultComponentStyle,
10
+ } from '@codeleap/common'
11
+ import {
12
+ MobileModalComposition,
13
+ MobileModalStyles,
14
+ MobileModalParts,
15
+ } from './styles'
16
+ import { StyleSheet } from 'react-native'
17
+ import { StylesOf } from '../../types/utility'
18
+
19
+ import { Touchable } from '../Touchable'
20
+ import { Text } from '../Text'
21
+ import { Animated } from '../Animated'
22
+
23
+ export * from './styles'
24
+
25
+ export type ModalProps = Omit<ViewProps, 'variants' | 'styles'> & {
26
+ variants?: ComponentVariants<typeof MobileModalStyles>['variants']
27
+ styles?: StylesOf<MobileModalComposition>
28
+ dismissOnBackdrop?: boolean
29
+ buttonProps?: ButtonProps
30
+ accessible?: boolean
31
+ showClose?: boolean
32
+ closable?: boolean
33
+ footer?: React.ReactNode
34
+ title?: React.ReactNode
35
+ debugName?: string
36
+ closeIconName?: IconPlaceholder
37
+ visible: boolean
38
+ toggle?: () => void
39
+ zIndex?: number
40
+ scroll?: boolean
41
+ keyboardAware?: boolean
42
+ }
43
+
44
+ export const Modal: React.FC<ModalProps> = (modalProps) => {
45
+ const {
46
+ variants = [],
47
+ styles = {},
48
+ visible,
49
+ showClose,
50
+ closable = true,
51
+ title,
52
+ footer,
53
+ children,
54
+ toggle = () => null,
55
+ dismissOnBackdrop = true,
56
+ closeIconName = 'close',
57
+ debugName,
58
+ scroll = true,
59
+ keyboardAware = true,
60
+ zIndex = null,
61
+ ...props
62
+ } = modalProps
63
+
64
+ const variantStyles = useDefaultComponentStyle('Modal', {
65
+ variants: variants as any,
66
+ transform: StyleSheet.flatten,
67
+ styles,
68
+ }) as ModalProps['styles']
69
+
70
+ function getStyles(key: MobileModalParts) {
71
+ const s = [
72
+ variantStyles[key],
73
+ styles[key],
74
+ visible ? variantStyles[key + ':visible'] : {},
75
+ visible ? styles[key + ':visible'] : {},
76
+ ]
77
+
78
+ return s
79
+ }
80
+
81
+ const buttonStyles = React.useMemo(() => {
82
+ const buttonEntries = {}
83
+
84
+ for (const [key, style] of Object.entries(variantStyles)) {
85
+ if (key.startsWith('closeButton')) {
86
+ buttonEntries[capitalize(key.replace('closeButton', ''), true)] = style
87
+ }
88
+ }
89
+ return buttonEntries
90
+ }, [variantStyles])
91
+
92
+ const boxAnimation = {
93
+ hidden: {
94
+ ...variantStyles['box:pose'],
95
+ ...styles['box:pose'],
96
+ },
97
+ visible: {
98
+ ...variantStyles['box:pose:visible'],
99
+ ...styles['box:pose:visible'],
100
+ },
101
+ }
102
+
103
+ const wrapperStyle = StyleSheet.flatten(getStyles('wrapper'))
104
+ return (
105
+ <View
106
+ style={[wrapperStyle, { zIndex: typeof zIndex === 'number' ? zIndex : wrapperStyle?.zIndex }]}
107
+ pointerEvents={visible ? 'auto' : 'none'}
108
+ >
109
+ <AnimatedView style={getStyles('overlay')} transition={'opacity'} />
110
+ <Scroll
111
+ style={getStyles('innerWrapper')}
112
+ contentContainerStyle={getStyles('innerWrapperScroll')}
113
+ scrollEnabled={scroll}
114
+ keyboardAware={keyboardAware}
115
+ >
116
+ {dismissOnBackdrop && (
117
+ <Touchable
118
+ debugName={`${debugName} modal backdrop`}
119
+ activeOpacity={1}
120
+ onPress={() => toggle()}
121
+ style={getStyles('touchableBackdrop')}
122
+ />
123
+ )}
124
+ <Animated
125
+ component='View'
126
+ config={boxAnimation}
127
+ pose={visible ? 'visible' : 'hidden'}
128
+ style={getStyles('box')}
129
+ >
130
+ {(title || showClose) && (
131
+ <View style={getStyles('header')}>
132
+ {typeof title === 'string' ? (
133
+ <Text text={title} style={getStyles('title')} />
134
+ ) : (
135
+ title
136
+ )}
137
+
138
+ {showClose && closable && (
139
+ <Button
140
+ debugName={`${debugName} modal close button`}
141
+ icon={closeIconName as IconPlaceholder}
142
+ variants={['icon']}
143
+ onPress={toggle}
144
+ styles={buttonStyles}
145
+ />
146
+ )}
147
+ </View>
148
+ )}
149
+
150
+ <View style={getStyles('body')}>{children}</View>
151
+ {footer && (
152
+ <View style={getStyles('footer')}>
153
+ {typeof footer === 'string' ? <Text text={footer} /> : footer}
154
+ </View>
155
+ )}
156
+ </Animated>
157
+ </Scroll>
158
+ </View>
159
+ )
160
+ }
161
+
162
+ export default Modal
@@ -0,0 +1,125 @@
1
+ import {
2
+ ButtonComposition,
3
+ createDefaultVariantFactory,
4
+ includePresets,
5
+ ModalStyles,
6
+ assignTextStyle,
7
+ } from '@codeleap/common'
8
+
9
+ export const modalTransition = {
10
+ duration: 150,
11
+ ease: 'easeOut',
12
+ useNativeDriver: false,
13
+ }
14
+
15
+ export type MobileModalParts =
16
+ | 'wrapper'
17
+ | 'overlay'
18
+ | 'innerWrapper'
19
+ | 'innerWrapperScroll'
20
+ | 'box'
21
+ | 'footer'
22
+ | 'body'
23
+ | 'header'
24
+ | 'touchableBackdrop'
25
+ | 'box:pose'
26
+ | 'title'
27
+ | `closeButton${Capitalize<ButtonComposition>}`
28
+
29
+ export type MobileModalComposition =
30
+ | MobileModalParts
31
+ | `${MobileModalParts}:visible`
32
+
33
+ const createModalStyle = createDefaultVariantFactory<MobileModalComposition>()
34
+
35
+ const presets = includePresets((style) => createModalStyle(() => ({ body: style })))
36
+
37
+ const defaultModalStyles = ModalStyles
38
+
39
+ export const MobileModalStyles = {
40
+ ...defaultModalStyles,
41
+ ...presets,
42
+ default: createModalStyle((Theme) => {
43
+ const fullSize = {
44
+ ...Theme.presets.whole,
45
+ position: 'absolute',
46
+ width: Theme?.values?.width,
47
+ height: Theme?.values?.height,
48
+ }
49
+
50
+ return {
51
+ wrapper: {
52
+ zIndex: 1,
53
+
54
+ ...fullSize,
55
+ },
56
+
57
+ overlay: {
58
+ opacity: 0,
59
+
60
+ backgroundColor: Theme.colors.black,
61
+ ...fullSize,
62
+ },
63
+ 'overlay:visible': {
64
+ opacity: 0.5,
65
+ },
66
+ innerWrapper: {},
67
+ innerWrapperScroll: {
68
+ display: 'flex',
69
+ alignItems: 'center',
70
+ ...Theme.presets.justifyCenter,
71
+ minHeight: Theme.values.height,
72
+ },
73
+ box: {
74
+ width: '80%',
75
+ backgroundColor: Theme.colors.background,
76
+ borderRadius: Theme.borderRadius.medium,
77
+ ...Theme.spacing.padding(2),
78
+ },
79
+ touchableBackdrop: {
80
+ ...fullSize,
81
+ },
82
+ 'box:pose': {
83
+ opacity: 0,
84
+ scale: 0.8,
85
+ transition: modalTransition,
86
+ },
87
+ 'box:pose:visible': {
88
+ opacity: 1,
89
+ scale: 1,
90
+ transition: modalTransition,
91
+ },
92
+ header: {
93
+ flexDirection: 'row',
94
+ ...Theme.presets.justifySpaceBetween,
95
+ ...Theme.presets.alignCenter,
96
+ },
97
+ closeButtonWrapper: {
98
+ alignSelf: 'center',
99
+ ...Theme.spacing.marginLeft('auto'),
100
+ },
101
+ title: {
102
+ ...Theme.presets.textCenter,
103
+ ...assignTextStyle('h3')(Theme).text,
104
+ ...Theme.spacing.paddingBottom(1),
105
+ flex: 1,
106
+ },
107
+ }
108
+ }),
109
+ popup: createModalStyle(() => ({})),
110
+ fullscreen: createModalStyle((theme) => ({
111
+ overlay: {
112
+ backgroundColor: theme.colors.background,
113
+ },
114
+ 'overlay:visible': {
115
+ opacity: 1,
116
+ },
117
+ box: {
118
+ flex: 1,
119
+ borderRadius: 0,
120
+ width: theme.values.width,
121
+ height: theme.values.height,
122
+ ...theme.presets.center,
123
+ },
124
+ })),
125
+ }
@@ -13,6 +13,7 @@ export * from './Sections'
13
13
  export * from './Select'
14
14
  export * from './FileInput'
15
15
  export * from './Slider'
16
+ export * from './SegmentedControl'
16
17
  export * from './Navigation'
17
18
  export * from './Scroll'
18
19
  export * from './List'
@@ -22,6 +23,9 @@ export * from './ContentView'
22
23
  export * from './Overlay'
23
24
  export * from './Modal'
24
25
 
26
+ export * from './NewPager'
25
27
  export * from './Navigation'
26
28
  export * from './Pager'
27
- export * from './NewPager'
29
+ export * from './EmptyPlaceholder'
30
+ export * from './Gap'
31
+ export * from './Backdrop'
package/src/index.ts CHANGED
@@ -3,4 +3,10 @@ export { default as OSAlert } from './utils/OSAlert'
3
3
  export { default as posed } from 'react-native-pose'
4
4
  export { Linking } from 'react-native'
5
5
  export * from './utils/misc'
6
+ export { ModalManager } from './utils/ModalManager'
7
+ import * as Permissions from './utils/PermissionManager'
6
8
 
9
+ export {
10
+ Permissions,
11
+ }
12
+ export * from './utils/hooks'