@codeleap/mobile 1.8.3 → 1.9.1

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 (196) 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 -50
  4. package/dist/components/ActivityIndicator.js.map +1 -1
  5. package/dist/components/Animated.d.ts +15 -15
  6. package/dist/components/Animated.js +58 -54
  7. package/dist/components/Animated.js.map +1 -1
  8. package/dist/components/Button.d.ts +125 -125
  9. package/dist/components/Button.js +82 -78
  10. package/dist/components/Button.js.map +1 -1
  11. package/dist/components/Checkbox/index.d.ts +15 -14
  12. package/dist/components/Checkbox/index.js +77 -73
  13. package/dist/components/Checkbox/index.js.map +1 -1
  14. package/dist/components/Checkbox/styles.d.ts +55 -55
  15. package/dist/components/Checkbox/styles.js +48 -48
  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/FileInput.d.ts +27 -26
  21. package/dist/components/FileInput.js +178 -174
  22. package/dist/components/FileInput.js.map +1 -1
  23. package/dist/components/Icon.d.ts +12 -12
  24. package/dist/components/Icon.js +70 -66
  25. package/dist/components/Icon.js.map +1 -1
  26. package/dist/components/Image.d.ts +18 -18
  27. package/dist/components/Image.js +59 -55
  28. package/dist/components/Image.js.map +1 -1
  29. package/dist/components/List.d.ts +13 -13
  30. package/dist/components/List.js +82 -78
  31. package/dist/components/List.js.map +1 -1
  32. package/dist/components/Modal/index.d.ts +26 -26
  33. package/dist/components/Modal/index.js +112 -108
  34. package/dist/components/Modal/index.js.map +1 -1
  35. package/dist/components/Modal/styles.d.ts +69 -69
  36. package/dist/components/Modal/styles.js +64 -64
  37. package/dist/components/Modal/styles.js.map +0 -0
  38. package/dist/components/Navigation/Navigation.d.ts +3 -3
  39. package/dist/components/Navigation/Navigation.js +87 -83
  40. package/dist/components/Navigation/Navigation.js.map +1 -1
  41. package/dist/components/Navigation/constants.d.ts +5 -5
  42. package/dist/components/Navigation/constants.js +10 -10
  43. package/dist/components/Navigation/constants.js.map +0 -0
  44. package/dist/components/Navigation/index.d.ts +3 -3
  45. package/dist/components/Navigation/index.js +19 -15
  46. package/dist/components/Navigation/index.js.map +1 -1
  47. package/dist/components/Navigation/types.d.ts +26 -26
  48. package/dist/components/Navigation/types.js +7 -7
  49. package/dist/components/Navigation/types.js.map +0 -0
  50. package/dist/components/Navigation/utils.d.ts +3 -3
  51. package/dist/components/Navigation/utils.js +69 -69
  52. package/dist/components/Navigation/utils.js.map +0 -0
  53. package/dist/components/Overlay.d.ts +16 -16
  54. package/dist/components/Overlay.js +69 -65
  55. package/dist/components/Overlay.js.map +1 -1
  56. package/dist/components/Pager/index.d.ts +20 -20
  57. package/dist/components/Pager/index.js +167 -163
  58. package/dist/components/Pager/index.js.map +1 -1
  59. package/dist/components/Pager/styles.d.ts +54 -54
  60. package/dist/components/Pager/styles.js +43 -43
  61. package/dist/components/Pager/styles.js.map +0 -0
  62. package/dist/components/RadioInput/index.d.ts +26 -26
  63. package/dist/components/RadioInput/index.js +72 -68
  64. package/dist/components/RadioInput/index.js.map +1 -1
  65. package/dist/components/RadioInput/styles.d.ts +57 -57
  66. package/dist/components/RadioInput/styles.js +44 -44
  67. package/dist/components/RadioInput/styles.js.map +0 -0
  68. package/dist/components/Scroll.d.ts +12 -12
  69. package/dist/components/Scroll.js +80 -76
  70. package/dist/components/Scroll.js.map +1 -1
  71. package/dist/components/Sections.d.ts +11 -11
  72. package/dist/components/Sections.js +80 -76
  73. package/dist/components/Sections.js.map +1 -1
  74. package/dist/components/Select/index.d.ts +5 -5
  75. package/dist/components/Select/index.js +150 -146
  76. package/dist/components/Select/index.js.map +1 -1
  77. package/dist/components/Select/styles.d.ts +9 -9
  78. package/dist/components/Select/styles.js +56 -56
  79. package/dist/components/Select/styles.js.map +0 -0
  80. package/dist/components/Select/types.d.ts +39 -39
  81. package/dist/components/Select/types.js +2 -2
  82. package/dist/components/Select/types.js.map +0 -0
  83. package/dist/components/Slider/Mark.d.ts +3 -3
  84. package/dist/components/Slider/Mark.js +31 -31
  85. package/dist/components/Slider/Mark.js.map +0 -0
  86. package/dist/components/Slider/Thumb.d.ts +7 -7
  87. package/dist/components/Slider/Thumb.js +29 -29
  88. package/dist/components/Slider/Thumb.js.map +0 -0
  89. package/dist/components/Slider/index.d.ts +3 -3
  90. package/dist/components/Slider/index.js +97 -93
  91. package/dist/components/Slider/index.js.map +1 -1
  92. package/dist/components/Slider/types.d.ts +25 -25
  93. package/dist/components/Slider/types.js +2 -2
  94. package/dist/components/Slider/types.js.map +0 -0
  95. package/dist/components/Switch.d.ts +13 -13
  96. package/dist/components/Switch.js +75 -71
  97. package/dist/components/Switch.js.map +1 -1
  98. package/dist/components/Text.d.ts +12 -12
  99. package/dist/components/Text.js +52 -48
  100. package/dist/components/Text.js.map +1 -1
  101. package/dist/components/TextInput.d.ts +183 -171
  102. package/dist/components/TextInput.js +178 -157
  103. package/dist/components/TextInput.js.map +1 -1
  104. package/dist/components/Touchable.d.ts +14 -14
  105. package/dist/components/Touchable.js +61 -57
  106. package/dist/components/Touchable.js.map +1 -1
  107. package/dist/components/View.d.ts +120 -120
  108. package/dist/components/View.js +54 -50
  109. package/dist/components/View.js.map +1 -1
  110. package/dist/components/components.d.ts +25 -24
  111. package/dist/components/components.js +41 -36
  112. package/dist/components/components.js.map +1 -1
  113. package/dist/index.d.ts +5 -5
  114. package/dist/index.js +28 -24
  115. package/dist/index.js.map +1 -1
  116. package/dist/modules/documentPicker.d.ts +3 -3
  117. package/dist/modules/documentPicker.js +11 -11
  118. package/dist/modules/documentPicker.js.map +0 -0
  119. package/dist/modules/fastImage.d.ts +1 -1
  120. package/dist/modules/fastImage.js +9 -9
  121. package/dist/modules/fastImage.js.map +0 -0
  122. package/dist/modules/reactNavigation.d.ts +3 -3
  123. package/dist/modules/reactNavigation.js +10 -10
  124. package/dist/modules/reactNavigation.js.map +0 -0
  125. package/dist/modules/textInputMask.d.ts +7 -0
  126. package/dist/modules/textInputMask.js +10 -0
  127. package/dist/modules/textInputMask.js.map +1 -0
  128. package/dist/modules/types/fileTypes.d.ts +138 -138
  129. package/dist/modules/types/fileTypes.js +2 -2
  130. package/dist/modules/types/fileTypes.js.map +0 -0
  131. package/dist/modules/types/textInputMask.d.ts +9 -0
  132. package/dist/modules/types/textInputMask.js +3 -0
  133. package/dist/modules/types/textInputMask.js.map +1 -0
  134. package/dist/types/utility.d.ts +2 -2
  135. package/dist/types/utility.js +2 -2
  136. package/dist/types/utility.js.map +0 -0
  137. package/dist/utils/OSAlert.d.ts +31 -31
  138. package/dist/utils/OSAlert.js +141 -141
  139. package/dist/utils/OSAlert.js.map +1 -1
  140. package/dist/utils/misc.d.ts +2 -2
  141. package/dist/utils/misc.js +25 -25
  142. package/dist/utils/misc.js.map +0 -0
  143. package/dist/utils/styles.d.ts +1 -1
  144. package/dist/utils/styles.js +12 -12
  145. package/dist/utils/styles.js.map +0 -0
  146. package/package.json +39 -38
  147. package/src/components/ActivityIndicator.tsx +46 -46
  148. package/src/components/Animated.tsx +34 -34
  149. package/src/components/Button.tsx +95 -95
  150. package/src/components/Checkbox/index.tsx +83 -81
  151. package/src/components/Checkbox/styles.ts +72 -72
  152. package/src/components/ContentView.tsx +58 -58
  153. package/src/components/FileInput.tsx +181 -179
  154. package/src/components/Icon.tsx +58 -58
  155. package/src/components/Image.tsx +61 -61
  156. package/src/components/List.tsx +109 -109
  157. package/src/components/Modal/index.tsx +161 -161
  158. package/src/components/Modal/styles.ts +133 -133
  159. package/src/components/Navigation/Navigation.tsx +58 -58
  160. package/src/components/Navigation/constants.ts +8 -8
  161. package/src/components/Navigation/index.tsx +3 -3
  162. package/src/components/Navigation/types.ts +35 -35
  163. package/src/components/Navigation/utils.tsx +59 -59
  164. package/src/components/Overlay.tsx +77 -77
  165. package/src/components/Pager/index.tsx +242 -242
  166. package/src/components/Pager/styles.ts +51 -51
  167. package/src/components/RadioInput/index.tsx +101 -101
  168. package/src/components/RadioInput/styles.ts +67 -67
  169. package/src/components/Scroll.tsx +104 -104
  170. package/src/components/Sections.tsx +101 -101
  171. package/src/components/Select/index.tsx +195 -195
  172. package/src/components/Select/styles.ts +81 -81
  173. package/src/components/Select/types.ts +45 -45
  174. package/src/components/Slider/Mark.tsx +46 -46
  175. package/src/components/Slider/Thumb.tsx +29 -29
  176. package/src/components/Slider/index.tsx +123 -123
  177. package/src/components/Slider/types.ts +25 -25
  178. package/src/components/Switch.tsx +81 -81
  179. package/src/components/Text.tsx +30 -30
  180. package/src/components/TextInput.tsx +246 -218
  181. package/src/components/Touchable.tsx +64 -64
  182. package/src/components/View.tsx +46 -46
  183. package/src/components/components.ts +26 -26
  184. package/src/index.ts +6 -6
  185. package/src/modules/documentPicker.ts +7 -7
  186. package/src/modules/fastImage.ts +2 -2
  187. package/src/modules/index.d.ts +496 -496
  188. package/src/modules/reactNavigation.ts +4 -4
  189. package/src/modules/textInputMask.ts +7 -0
  190. package/src/modules/types/documentPicker.d.ts +215 -215
  191. package/src/modules/types/fileTypes.ts +138 -138
  192. package/src/modules/types/textInputMask.ts +9 -0
  193. package/src/types/utility.ts +3 -3
  194. package/src/utils/OSAlert.ts +180 -180
  195. package/src/utils/misc.ts +24 -24
  196. package/src/utils/styles.ts +14 -14
@@ -1,81 +1,81 @@
1
- import { assignTextStyle, ButtonParts, createDefaultVariantFactory, TextInputComposition } from '@codeleap/common'
2
- import { MobileModalStyles } from '../Modal'
3
- type ModalParts =
4
- 'Box' |
5
- 'Wrapper' |
6
- 'Header' |
7
- 'Footer' |
8
- 'List' |
9
- 'Item' |
10
- 'ItemText' |
11
- 'Item:selected' |
12
- 'ItemText:selected' |
13
- 'LabelText' |
14
- `CloseButton${Capitalize<ButtonParts>}`
15
-
16
- type InputParts = `input${Capitalize<TextInputComposition>}`
17
-
18
- export type MobileSelectParts = InputParts
19
- | `backdrop`
20
- | `backdrop:visible`
21
- | `backdrop:hidden`
22
- | `modal${ModalParts}`
23
-
24
- export type MobileSelectComposition = MobileSelectParts
25
-
26
- const createSelectStyle = createDefaultVariantFactory<MobileSelectComposition>()
27
-
28
- export const MobileSelectStyles = {
29
- default: createSelectStyle((theme) => ({
30
- modalBox: {
31
- // ...MobileModalStyles.default(theme).box,
32
- backgroundColor: theme.colors.background,
33
- borderTopLeftRadius: 20,
34
- borderTopRightRadius: 20,
35
- zIndex: 1,
36
- elevation: 5,
37
- },
38
- modalWrapper: {
39
- // ...MobileModalStyles.default(theme).wrapper,
40
- flex: 1,
41
- alignItems: 'stretch',
42
- justifyContent: 'flex-end',
43
- },
44
- modalItem: {
45
- ...theme.spacing.paddingVertical(1),
46
- ...theme.spacing.paddingHorizontal(2),
47
- color: theme.colors.text,
48
- },
49
- 'modalItemText:selected': {
50
- color: theme.colors.primary,
51
- },
52
- modalList: {
53
- ...theme.spacing.marginVertical(0.6),
54
- },
55
- backdrop: {
56
- // ...MobileModalStyles.default(theme).overlay,
57
- zIndex: 10,
58
- flex: 1,
59
-
60
- backgroundColor: theme.colors.black,
61
- },
62
- 'backdrop:hidden': {
63
- opacity: 0,
64
- },
65
- 'backdrop:visible': {
66
- opacity: 0.4,
67
- },
68
- modalHeader: {
69
- ...theme.spacing.padding(2),
70
- flexDirection: 'row',
71
- ...theme.presets.alignCenter,
72
- ...theme.presets.justifySpaceBetween,
73
- },
74
- modalLabelText: {
75
- ...assignTextStyle('p2')(theme).text,
76
- },
77
- modalCloseButtonWrapper: {
78
- backgroundColor: 'transparent',
79
- },
80
- })),
81
- }
1
+ import { assignTextStyle, ButtonParts, createDefaultVariantFactory, TextInputComposition } from '@codeleap/common'
2
+ import { MobileModalStyles } from '../Modal'
3
+ type ModalParts =
4
+ 'Box' |
5
+ 'Wrapper' |
6
+ 'Header' |
7
+ 'Footer' |
8
+ 'List' |
9
+ 'Item' |
10
+ 'ItemText' |
11
+ 'Item:selected' |
12
+ 'ItemText:selected' |
13
+ 'LabelText' |
14
+ `CloseButton${Capitalize<ButtonParts>}`
15
+
16
+ type InputParts = `input${Capitalize<TextInputComposition>}`
17
+
18
+ export type MobileSelectParts = InputParts
19
+ | `backdrop`
20
+ | `backdrop:visible`
21
+ | `backdrop:hidden`
22
+ | `modal${ModalParts}`
23
+
24
+ export type MobileSelectComposition = MobileSelectParts
25
+
26
+ const createSelectStyle = createDefaultVariantFactory<MobileSelectComposition>()
27
+
28
+ export const MobileSelectStyles = {
29
+ default: createSelectStyle((theme) => ({
30
+ modalBox: {
31
+ // ...MobileModalStyles.default(theme).box,
32
+ backgroundColor: theme.colors.background,
33
+ borderTopLeftRadius: 20,
34
+ borderTopRightRadius: 20,
35
+ zIndex: 1,
36
+ elevation: 5,
37
+ },
38
+ modalWrapper: {
39
+ // ...MobileModalStyles.default(theme).wrapper,
40
+ flex: 1,
41
+ alignItems: 'stretch',
42
+ justifyContent: 'flex-end',
43
+ },
44
+ modalItem: {
45
+ ...theme.spacing.paddingVertical(1),
46
+ ...theme.spacing.paddingHorizontal(2),
47
+ color: theme.colors.text,
48
+ },
49
+ 'modalItemText:selected': {
50
+ color: theme.colors.primary,
51
+ },
52
+ modalList: {
53
+ ...theme.spacing.marginVertical(0.6),
54
+ },
55
+ backdrop: {
56
+ // ...MobileModalStyles.default(theme).overlay,
57
+ zIndex: 10,
58
+ flex: 1,
59
+
60
+ backgroundColor: theme.colors.black,
61
+ },
62
+ 'backdrop:hidden': {
63
+ opacity: 0,
64
+ },
65
+ 'backdrop:visible': {
66
+ opacity: 0.4,
67
+ },
68
+ modalHeader: {
69
+ ...theme.spacing.padding(2),
70
+ flexDirection: 'row',
71
+ ...theme.presets.alignCenter,
72
+ ...theme.presets.justifySpaceBetween,
73
+ },
74
+ modalLabelText: {
75
+ ...assignTextStyle('p2')(theme).text,
76
+ },
77
+ modalCloseButtonWrapper: {
78
+ backgroundColor: 'transparent',
79
+ },
80
+ })),
81
+ }
@@ -1,45 +1,45 @@
1
- import {
2
- ComponentVariants,
3
- FormTypes,
4
- IconPlaceholder,
5
- } from '@codeleap/common'
6
- import { ReactElement } from 'react'
7
- import { StylesOf } from '../../types/utility'
8
- import { ButtonProps } from '../Button'
9
- import { TextInputProps } from '../TextInput'
10
- import { MobileSelectComposition, MobileSelectStyles } from './styles'
11
-
12
- export type SelectRenderFNProps<T> = FormTypes.Options<T>[number] & {
13
- styles: StylesOf<MobileSelectComposition>
14
- onPress: () => void
15
- selected?: boolean
16
- }
17
-
18
- export type SelectRenderFN<T> = (props: SelectRenderFNProps<T>) => JSX.Element
19
-
20
- export type CustomSelectProps<T> = {
21
- value: T
22
- placeholder?: FormTypes.Label
23
- label?: FormTypes.Label
24
- options?: FormTypes.Options<T>
25
- onDropdownToggle?: (isOpen?: boolean) => void
26
- onValueChange?: (value: T) => void
27
- renderItem?: SelectRenderFN<T>
28
- styles?: StylesOf<MobileSelectComposition>
29
- style?: any
30
- arrowIconName?: IconPlaceholder
31
- scroll?: boolean
32
- closeOnSelect?: boolean
33
- footer?: ReactElement
34
- header?: ReactElement
35
- showLabelOnModal?: boolean
36
- modalCloseIconName?: IconPlaceholder
37
- showClose?: boolean
38
- modalLabel?: string
39
- textInputProps?: Partial<TextInputProps>
40
- closeButtonProps?: Partial<ButtonProps>
41
- toggle: (isOpen?: boolean) => void
42
- visible: boolean
43
- renderList?: (props:CustomSelectProps<T> & {isEmpty: boolean}) => JSX.Element
44
- } & ComponentVariants<typeof MobileSelectStyles> & TextInputProps
45
-
1
+ import {
2
+ ComponentVariants,
3
+ FormTypes,
4
+ IconPlaceholder,
5
+ } from '@codeleap/common'
6
+ import { ReactElement } from 'react'
7
+ import { StylesOf } from '../../types/utility'
8
+ import { ButtonProps } from '../Button'
9
+ import { TextInputProps } from '../TextInput'
10
+ import { MobileSelectComposition, MobileSelectStyles } from './styles'
11
+
12
+ export type SelectRenderFNProps<T> = FormTypes.Options<T>[number] & {
13
+ styles: StylesOf<MobileSelectComposition>
14
+ onPress: () => void
15
+ selected?: boolean
16
+ }
17
+
18
+ export type SelectRenderFN<T> = (props: SelectRenderFNProps<T>) => JSX.Element
19
+
20
+ export type CustomSelectProps<T> = {
21
+ value: T
22
+ placeholder?: FormTypes.Label
23
+ label?: FormTypes.Label
24
+ options?: FormTypes.Options<T>
25
+ onDropdownToggle?: (isOpen?: boolean) => void
26
+ onValueChange?: (value: T) => void
27
+ renderItem?: SelectRenderFN<T>
28
+ styles?: StylesOf<MobileSelectComposition>
29
+ style?: any
30
+ arrowIconName?: IconPlaceholder
31
+ scroll?: boolean
32
+ closeOnSelect?: boolean
33
+ footer?: ReactElement
34
+ header?: ReactElement
35
+ showLabelOnModal?: boolean
36
+ modalCloseIconName?: IconPlaceholder
37
+ showClose?: boolean
38
+ modalLabel?: string
39
+ textInputProps?: Partial<TextInputProps>
40
+ closeButtonProps?: Partial<ButtonProps>
41
+ toggle: (isOpen?: boolean) => void
42
+ visible: boolean
43
+ renderList?: (props:CustomSelectProps<T> & {isEmpty: boolean}) => JSX.Element
44
+ } & ComponentVariants<typeof MobileSelectStyles> & TextInputProps
45
+
@@ -1,46 +1,46 @@
1
- import React from 'react'
2
- import { StyleProp } from 'react-native'
3
- import { Text } from '../Text'
4
- import { View } from '../View'
5
- import { SliderMarkProps } from './types'
6
- export const SliderMark: React.FC<SliderMarkProps> = ({
7
- index,
8
- sliderProps,
9
- styles,
10
- variantStyles,
11
- }) => {
12
- const { labels = [], showMarks } = sliderProps
13
-
14
- const l = labels?.[index] || ''
15
-
16
- const isFirst = index === 0
17
- const isLast = index === labels.length - 1
18
-
19
- const centerAdjustWord = -(l.length * 2)
20
-
21
- const markStyles: StyleProp<any> = {}
22
-
23
- const labelStyles: StyleProp<any> = {}
24
-
25
- if (!isFirst && !isLast) {
26
- labelStyles.left = centerAdjustWord
27
- }
28
-
29
- if (isLast) {
30
- labelStyles.right = -20
31
- markStyles.right = -10
32
- }
33
- return (
34
- <>
35
- {showMarks ? (
36
- <View style={[markStyles, variantStyles.mark, styles.mark]} />
37
- ) : null}
38
- {l ? (
39
- <Text
40
- style={[labelStyles, variantStyles.trackLabels, styles.trackLabels]}
41
- text={l}
42
- />
43
- ) : null}
44
- </>
45
- )
46
- }
1
+ import React from 'react'
2
+ import { StyleProp } from 'react-native'
3
+ import { Text } from '../Text'
4
+ import { View } from '../View'
5
+ import { SliderMarkProps } from './types'
6
+ export const SliderMark: React.FC<SliderMarkProps> = ({
7
+ index,
8
+ sliderProps,
9
+ styles,
10
+ variantStyles,
11
+ }) => {
12
+ const { labels = [], showMarks } = sliderProps
13
+
14
+ const l = labels?.[index] || ''
15
+
16
+ const isFirst = index === 0
17
+ const isLast = index === labels.length - 1
18
+
19
+ const centerAdjustWord = -(l.length * 2)
20
+
21
+ const markStyles: StyleProp<any> = {}
22
+
23
+ const labelStyles: StyleProp<any> = {}
24
+
25
+ if (!isFirst && !isLast) {
26
+ labelStyles.left = centerAdjustWord
27
+ }
28
+
29
+ if (isLast) {
30
+ labelStyles.right = -20
31
+ markStyles.right = -10
32
+ }
33
+ return (
34
+ <>
35
+ {showMarks ? (
36
+ <View style={[markStyles, variantStyles.mark, styles.mark]} />
37
+ ) : null}
38
+ {l ? (
39
+ <Text
40
+ style={[labelStyles, variantStyles.trackLabels, styles.trackLabels]}
41
+ text={l}
42
+ />
43
+ ) : null}
44
+ </>
45
+ )
46
+ }
@@ -1,29 +1,29 @@
1
- import React from 'react'
2
- import { StyleSheet } from 'react-native'
3
- import { Text } from '../Text'
4
- import { View } from '../View'
5
- export const ThumbTooltip = ({ children, visible, styles, variantStyles }) => {
6
- return (
7
- <View
8
- style={[
9
- StyleSheet.flatten([variantStyles.tooltip, styles.tooltip]),
10
- visible
11
- ? StyleSheet.flatten([
12
- variantStyles['tooltip:visible'],
13
- styles['tooltip:visible'],
14
- ])
15
- : StyleSheet.flatten([
16
- variantStyles['tooltip:hidden'],
17
- styles['tooltip:hidden'],
18
- ]),
19
- ]}
20
- >
21
- <Text
22
- style={[variantStyles.tooltipText, styles.tooltipText]}
23
- text={children}
24
- />
25
- <View style={[variantStyles.tooltipArrow, styles.tooltipArrow]} />
26
- </View>
27
- )
28
- }
29
-
1
+ import React from 'react'
2
+ import { StyleSheet } from 'react-native'
3
+ import { Text } from '../Text'
4
+ import { View } from '../View'
5
+ export const ThumbTooltip = ({ children, visible, styles, variantStyles }) => {
6
+ return (
7
+ <View
8
+ style={[
9
+ StyleSheet.flatten([variantStyles.tooltip, styles.tooltip]),
10
+ visible
11
+ ? StyleSheet.flatten([
12
+ variantStyles['tooltip:visible'],
13
+ styles['tooltip:visible'],
14
+ ])
15
+ : StyleSheet.flatten([
16
+ variantStyles['tooltip:hidden'],
17
+ styles['tooltip:hidden'],
18
+ ]),
19
+ ]}
20
+ >
21
+ <Text
22
+ style={[variantStyles.tooltipText, styles.tooltipText]}
23
+ text={children}
24
+ />
25
+ <View style={[variantStyles.tooltipArrow, styles.tooltipArrow]} />
26
+ </View>
27
+ )
28
+ }
29
+
@@ -1,123 +1,123 @@
1
- import { SliderMark } from './Mark'
2
- import { ThumbTooltip } from './Thumb'
3
- import * as React from 'react'
4
- import { Slider as RNSlider } from '@miblanchard/react-native-slider'
5
-
6
- import { useRef } from 'react'
7
- import { StyleSheet } from 'react-native'
8
- import { View } from '../View'
9
- import {
10
- useDefaultComponentStyle,
11
- } from '@codeleap/common'
12
- import { InputLabel } from '../TextInput'
13
- import { SliderProps } from './types'
14
-
15
- export const Slider: React.FC<SliderProps> = (sliderProps) => {
16
- const [tooltipVisible, setTooltipVisible] = React.useState(false)
17
-
18
- const {
19
- debounce,
20
- onValueChange,
21
- labels,
22
- value,
23
- label,
24
- valueOverThumb,
25
- formatTooltip,
26
- styles = {},
27
- style,
28
- tooltipVisibilityWindow = 830,
29
- variants,
30
- ...props
31
- } = sliderProps
32
-
33
- const changeDebounce = typeof debounce === 'number' ? debounce : 100
34
-
35
- const debounceTimeout = useRef(null)
36
- const toggleTooltipTimeout = useRef(null)
37
- const valueRef = useRef(value)
38
-
39
- const variantStyles = useDefaultComponentStyle('Slider', {
40
- variants,
41
- })
42
-
43
- function setValue() {
44
- onValueChange(valueRef.current)
45
- }
46
-
47
- function onChange(val) {
48
- let eventValue = val
49
-
50
- if (Array.isArray(val) && typeof value === 'number') {
51
- eventValue = val[0]
52
- }
53
-
54
- if (eventValue === value) return
55
-
56
- valueRef.current = eventValue as number
57
-
58
- if (debounceTimeout.current) clearTimeout(debounceTimeout.current)
59
-
60
- debounceTimeout.current = setTimeout(() => {
61
- setValue()
62
- }, changeDebounce)
63
- }
64
-
65
- return (
66
- <View style={[variantStyles.wrapper, style]}>
67
- <InputLabel label={label} style={[variantStyles.label, styles.label]} />
68
- <RNSlider
69
- value={value}
70
- onSlidingStart={() => {
71
- if (toggleTooltipTimeout.current) { clearTimeout(toggleTooltipTimeout.current) }
72
-
73
- setTooltipVisible(true)
74
- }}
75
- onSlidingComplete={() => {
76
- toggleTooltipTimeout.current = setTimeout(
77
- () => setTooltipVisible(false),
78
- tooltipVisibilityWindow,
79
- )
80
- }}
81
- onValueChange={onChange}
82
- renderAboveThumbComponent={(idx) => {
83
- if (!valueOverThumb) return null
84
- const thisValue = Array.isArray(value) ? value[idx] : value
85
- return (
86
- <ThumbTooltip
87
- visible={tooltipVisible}
88
- variantStyles={variantStyles}
89
- styles={styles}
90
- >
91
- {formatTooltip ? formatTooltip(thisValue) : thisValue.toString()}
92
- </ThumbTooltip>
93
- )
94
- }}
95
- renderTrackMarkComponent={(idx) => (
96
- <SliderMark
97
- index={idx}
98
- sliderProps={sliderProps}
99
- styles={styles}
100
- variantStyles={variantStyles}
101
- />
102
- )}
103
- maximumValue={labels ? labels.length - 1 : 10}
104
- trackMarks={labels ? Object.keys(labels).map((z) => parseInt(z)) : []}
105
- containerStyle={
106
- [variantStyles.inputContainer, styles.inputContainer] as any
107
- }
108
- thumbStyle={
109
- StyleSheet.flatten([variantStyles.handle, styles.handle]) as any
110
- }
111
- trackStyle={[variantStyles.track, styles.track] as any}
112
- minimumTrackTintColor={
113
- StyleSheet.flatten([
114
- variantStyles.selectedTrack,
115
- styles.selectedTrack,
116
- ])?.backgroundColor
117
- }
118
- {...props}
119
- />
120
- </View>
121
- )
122
- }
123
-
1
+ import { SliderMark } from './Mark'
2
+ import { ThumbTooltip } from './Thumb'
3
+ import * as React from 'react'
4
+ import { Slider as RNSlider } from '@miblanchard/react-native-slider'
5
+
6
+ import { useRef } from 'react'
7
+ import { StyleSheet } from 'react-native'
8
+ import { View } from '../View'
9
+ import {
10
+ useDefaultComponentStyle,
11
+ } from '@codeleap/common'
12
+ import { InputLabel } from '../TextInput'
13
+ import { SliderProps } from './types'
14
+
15
+ export const Slider: React.FC<SliderProps> = (sliderProps) => {
16
+ const [tooltipVisible, setTooltipVisible] = React.useState(false)
17
+
18
+ const {
19
+ debounce,
20
+ onValueChange,
21
+ labels,
22
+ value,
23
+ label,
24
+ valueOverThumb,
25
+ formatTooltip,
26
+ styles = {},
27
+ style,
28
+ tooltipVisibilityWindow = 830,
29
+ variants,
30
+ ...props
31
+ } = sliderProps
32
+
33
+ const changeDebounce = typeof debounce === 'number' ? debounce : 100
34
+
35
+ const debounceTimeout = useRef(null)
36
+ const toggleTooltipTimeout = useRef(null)
37
+ const valueRef = useRef(value)
38
+
39
+ const variantStyles = useDefaultComponentStyle('Slider', {
40
+ variants,
41
+ })
42
+
43
+ function setValue() {
44
+ onValueChange(valueRef.current)
45
+ }
46
+
47
+ function onChange(val) {
48
+ let eventValue = val
49
+
50
+ if (Array.isArray(val) && typeof value === 'number') {
51
+ eventValue = val[0]
52
+ }
53
+
54
+ if (eventValue === value) return
55
+
56
+ valueRef.current = eventValue as number
57
+
58
+ if (debounceTimeout.current) clearTimeout(debounceTimeout.current)
59
+
60
+ debounceTimeout.current = setTimeout(() => {
61
+ setValue()
62
+ }, changeDebounce)
63
+ }
64
+
65
+ return (
66
+ <View style={[variantStyles.wrapper, style]}>
67
+ <InputLabel label={label} style={[variantStyles.label, styles.label]} />
68
+ <RNSlider
69
+ value={value}
70
+ onSlidingStart={() => {
71
+ if (toggleTooltipTimeout.current) { clearTimeout(toggleTooltipTimeout.current) }
72
+
73
+ setTooltipVisible(true)
74
+ }}
75
+ onSlidingComplete={() => {
76
+ toggleTooltipTimeout.current = setTimeout(
77
+ () => setTooltipVisible(false),
78
+ tooltipVisibilityWindow,
79
+ )
80
+ }}
81
+ onValueChange={onChange}
82
+ renderAboveThumbComponent={(idx) => {
83
+ if (!valueOverThumb) return null
84
+ const thisValue = Array.isArray(value) ? value[idx] : value
85
+ return (
86
+ <ThumbTooltip
87
+ visible={tooltipVisible}
88
+ variantStyles={variantStyles}
89
+ styles={styles}
90
+ >
91
+ {formatTooltip ? formatTooltip(thisValue) : thisValue.toString()}
92
+ </ThumbTooltip>
93
+ )
94
+ }}
95
+ renderTrackMarkComponent={(idx) => (
96
+ <SliderMark
97
+ index={idx}
98
+ sliderProps={sliderProps}
99
+ styles={styles}
100
+ variantStyles={variantStyles}
101
+ />
102
+ )}
103
+ maximumValue={labels ? labels.length - 1 : 10}
104
+ trackMarks={labels ? Object.keys(labels).map((z) => parseInt(z)) : []}
105
+ containerStyle={
106
+ [variantStyles.inputContainer, styles.inputContainer] as any
107
+ }
108
+ thumbStyle={
109
+ StyleSheet.flatten([variantStyles.handle, styles.handle]) as any
110
+ }
111
+ trackStyle={[variantStyles.track, styles.track] as any}
112
+ minimumTrackTintColor={
113
+ StyleSheet.flatten([
114
+ variantStyles.selectedTrack,
115
+ styles.selectedTrack,
116
+ ])?.backgroundColor
117
+ }
118
+ {...props}
119
+ />
120
+ </View>
121
+ )
122
+ }
123
+