@codeleap/mobile 1.9.25 → 1.9.28

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (222) hide show
  1. package/CodeLeap-Mobile-Packages.code-workspace +7 -7
  2. package/dist/components/ActivityIndicator.d.ts +13 -13
  3. package/dist/components/ActivityIndicator.js +54 -54
  4. package/dist/components/ActivityIndicator.js.map +0 -0
  5. package/dist/components/Animated.d.ts +123 -15
  6. package/dist/components/Animated.js +58 -58
  7. package/dist/components/Animated.js.map +0 -0
  8. package/dist/components/Button.d.ts +132 -125
  9. package/dist/components/Button.js +93 -82
  10. package/dist/components/Button.js.map +1 -1
  11. package/dist/components/Checkbox/index.d.ts +15 -15
  12. package/dist/components/Checkbox/index.js +79 -79
  13. package/dist/components/Checkbox/index.js.map +0 -0
  14. package/dist/components/Checkbox/styles.d.ts +55 -55
  15. package/dist/components/Checkbox/styles.js +51 -51
  16. package/dist/components/Checkbox/styles.js.map +0 -0
  17. package/dist/components/ContentView.d.ts +10 -10
  18. package/dist/components/ContentView.js +50 -50
  19. package/dist/components/ContentView.js.map +0 -0
  20. package/dist/components/EmptyPlaceholder.d.ts +12 -0
  21. package/dist/components/EmptyPlaceholder.js +54 -0
  22. package/dist/components/EmptyPlaceholder.js.map +1 -0
  23. package/dist/components/FileInput.d.ts +31 -31
  24. package/dist/components/FileInput.js +230 -230
  25. package/dist/components/FileInput.js.map +0 -0
  26. package/dist/components/Gap.d.ts +8 -0
  27. package/dist/components/Gap.js +60 -0
  28. package/dist/components/Gap.js.map +1 -0
  29. package/dist/components/Icon.d.ts +12 -12
  30. package/dist/components/Icon.js +70 -70
  31. package/dist/components/Icon.js.map +0 -0
  32. package/dist/components/Image.d.ts +18 -18
  33. package/dist/components/Image.js +59 -59
  34. package/dist/components/Image.js.map +0 -0
  35. package/dist/components/List.d.ts +14 -14
  36. package/dist/components/List.js +84 -83
  37. package/dist/components/List.js.map +1 -1
  38. package/dist/components/Modal/index.d.ts +27 -26
  39. package/dist/components/Modal/index.js +113 -112
  40. package/dist/components/Modal/index.js.map +1 -1
  41. package/dist/components/Modal/styles.d.ts +64 -69
  42. package/dist/components/Modal/styles.js +59 -64
  43. package/dist/components/Modal/styles.js.map +1 -1
  44. package/dist/components/Navigation/Navigation.d.ts +3 -3
  45. package/dist/components/Navigation/Navigation.js +87 -87
  46. package/dist/components/Navigation/Navigation.js.map +0 -0
  47. package/dist/components/Navigation/constants.d.ts +5 -5
  48. package/dist/components/Navigation/constants.js +10 -10
  49. package/dist/components/Navigation/constants.js.map +0 -0
  50. package/dist/components/Navigation/index.d.ts +3 -3
  51. package/dist/components/Navigation/index.js +19 -19
  52. package/dist/components/Navigation/index.js.map +0 -0
  53. package/dist/components/Navigation/types.d.ts +26 -26
  54. package/dist/components/Navigation/types.js +7 -7
  55. package/dist/components/Navigation/types.js.map +0 -0
  56. package/dist/components/Navigation/utils.d.ts +3 -3
  57. package/dist/components/Navigation/utils.js +69 -69
  58. package/dist/components/Navigation/utils.js.map +0 -0
  59. package/dist/components/NewPager/index.d.ts +26 -0
  60. package/dist/components/NewPager/index.js +88 -0
  61. package/dist/components/NewPager/index.js.map +1 -0
  62. package/dist/components/NewPager/styles.d.ts +87 -0
  63. package/dist/components/NewPager/styles.js +70 -0
  64. package/dist/components/NewPager/styles.js.map +1 -0
  65. package/dist/components/Overlay.d.ts +16 -16
  66. package/dist/components/Overlay.js +69 -69
  67. package/dist/components/Overlay.js.map +0 -0
  68. package/dist/components/Pager/index.d.ts +20 -20
  69. package/dist/components/Pager/index.js +167 -167
  70. package/dist/components/Pager/index.js.map +0 -0
  71. package/dist/components/Pager/styles.d.ts +54 -54
  72. package/dist/components/Pager/styles.js +43 -43
  73. package/dist/components/Pager/styles.js.map +0 -0
  74. package/dist/components/RadioInput/index.d.ts +26 -26
  75. package/dist/components/RadioInput/index.js +72 -72
  76. package/dist/components/RadioInput/index.js.map +0 -0
  77. package/dist/components/RadioInput/styles.d.ts +57 -57
  78. package/dist/components/RadioInput/styles.js +44 -44
  79. package/dist/components/RadioInput/styles.js.map +0 -0
  80. package/dist/components/Scroll.d.ts +13 -13
  81. package/dist/components/Scroll.js +81 -81
  82. package/dist/components/Scroll.js.map +0 -0
  83. package/dist/components/Sections.d.ts +11 -11
  84. package/dist/components/Sections.js +80 -80
  85. package/dist/components/Sections.js.map +0 -0
  86. package/dist/components/Select/index.d.ts +5 -5
  87. package/dist/components/Select/index.js +150 -150
  88. package/dist/components/Select/index.js.map +0 -0
  89. package/dist/components/Select/styles.d.ts +9 -9
  90. package/dist/components/Select/styles.js +56 -56
  91. package/dist/components/Select/styles.js.map +0 -0
  92. package/dist/components/Select/types.d.ts +40 -40
  93. package/dist/components/Select/types.js +2 -2
  94. package/dist/components/Select/types.js.map +0 -0
  95. package/dist/components/Slider/Mark.d.ts +3 -3
  96. package/dist/components/Slider/Mark.js +31 -31
  97. package/dist/components/Slider/Mark.js.map +0 -0
  98. package/dist/components/Slider/Thumb.d.ts +7 -7
  99. package/dist/components/Slider/Thumb.js +29 -29
  100. package/dist/components/Slider/Thumb.js.map +0 -0
  101. package/dist/components/Slider/index.d.ts +3 -3
  102. package/dist/components/Slider/index.js +97 -97
  103. package/dist/components/Slider/index.js.map +0 -0
  104. package/dist/components/Slider/types.d.ts +25 -25
  105. package/dist/components/Slider/types.js +2 -2
  106. package/dist/components/Slider/types.js.map +0 -0
  107. package/dist/components/Switch.d.ts +13 -13
  108. package/dist/components/Switch.js +75 -75
  109. package/dist/components/Switch.js.map +0 -0
  110. package/dist/components/Text.d.ts +12 -12
  111. package/dist/components/Text.js +52 -52
  112. package/dist/components/Text.js.map +0 -0
  113. package/dist/components/TextInput.d.ts +183 -183
  114. package/dist/components/TextInput.js +180 -180
  115. package/dist/components/TextInput.js.map +0 -0
  116. package/dist/components/Touchable.d.ts +14 -14
  117. package/dist/components/Touchable.js +75 -75
  118. package/dist/components/Touchable.js.map +0 -0
  119. package/dist/components/View.d.ts +123 -120
  120. package/dist/components/View.js +55 -54
  121. package/dist/components/View.js.map +1 -1
  122. package/dist/components/components.d.ts +28 -25
  123. package/dist/components/components.js +44 -41
  124. package/dist/components/components.js.map +1 -1
  125. package/dist/index.d.ts +6 -5
  126. package/dist/index.js +30 -28
  127. package/dist/index.js.map +1 -1
  128. package/dist/modules/documentPicker.d.ts +3 -3
  129. package/dist/modules/documentPicker.js +11 -11
  130. package/dist/modules/documentPicker.js.map +0 -0
  131. package/dist/modules/fastImage.d.ts +1 -1
  132. package/dist/modules/fastImage.js +9 -9
  133. package/dist/modules/fastImage.js.map +0 -0
  134. package/dist/modules/reactNavigation.d.ts +3 -3
  135. package/dist/modules/reactNavigation.js +10 -10
  136. package/dist/modules/reactNavigation.js.map +0 -0
  137. package/dist/modules/textInputMask.d.ts +9 -12
  138. package/dist/modules/textInputMask.js +7 -7
  139. package/dist/modules/types/fileTypes.d.ts +138 -138
  140. package/dist/modules/types/fileTypes.js +2 -2
  141. package/dist/modules/types/fileTypes.js.map +0 -0
  142. package/dist/modules/types/textInputMask.d.ts +7 -12
  143. package/dist/modules/types/textInputMask.js +2 -2
  144. package/dist/types/utility.d.ts +2 -2
  145. package/dist/types/utility.js +2 -2
  146. package/dist/types/utility.js.map +0 -0
  147. package/dist/utils/ModalManager/components.d.ts +12 -0
  148. package/dist/utils/ModalManager/components.js +79 -0
  149. package/dist/utils/ModalManager/components.js.map +1 -0
  150. package/dist/utils/ModalManager/context.d.ts +42 -0
  151. package/dist/utils/ModalManager/context.js +172 -0
  152. package/dist/utils/ModalManager/context.js.map +1 -0
  153. package/dist/utils/ModalManager/index.d.ts +14 -0
  154. package/dist/utils/ModalManager/index.js +12 -0
  155. package/dist/utils/ModalManager/index.js.map +1 -0
  156. package/dist/utils/OSAlert.d.ts +31 -31
  157. package/dist/utils/OSAlert.js +141 -141
  158. package/dist/utils/OSAlert.js.map +0 -0
  159. package/dist/utils/misc.d.ts +2 -2
  160. package/dist/utils/misc.js +25 -25
  161. package/dist/utils/misc.js.map +0 -0
  162. package/dist/utils/styles.d.ts +1 -1
  163. package/dist/utils/styles.js +12 -12
  164. package/dist/utils/styles.js.map +0 -0
  165. package/package.json +43 -40
  166. package/src/components/ActivityIndicator.tsx +46 -46
  167. package/src/components/Animated.tsx +34 -34
  168. package/src/components/Button.tsx +117 -95
  169. package/src/components/Checkbox/index.tsx +85 -85
  170. package/src/components/Checkbox/styles.ts +76 -76
  171. package/src/components/ContentView.tsx +58 -58
  172. package/src/components/EmptyPlaceholder.tsx +53 -0
  173. package/src/components/FileInput.tsx +230 -230
  174. package/src/components/Gap.tsx +40 -0
  175. package/src/components/Icon.tsx +58 -58
  176. package/src/components/Image.tsx +61 -61
  177. package/src/components/List.tsx +116 -111
  178. package/src/components/Modal/index.tsx +162 -161
  179. package/src/components/Modal/styles.ts +126 -133
  180. package/src/components/Navigation/Navigation.tsx +58 -58
  181. package/src/components/Navigation/constants.ts +8 -8
  182. package/src/components/Navigation/index.tsx +3 -3
  183. package/src/components/Navigation/types.ts +35 -35
  184. package/src/components/Navigation/utils.tsx +59 -59
  185. package/src/components/NewPager/index.tsx +121 -0
  186. package/src/components/NewPager/styles.ts +76 -0
  187. package/src/components/Overlay.tsx +77 -77
  188. package/src/components/Pager/index.tsx +242 -242
  189. package/src/components/Pager/styles.ts +51 -51
  190. package/src/components/RadioInput/index.tsx +101 -101
  191. package/src/components/RadioInput/styles.ts +67 -67
  192. package/src/components/Scroll.tsx +106 -106
  193. package/src/components/Sections.tsx +101 -101
  194. package/src/components/Select/index.tsx +195 -195
  195. package/src/components/Select/styles.ts +81 -81
  196. package/src/components/Select/types.ts +46 -46
  197. package/src/components/Slider/Mark.tsx +46 -46
  198. package/src/components/Slider/Thumb.tsx +29 -29
  199. package/src/components/Slider/index.tsx +123 -123
  200. package/src/components/Slider/types.ts +25 -25
  201. package/src/components/Switch.tsx +81 -81
  202. package/src/components/Text.tsx +30 -30
  203. package/src/components/TextInput.tsx +247 -247
  204. package/src/components/Touchable.tsx +78 -78
  205. package/src/components/View.tsx +48 -46
  206. package/src/components/components.ts +28 -26
  207. package/src/index.ts +6 -6
  208. package/src/modules/documentPicker.ts +7 -7
  209. package/src/modules/fastImage.ts +2 -2
  210. package/src/modules/index.d.ts +496 -496
  211. package/src/modules/reactNavigation.ts +4 -4
  212. package/src/modules/textInputMask.ts +9 -9
  213. package/src/modules/types/documentPicker.d.ts +215 -215
  214. package/src/modules/types/fileTypes.ts +138 -138
  215. package/src/modules/types/textInputMask.ts +9 -13
  216. package/src/types/utility.ts +3 -3
  217. package/src/utils/ModalManager/components.tsx +58 -0
  218. package/src/utils/ModalManager/context.tsx +208 -0
  219. package/src/utils/ModalManager/index.ts +9 -0
  220. package/src/utils/OSAlert.ts +180 -180
  221. package/src/utils/misc.ts +24 -24
  222. package/src/utils/styles.ts +14 -14
@@ -1,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,46 +1,46 @@
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
- index: number
17
- }
18
-
19
- export type SelectRenderFN<T> = (props: SelectRenderFNProps<T>) => JSX.Element
20
-
21
- export type CustomSelectProps<T> = {
22
- value: T
23
- placeholder?: FormTypes.Label
24
- label?: FormTypes.Label
25
- options?: FormTypes.Options<T>
26
- onDropdownToggle?: (isOpen?: boolean) => void
27
- onValueChange?: (value: T) => void
28
- renderItem?: SelectRenderFN<T>
29
- styles?: StylesOf<MobileSelectComposition>
30
- style?: any
31
- arrowIconName?: IconPlaceholder
32
- scroll?: boolean
33
- closeOnSelect?: boolean
34
- footer?: ReactElement
35
- header?: ReactElement
36
- showLabelOnModal?: boolean
37
- modalCloseIconName?: IconPlaceholder
38
- showClose?: boolean
39
- modalLabel?: string
40
- textInputProps?: Partial<TextInputProps>
41
- closeButtonProps?: Partial<ButtonProps>
42
- toggle: (isOpen?: boolean) => void
43
- visible: boolean
44
- renderList?: (props:CustomSelectProps<T> & {isEmpty: boolean}) => JSX.Element
45
- } & ComponentVariants<typeof MobileSelectStyles> & TextInputProps
46
-
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
+ index: number
17
+ }
18
+
19
+ export type SelectRenderFN<T> = (props: SelectRenderFNProps<T>) => JSX.Element
20
+
21
+ export type CustomSelectProps<T> = {
22
+ value: T
23
+ placeholder?: FormTypes.Label
24
+ label?: FormTypes.Label
25
+ options?: FormTypes.Options<T>
26
+ onDropdownToggle?: (isOpen?: boolean) => void
27
+ onValueChange?: (value: T) => void
28
+ renderItem?: SelectRenderFN<T>
29
+ styles?: StylesOf<MobileSelectComposition>
30
+ style?: any
31
+ arrowIconName?: IconPlaceholder
32
+ scroll?: boolean
33
+ closeOnSelect?: boolean
34
+ footer?: ReactElement
35
+ header?: ReactElement
36
+ showLabelOnModal?: boolean
37
+ modalCloseIconName?: IconPlaceholder
38
+ showClose?: boolean
39
+ modalLabel?: string
40
+ textInputProps?: Partial<TextInputProps>
41
+ closeButtonProps?: Partial<ButtonProps>
42
+ toggle: (isOpen?: boolean) => void
43
+ visible: boolean
44
+ renderList?: (props:CustomSelectProps<T> & {isEmpty: boolean}) => JSX.Element
45
+ } & ComponentVariants<typeof MobileSelectStyles> & TextInputProps
46
+
@@ -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
+