@hero-design/rn 8.20.0 → 8.22.0-alpha.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 (288) hide show
  1. package/.turbo/turbo-build.log +2 -2
  2. package/.turbo/turbo-build:types.log +2 -0
  3. package/.turbo/turbo-lint.log +146 -0
  4. package/.turbo/turbo-publish:npm.log +9 -0
  5. package/.turbo/turbo-test.log +451 -0
  6. package/.turbo/turbo-type-check.log +2 -0
  7. package/es/index.js +236 -64
  8. package/lib/index.js +236 -64
  9. package/package.json +5 -5
  10. package/src/components/Button/Button.tsx +1 -1
  11. package/src/components/Button/StyledButton.tsx +0 -3
  12. package/src/components/Button/__tests__/__snapshots__/Button.spec.tsx.snap +0 -10
  13. package/src/components/Button/__tests__/__snapshots__/StyledButton.spec.tsx.snap +0 -16
  14. package/src/components/Calendar/index.tsx +7 -2
  15. package/src/components/Carousel/StyledCarousel.tsx +12 -5
  16. package/src/components/Carousel/__tests__/__snapshots__/index.spec.tsx.snap +793 -14
  17. package/src/components/Carousel/__tests__/index.spec.tsx +41 -31
  18. package/src/components/Carousel/index.tsx +39 -7
  19. package/src/components/DatePicker/DatePickerAndroid.tsx +1 -1
  20. package/src/components/DatePicker/DatePickerCalendar.tsx +110 -0
  21. package/src/components/DatePicker/DatePickerIOS.tsx +1 -1
  22. package/src/components/DatePicker/__tests__/DatePicker.spec.tsx +27 -8
  23. package/src/components/DatePicker/__tests__/DatePickerCalendar.spec.tsx +61 -0
  24. package/src/components/DatePicker/__tests__/__snapshots__/DatePicker.spec.tsx.snap +670 -0
  25. package/src/components/DatePicker/__tests__/__snapshots__/DatePickerCalendar.spec.tsx.snap +220 -0
  26. package/src/components/DatePicker/__tests__/__snapshots__/DatePickerIOS.spec.tsx.snap +0 -1
  27. package/src/components/DatePicker/index.tsx +5 -1
  28. package/src/components/DatePicker/types.ts +7 -1
  29. package/src/components/Select/MultiSelect/__tests__/__snapshots__/index.spec.tsx.snap +0 -3
  30. package/src/components/TimePicker/__tests__/__snapshots__/TimePickerIOS.spec.tsx.snap +0 -1
  31. package/src/components/TimePicker/types.ts +1 -1
  32. package/src/components/Toast/Toast.tsx +3 -1
  33. package/src/components/Toast/types.ts +4 -0
  34. package/src/theme/__tests__/__snapshots__/index.spec.ts.snap +2 -3
  35. package/src/theme/components/button.ts +0 -5
  36. package/src/theme/components/carousel.ts +3 -0
  37. package/types/components/Accordion/AccordionItem.d.ts +0 -0
  38. package/types/components/Accordion/StyledAccordion.d.ts +0 -0
  39. package/types/components/Accordion/index.d.ts +0 -0
  40. package/types/components/Alert/StyledAlert.d.ts +0 -0
  41. package/types/components/Alert/index.d.ts +0 -0
  42. package/types/components/Attachment/StyledAttachment.d.ts +0 -0
  43. package/types/components/Attachment/index.d.ts +0 -0
  44. package/types/components/Avatar/Avatar.d.ts +0 -0
  45. package/types/components/Avatar/AvatarStack/StyledAvatarStack.d.ts +0 -0
  46. package/types/components/Avatar/AvatarStack/index.d.ts +0 -0
  47. package/types/components/Avatar/AvatarStack/utils.d.ts +0 -0
  48. package/types/components/Avatar/StyledAvatar.d.ts +0 -0
  49. package/types/components/Avatar/index.d.ts +0 -0
  50. package/types/components/Badge/Status.d.ts +0 -0
  51. package/types/components/Badge/StyledBadge.d.ts +0 -0
  52. package/types/components/Badge/index.d.ts +0 -0
  53. package/types/components/BottomNavigation/StyledBottomNavigation.d.ts +0 -0
  54. package/types/components/BottomNavigation/index.d.ts +0 -0
  55. package/types/components/BottomSheet/BottomSheetContext.d.ts +0 -0
  56. package/types/components/BottomSheet/Footer.d.ts +0 -0
  57. package/types/components/BottomSheet/Header.d.ts +0 -0
  58. package/types/components/BottomSheet/ScrollView.d.ts +0 -0
  59. package/types/components/BottomSheet/StyledBottomSheet.d.ts +0 -0
  60. package/types/components/BottomSheet/index.d.ts +0 -0
  61. package/types/components/Box/StyledBox.d.ts +0 -0
  62. package/types/components/Box/config.d.ts +0 -0
  63. package/types/components/Box/index.d.ts +0 -0
  64. package/types/components/Box/types.d.ts +0 -0
  65. package/types/components/Button/Button.d.ts +0 -0
  66. package/types/components/Button/IconButton.d.ts +0 -0
  67. package/types/components/Button/LoadingIndicator/StyledLoadingIndicator.d.ts +0 -0
  68. package/types/components/Button/LoadingIndicator/index.d.ts +0 -0
  69. package/types/components/Button/StyledButton.d.ts +0 -0
  70. package/types/components/Button/UtilityButton/StyledUtilityButton.d.ts +0 -0
  71. package/types/components/Button/UtilityButton/index.d.ts +0 -0
  72. package/types/components/Button/index.d.ts +0 -0
  73. package/types/components/Calendar/CalendarRowItem.d.ts +0 -0
  74. package/types/components/Calendar/StyledCalendar.d.ts +0 -0
  75. package/types/components/Calendar/helpers.d.ts +0 -0
  76. package/types/components/Calendar/index.d.ts +6 -2
  77. package/types/components/Card/DataCard/StyledDataCard.d.ts +0 -0
  78. package/types/components/Card/DataCard/index.d.ts +0 -0
  79. package/types/components/Card/StyledCard.d.ts +0 -0
  80. package/types/components/Card/index.d.ts +0 -0
  81. package/types/components/Carousel/CardCarousel.d.ts +0 -0
  82. package/types/components/Carousel/CarouselItem.d.ts +0 -0
  83. package/types/components/Carousel/StyledCardCarousel.d.ts +0 -0
  84. package/types/components/Carousel/StyledCarousel.d.ts +7 -1
  85. package/types/components/Carousel/contants.d.ts +0 -0
  86. package/types/components/Carousel/index.d.ts +7 -1
  87. package/types/components/Carousel/types.d.ts +0 -0
  88. package/types/components/Checkbox/StyledCheckbox.d.ts +0 -0
  89. package/types/components/Checkbox/index.d.ts +0 -0
  90. package/types/components/Collapse/StyledCollapse.d.ts +0 -0
  91. package/types/components/Collapse/index.d.ts +0 -0
  92. package/types/components/ContentNavigator/StyledContentNavigator.d.ts +0 -0
  93. package/types/components/ContentNavigator/index.d.ts +0 -0
  94. package/types/components/DatePicker/DatePickerAndroid.d.ts +1 -1
  95. package/types/components/DatePicker/DatePickerCalendar.d.ts +3 -0
  96. package/types/components/DatePicker/DatePickerIOS.d.ts +1 -1
  97. package/types/components/DatePicker/StyledDatePicker.d.ts +0 -0
  98. package/types/components/DatePicker/index.d.ts +1 -1
  99. package/types/components/DatePicker/types.d.ts +7 -1
  100. package/types/components/Divider/StyledDivider.d.ts +0 -0
  101. package/types/components/Divider/index.d.ts +0 -0
  102. package/types/components/Drawer/DragableDrawer/helpers.d.ts +0 -0
  103. package/types/components/Drawer/DragableDrawer/index.d.ts +0 -0
  104. package/types/components/Drawer/StyledDrawer.d.ts +0 -0
  105. package/types/components/Drawer/index.d.ts +0 -0
  106. package/types/components/Empty/StyledEmpty.d.ts +0 -0
  107. package/types/components/Empty/index.d.ts +0 -0
  108. package/types/components/Error/StyledError.d.ts +0 -0
  109. package/types/components/Error/index.d.ts +0 -0
  110. package/types/components/FAB/ActionGroup/ActionItem.d.ts +0 -0
  111. package/types/components/FAB/ActionGroup/StyledActionGroup.d.ts +0 -0
  112. package/types/components/FAB/ActionGroup/StyledActionItem.d.ts +0 -0
  113. package/types/components/FAB/ActionGroup/index.d.ts +0 -0
  114. package/types/components/FAB/AnimatedFABIcon.d.ts +0 -0
  115. package/types/components/FAB/FAB.d.ts +0 -0
  116. package/types/components/FAB/StyledFAB.d.ts +0 -0
  117. package/types/components/FAB/index.d.ts +0 -0
  118. package/types/components/Icon/AnimatedIcon.d.ts +0 -0
  119. package/types/components/Icon/HeroIcon/index.d.ts +0 -0
  120. package/types/components/Icon/IconList.d.ts +0 -0
  121. package/types/components/Icon/index.d.ts +0 -0
  122. package/types/components/Icon/utils.d.ts +0 -0
  123. package/types/components/Image/index.d.ts +0 -0
  124. package/types/components/List/BasicListItem.d.ts +0 -0
  125. package/types/components/List/ListItem.d.ts +0 -0
  126. package/types/components/List/StyledBasicListItem.d.ts +0 -0
  127. package/types/components/List/StyledListItem.d.ts +0 -0
  128. package/types/components/List/index.d.ts +0 -0
  129. package/types/components/PageControl/StyledPageControl.d.ts +0 -0
  130. package/types/components/PageControl/index.d.ts +0 -0
  131. package/types/components/PinInput/PinCell.d.ts +0 -0
  132. package/types/components/PinInput/StyledPinInput.d.ts +0 -0
  133. package/types/components/PinInput/index.d.ts +0 -0
  134. package/types/components/Progress/ProgressBar.d.ts +0 -0
  135. package/types/components/Progress/ProgressCircle.d.ts +0 -0
  136. package/types/components/Progress/StyledProgressBar.d.ts +0 -0
  137. package/types/components/Progress/StyledProgressCircle.d.ts +0 -0
  138. package/types/components/Progress/__tests__/index.spec.d.ts +0 -0
  139. package/types/components/Progress/constants.d.ts +0 -0
  140. package/types/components/Progress/index.d.ts +0 -0
  141. package/types/components/Progress/types.d.ts +0 -0
  142. package/types/components/Radio/Radio.d.ts +0 -0
  143. package/types/components/Radio/RadioGroup.d.ts +0 -0
  144. package/types/components/Radio/StyledRadio.d.ts +0 -0
  145. package/types/components/Radio/index.d.ts +0 -0
  146. package/types/components/Radio/types.d.ts +0 -0
  147. package/types/components/RefreshControl/index.d.ts +0 -0
  148. package/types/components/RichTextEditor/EditorEvent.d.ts +0 -0
  149. package/types/components/RichTextEditor/EditorToolbar.d.ts +0 -0
  150. package/types/components/RichTextEditor/MentionList.d.ts +0 -0
  151. package/types/components/RichTextEditor/RichTextEditor.d.ts +0 -0
  152. package/types/components/RichTextEditor/StyledRichTextEditor.d.ts +0 -0
  153. package/types/components/RichTextEditor/StyledToolbar.d.ts +0 -0
  154. package/types/components/RichTextEditor/__mocks__/heroEditorApp.d.ts +0 -0
  155. package/types/components/RichTextEditor/constants.d.ts +0 -0
  156. package/types/components/RichTextEditor/heroEditorApp.d.ts +0 -0
  157. package/types/components/RichTextEditor/index.d.ts +0 -0
  158. package/types/components/RichTextEditor/types.d.ts +0 -0
  159. package/types/components/RichTextEditor/utils/events.d.ts +0 -0
  160. package/types/components/RichTextEditor/utils/rnWebView.d.ts +0 -0
  161. package/types/components/SectionHeading/StyledHeading.d.ts +0 -0
  162. package/types/components/SectionHeading/index.d.ts +0 -0
  163. package/types/components/Select/BaseOptionList.d.ts +0 -0
  164. package/types/components/Select/Footer.d.ts +0 -0
  165. package/types/components/Select/MultiSelect/Option.d.ts +0 -0
  166. package/types/components/Select/MultiSelect/OptionList.d.ts +0 -0
  167. package/types/components/Select/MultiSelect/index.d.ts +0 -0
  168. package/types/components/Select/SingleSelect/Option.d.ts +0 -0
  169. package/types/components/Select/SingleSelect/OptionList.d.ts +0 -0
  170. package/types/components/Select/SingleSelect/StyledSingleSelect.d.ts +0 -0
  171. package/types/components/Select/SingleSelect/index.d.ts +0 -0
  172. package/types/components/Select/StyledSelect.d.ts +0 -0
  173. package/types/components/Select/helpers.d.ts +0 -0
  174. package/types/components/Select/index.d.ts +0 -0
  175. package/types/components/Select/types.d.ts +0 -0
  176. package/types/components/Skeleton/StyledSkeleton.d.ts +0 -0
  177. package/types/components/Skeleton/index.d.ts +0 -0
  178. package/types/components/Slider/index.d.ts +0 -0
  179. package/types/components/Spinner/AnimatedSpinner.d.ts +0 -0
  180. package/types/components/Spinner/StyledSpinner.d.ts +0 -0
  181. package/types/components/Spinner/index.d.ts +0 -0
  182. package/types/components/Swipeable/StyledSwipeable.d.ts +0 -0
  183. package/types/components/Swipeable/SwipeableAction.d.ts +0 -0
  184. package/types/components/Swipeable/index.d.ts +0 -0
  185. package/types/components/Switch/SelectorSwitch/Option.d.ts +0 -0
  186. package/types/components/Switch/SelectorSwitch/StyledSelectorSwitch.d.ts +0 -0
  187. package/types/components/Switch/SelectorSwitch/index.d.ts +0 -0
  188. package/types/components/Switch/StyledSwitch.d.ts +0 -0
  189. package/types/components/Switch/index.d.ts +0 -0
  190. package/types/components/Tabs/ActiveTabIndicator.d.ts +0 -0
  191. package/types/components/Tabs/ScrollableTabs.d.ts +0 -0
  192. package/types/components/Tabs/StyledScrollableTabs.d.ts +0 -0
  193. package/types/components/Tabs/StyledTabs.d.ts +0 -0
  194. package/types/components/Tabs/TabWithBadge.d.ts +0 -0
  195. package/types/components/Tabs/index.d.ts +0 -0
  196. package/types/components/Tabs/utils.d.ts +0 -0
  197. package/types/components/Tag/StyledTag.d.ts +0 -0
  198. package/types/components/Tag/index.d.ts +0 -0
  199. package/types/components/TextInput/StyledTextInput.d.ts +0 -0
  200. package/types/components/TextInput/index.d.ts +0 -0
  201. package/types/components/TimePicker/StyledTimePicker.d.ts +0 -0
  202. package/types/components/TimePicker/TimePickerAndroid.d.ts +0 -0
  203. package/types/components/TimePicker/TimePickerIOS.d.ts +0 -0
  204. package/types/components/TimePicker/index.d.ts +0 -0
  205. package/types/components/TimePicker/types.d.ts +1 -1
  206. package/types/components/Toast/StyledToast.d.ts +0 -0
  207. package/types/components/Toast/Toast.d.ts +1 -1
  208. package/types/components/Toast/ToastContainer.d.ts +0 -0
  209. package/types/components/Toast/ToastContext.d.ts +0 -0
  210. package/types/components/Toast/ToastProvider.d.ts +0 -0
  211. package/types/components/Toast/index.d.ts +0 -0
  212. package/types/components/Toast/types.d.ts +4 -0
  213. package/types/components/Toolbar/StyledToolbar.d.ts +0 -0
  214. package/types/components/Toolbar/ToolbarGroup.d.ts +0 -0
  215. package/types/components/Toolbar/ToolbarItem.d.ts +0 -0
  216. package/types/components/Toolbar/index.d.ts +0 -0
  217. package/types/components/Typography/Text/StyledText.d.ts +0 -0
  218. package/types/components/Typography/Text/index.d.ts +0 -0
  219. package/types/components/Typography/index.d.ts +0 -0
  220. package/types/index.d.ts +0 -0
  221. package/types/testHelpers/renderWithTheme.d.ts +0 -0
  222. package/types/theme/ThemeProvider.d.ts +0 -0
  223. package/types/theme/ThemeSwitcher.d.ts +0 -0
  224. package/types/theme/components/accordion.d.ts +0 -0
  225. package/types/theme/components/alert.d.ts +0 -0
  226. package/types/theme/components/attachment.d.ts +0 -0
  227. package/types/theme/components/avatar.d.ts +0 -0
  228. package/types/theme/components/badge.d.ts +0 -0
  229. package/types/theme/components/bottomNavigation.d.ts +0 -0
  230. package/types/theme/components/bottomSheet.d.ts +0 -0
  231. package/types/theme/components/button.d.ts +0 -3
  232. package/types/theme/components/calendar.d.ts +0 -0
  233. package/types/theme/components/card.d.ts +0 -0
  234. package/types/theme/components/cardCarousel.d.ts +0 -0
  235. package/types/theme/components/carousel.d.ts +2 -0
  236. package/types/theme/components/checkbox.d.ts +0 -0
  237. package/types/theme/components/contentNavigator.d.ts +0 -0
  238. package/types/theme/components/datePicker.d.ts +0 -0
  239. package/types/theme/components/divider.d.ts +0 -0
  240. package/types/theme/components/drawer.d.ts +0 -0
  241. package/types/theme/components/empty.d.ts +0 -0
  242. package/types/theme/components/error.d.ts +0 -0
  243. package/types/theme/components/fab.d.ts +0 -0
  244. package/types/theme/components/icon.d.ts +0 -0
  245. package/types/theme/components/image.d.ts +0 -0
  246. package/types/theme/components/list.d.ts +0 -0
  247. package/types/theme/components/pageControl.d.ts +0 -0
  248. package/types/theme/components/pinInput.d.ts +0 -0
  249. package/types/theme/components/progress.d.ts +0 -0
  250. package/types/theme/components/radio.d.ts +0 -0
  251. package/types/theme/components/refreshControl.d.ts +0 -0
  252. package/types/theme/components/richTextEditor.d.ts +0 -0
  253. package/types/theme/components/sectionHeading.d.ts +0 -0
  254. package/types/theme/components/select.d.ts +0 -0
  255. package/types/theme/components/skeleton.d.ts +0 -0
  256. package/types/theme/components/slider.d.ts +0 -0
  257. package/types/theme/components/spinner.d.ts +0 -0
  258. package/types/theme/components/swipeable.d.ts +0 -0
  259. package/types/theme/components/switch.d.ts +0 -0
  260. package/types/theme/components/tabs.d.ts +0 -0
  261. package/types/theme/components/tag.d.ts +0 -0
  262. package/types/theme/components/textInput.d.ts +0 -0
  263. package/types/theme/components/timePicker.d.ts +0 -0
  264. package/types/theme/components/toast.d.ts +0 -0
  265. package/types/theme/components/toolbar.d.ts +0 -0
  266. package/types/theme/components/typography.d.ts +0 -0
  267. package/types/theme/getTheme.d.ts +0 -0
  268. package/types/theme/global/borders.d.ts +0 -0
  269. package/types/theme/global/colors/eBens.d.ts +0 -0
  270. package/types/theme/global/colors/global.d.ts +0 -0
  271. package/types/theme/global/colors/globalDark.d.ts +0 -0
  272. package/types/theme/global/colors/jobs.d.ts +0 -0
  273. package/types/theme/global/colors/swag.d.ts +0 -0
  274. package/types/theme/global/colors/swagDark.d.ts +0 -0
  275. package/types/theme/global/colors/types.d.ts +0 -0
  276. package/types/theme/global/colors/wallet.d.ts +0 -0
  277. package/types/theme/global/colors/work.d.ts +0 -0
  278. package/types/theme/global/index.d.ts +0 -0
  279. package/types/theme/global/scale.d.ts +0 -0
  280. package/types/theme/global/sizes.d.ts +0 -0
  281. package/types/theme/global/space.d.ts +0 -0
  282. package/types/theme/global/typography.d.ts +0 -0
  283. package/types/theme/index.d.ts +0 -0
  284. package/types/types.d.ts +0 -0
  285. package/types/utils/functions.d.ts +0 -0
  286. package/types/utils/helpers.d.ts +0 -0
  287. package/types/utils/hooks.d.ts +0 -0
  288. package/types/utils/scale.d.ts +0 -0
@@ -44,43 +44,53 @@ const carouselData = [
44
44
  ];
45
45
 
46
46
  describe('Carousel', () => {
47
- it('renders basic carousel', async () => {
48
- const onPress = jest.fn();
49
- const { getByTestId, queryByText, toJSON } = renderWithTheme(
50
- <Carousel
51
- testID="carousel"
52
- items={carouselData}
53
- renderActions={(_) => {
54
- return <Button text="Skip" onPress={onPress} />;
55
- }}
56
- />
57
- );
47
+ it.each`
48
+ pageControlPosition
49
+ ${'bottom'}
50
+ ${'top'}
51
+ `(
52
+ 'renders correctly with pageControlPosition $pageControlPosition',
53
+ async ({ pageControlPosition }) => {
54
+ const onPress = jest.fn();
55
+ const { getByTestId, queryByText, toJSON } = renderWithTheme(
56
+ <Carousel
57
+ pageControlPosition={pageControlPosition}
58
+ testID="carousel"
59
+ items={carouselData}
60
+ renderActions={(_) => {
61
+ return <Button text="Skip" onPress={onPress} />;
62
+ }}
63
+ />
64
+ );
58
65
 
59
- expect(getByTestId('carousel')).toBeTruthy();
66
+ expect(getByTestId('carousel')).toBeTruthy();
60
67
 
61
- expect(queryByText('Skip')).toBeTruthy();
68
+ expect(queryByText('Skip')).toBeTruthy();
62
69
 
63
- // Slide 1
64
- expect(queryByText('Welcome to the new Employment Hero app')).toBeTruthy();
70
+ // Slide 1
71
+ expect(
72
+ queryByText('Welcome to the new Employment Hero app')
73
+ ).toBeTruthy();
65
74
 
66
- // Slide 2
67
- expect(queryByText('Same app with a new look!')).toBeTruthy();
68
- expect(
69
- queryByText(
70
- 'Our app now has a new bright clean modern look and feel with the same great features.'
71
- )
72
- ).toBeTruthy();
75
+ // Slide 2
76
+ expect(queryByText('Same app with a new look!')).toBeTruthy();
77
+ expect(
78
+ queryByText(
79
+ 'Our app now has a new bright clean modern look and feel with the same great features.'
80
+ )
81
+ ).toBeTruthy();
73
82
 
74
- // Slide 3
75
- expect(queryByText('Easier to get around')).toBeTruthy();
76
- expect(
77
- queryByText(
78
- 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus vitae pulvinar quam, ac facilisis massa. Aliquam facilisis nisi eu justo dignissim, vel tempus justo iaculis.'
79
- )
80
- ).toBeTruthy();
83
+ // Slide 3
84
+ expect(queryByText('Easier to get around')).toBeTruthy();
85
+ expect(
86
+ queryByText(
87
+ 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus vitae pulvinar quam, ac facilisis massa. Aliquam facilisis nisi eu justo dignissim, vel tempus justo iaculis.'
88
+ )
89
+ ).toBeTruthy();
81
90
 
82
- expect(toJSON()).toMatchSnapshot();
83
- });
91
+ expect(toJSON()).toMatchSnapshot();
92
+ }
93
+ );
84
94
 
85
95
  it('should call skip call back when press skip', () => {
86
96
  const onSkip = jest.fn();
@@ -22,9 +22,11 @@ import {
22
22
  StyledCarouselFooterWrapper,
23
23
  StyledCarouselView,
24
24
  StyledPageControl,
25
+ StyledPageControlWrapper,
25
26
  } from './StyledCarousel';
26
27
  import CarouselItem from './CarouselItem';
27
28
  import { CardCarousel } from './CardCarousel';
29
+ import { useDeprecation } from '../../utils/hooks';
28
30
 
29
31
  interface CarouselProps extends ViewProps {
30
32
  /**
@@ -48,6 +50,8 @@ interface CarouselProps extends ViewProps {
48
50
  */
49
51
  renderActions?: (pageIndex: number) => JSX.Element;
50
52
  /**
53
+ * @deprecated will be removed in 9.0.0
54
+ *
51
55
  * Should show paginations
52
56
  */
53
57
  shouldShowPagination?: (pageIndex: number) => boolean;
@@ -55,6 +59,10 @@ interface CarouselProps extends ViewProps {
55
59
  * Current selected item index.
56
60
  */
57
61
  selectedItemIndex?: number;
62
+ /**
63
+ * position of the page control
64
+ */
65
+ pageControlPosition?: 'top' | 'bottom';
58
66
  }
59
67
 
60
68
  export function useStateFromProp<T>(
@@ -67,15 +75,27 @@ export function useStateFromProp<T>(
67
75
  return [value, setValue];
68
76
  }
69
77
 
78
+ const noop = (_: number): boolean => {
79
+ return true;
80
+ };
70
81
  const Carousel = ({
71
82
  items,
72
83
  onItemIndexChange,
73
84
  renderActions,
74
85
  selectedItemIndex = 0,
75
86
  style,
76
- shouldShowPagination = () => true,
87
+ shouldShowPagination = noop,
88
+ pageControlPosition = 'bottom',
77
89
  ...nativeProps
78
90
  }: CarouselProps) => {
91
+ useDeprecation(
92
+ `shouldShowPagination prop has been deprecated`,
93
+ shouldShowPagination !== noop
94
+ );
95
+ useDeprecation(
96
+ `The use of 'pageControlPosition == bottom' has been deprecated`,
97
+ pageControlPosition === 'bottom'
98
+ );
79
99
  const carouselRef = useRef<FlatList>(null);
80
100
 
81
101
  const [currentSlideIndex, setCurrentSlideIndex] =
@@ -120,6 +140,17 @@ const Carousel = ({
120
140
  <StyledBackDrop
121
141
  themeSlideBackground={items[currentSlideIndex].background}
122
142
  />
143
+
144
+ <StyledPageControlWrapper>
145
+ {pageControlPosition === 'top' &&
146
+ shouldShowPagination(currentSlideIndex) && (
147
+ <StyledPageControl
148
+ numberOfPages={items.length}
149
+ currentPage={currentSlideIndex}
150
+ />
151
+ )}
152
+ </StyledPageControlWrapper>
153
+
123
154
  <StyledCarouselView>
124
155
  <FlatList
125
156
  horizontal
@@ -153,12 +184,13 @@ const Carousel = ({
153
184
  />
154
185
  <StyledCarouselFooterWrapper>
155
186
  {renderActions && renderActions(currentSlideIndex)}
156
- {shouldShowPagination(currentSlideIndex) && (
157
- <StyledPageControl
158
- numberOfPages={items.length}
159
- currentPage={currentSlideIndex}
160
- />
161
- )}
187
+ {pageControlPosition === 'bottom' &&
188
+ shouldShowPagination(currentSlideIndex) && (
189
+ <StyledPageControl
190
+ numberOfPages={items.length}
191
+ currentPage={currentSlideIndex}
192
+ />
193
+ )}
162
194
  </StyledCarouselFooterWrapper>
163
195
  </StyledCarouselView>
164
196
  </View>
@@ -20,7 +20,7 @@ const DatePickerAndroid = ({
20
20
  helpText,
21
21
  style,
22
22
  testID,
23
- }: DatePickerProps) => {
23
+ }: Omit<DatePickerProps, 'variant'>) => {
24
24
  const [open, setOpen] = useState(false);
25
25
 
26
26
  const displayValue = value ? formatDate(displayFormat, value) : '';
@@ -0,0 +1,110 @@
1
+ import React, { useState } from 'react';
2
+ import { TouchableOpacity, View } from 'react-native';
3
+ import formatDate from 'date-fns/fp/format';
4
+
5
+ import BottomSheet from '../BottomSheet';
6
+ import TextInput from '../TextInput';
7
+ import Button from '../Button';
8
+ import type { DatePickerProps } from './types';
9
+ import Calendar, { CalendarProps } from '../Calendar';
10
+
11
+ const InternalCalendar = ({
12
+ minDate,
13
+ maxDate,
14
+ value,
15
+ onChange,
16
+ }: Pick<CalendarProps, 'minDate' | 'maxDate' | 'value' | 'onChange'>) => {
17
+ const [visibleDate, setVisibleDate] = useState(value || new Date());
18
+ const [selectingDate, setSelectingDate] = useState<Date>(value || new Date());
19
+ return (
20
+ <Calendar
21
+ testID="calendar"
22
+ value={selectingDate}
23
+ visibleDate={visibleDate}
24
+ onChange={(date) => {
25
+ setSelectingDate(date);
26
+ if (onChange) {
27
+ onChange(date);
28
+ }
29
+ }}
30
+ onPreviousPress={() =>
31
+ setVisibleDate(
32
+ new Date(visibleDate.getFullYear(), visibleDate.getMonth() - 1, 1)
33
+ )
34
+ }
35
+ onNextPress={() =>
36
+ setVisibleDate(
37
+ new Date(visibleDate.getFullYear(), visibleDate.getMonth() + 1, 1)
38
+ )
39
+ }
40
+ minDate={minDate}
41
+ maxDate={maxDate}
42
+ />
43
+ );
44
+ };
45
+
46
+ const DatePickerCalendar = ({
47
+ value,
48
+ minDate = new Date('1900-01-01T00:00:00.000Z'),
49
+ maxDate = new Date('2100-01-01T00:00:00.000Z'),
50
+ label,
51
+ placeholder,
52
+ onChange,
53
+ confirmLabel,
54
+ displayFormat = 'dd/MM/yyyy',
55
+ disabled = false,
56
+ required,
57
+ error,
58
+ helpText,
59
+ style,
60
+ testID,
61
+ }: Omit<DatePickerProps, 'variant'>) => {
62
+ const [open, setOpen] = useState(false);
63
+
64
+ const [selectingDate, setSelectingDate] = useState<Date>(value || new Date());
65
+ const displayValue = value ? formatDate(displayFormat, value) : '';
66
+ return (
67
+ <TouchableOpacity onPress={() => setOpen(true)} disabled={disabled}>
68
+ <View pointerEvents="none" testID="datePickerCalendar">
69
+ <TextInput
70
+ label={label}
71
+ value={displayValue}
72
+ suffix="calendar-dates-outlined"
73
+ placeholder={placeholder || displayFormat}
74
+ disabled={disabled}
75
+ error={error}
76
+ required={required}
77
+ helpText={helpText}
78
+ testID={testID}
79
+ style={style}
80
+ />
81
+ </View>
82
+ <BottomSheet
83
+ open={open}
84
+ onRequestClose={() => setOpen(false)}
85
+ header={label}
86
+ footer={
87
+ <Button
88
+ variant="text"
89
+ text={confirmLabel}
90
+ onPress={() => {
91
+ if (selectingDate) {
92
+ onChange(selectingDate);
93
+ }
94
+ setOpen(false);
95
+ }}
96
+ />
97
+ }
98
+ >
99
+ <InternalCalendar
100
+ minDate={minDate}
101
+ maxDate={maxDate}
102
+ value={value}
103
+ onChange={setSelectingDate}
104
+ />
105
+ </BottomSheet>
106
+ </TouchableOpacity>
107
+ );
108
+ };
109
+
110
+ export default DatePickerCalendar;
@@ -25,7 +25,7 @@ const DatePickerIOS = ({
25
25
  helpText,
26
26
  style,
27
27
  testID,
28
- }: DatePickerProps) => {
28
+ }: Omit<DatePickerProps, 'variant'>) => {
29
29
  const [selectingDate, setSelectingDate] = useState<Date>(value || new Date());
30
30
  const [open, setOpen] = useState(false);
31
31
 
@@ -6,33 +6,52 @@ import renderWithTheme from '../../../testHelpers/renderWithTheme';
6
6
  describe('DatePicker', () => {
7
7
  it('renders DatePickerIOS when OS is iOS', () => {
8
8
  Platform.OS = 'ios';
9
- const { getByTestId } = renderWithTheme(
9
+ const { getByTestId, toJSON } = renderWithTheme(
10
10
  <DatePicker
11
11
  label="Start date"
12
- value={new Date('December 17, 1995')}
13
- minDate={new Date('December 17, 1994')}
14
- maxDate={new Date('December 17, 1996')}
12
+ value={new Date('1995-12-17T00:00:00.000Z')}
13
+ minDate={new Date('1994-12-17T00:00:00.000Z')}
14
+ maxDate={new Date('1996-12-17T00:00:00.000Z')}
15
15
  confirmLabel="Confirm"
16
16
  onChange={jest.fn()}
17
17
  />
18
18
  );
19
19
 
20
+ expect(toJSON()).toMatchSnapshot();
20
21
  expect(getByTestId('datePickerInputIOS')).toBeDefined();
21
22
  });
22
23
 
23
24
  it('renders DatePickerAndroid when OS is android', () => {
24
25
  Platform.OS = 'android';
25
- const { getByTestId } = renderWithTheme(
26
+ const { getByTestId, toJSON } = renderWithTheme(
26
27
  <DatePicker
27
28
  label="Start date"
28
- value={new Date('December 17, 1995')}
29
- minDate={new Date('December 17, 1994')}
30
- maxDate={new Date('December 17, 1996')}
29
+ value={new Date('1995-12-17T00:00:00.000Z')}
30
+ minDate={new Date('1994-12-17T00:00:00.000Z')}
31
+ maxDate={new Date('1996-12-17T00:00:00.000Z')}
31
32
  confirmLabel="Confirm"
32
33
  onChange={jest.fn()}
33
34
  />
34
35
  );
35
36
 
37
+ expect(toJSON()).toMatchSnapshot();
36
38
  expect(getByTestId('datePickerInputAndroid')).toBeDefined();
37
39
  });
40
+
41
+ it('renders variant Calendar', () => {
42
+ const { toJSON, getByTestId } = renderWithTheme(
43
+ <DatePicker
44
+ label="Start date"
45
+ value={new Date('1995-12-17T00:00:00.000Z')}
46
+ minDate={new Date('1994-12-17T00:00:00.000Z')}
47
+ maxDate={new Date('1996-12-17T00:00:00.000Z')}
48
+ confirmLabel="Confirm"
49
+ variant="calendar"
50
+ onChange={jest.fn()}
51
+ />
52
+ );
53
+
54
+ expect(toJSON()).toMatchSnapshot();
55
+ expect(getByTestId('datePickerCalendar')).toBeDefined();
56
+ });
38
57
  });
@@ -0,0 +1,61 @@
1
+ import { fireEvent } from '@testing-library/react-native';
2
+ import React from 'react';
3
+ import type { ModalProps } from 'react-native';
4
+ import renderWithTheme from '../../../testHelpers/renderWithTheme';
5
+ import DatePickerCalendar from '../DatePickerCalendar';
6
+
7
+ jest.mock('react-native/Libraries/Modal/Modal', () => {
8
+ const Modal = jest.requireActual('react-native/Libraries/Modal/Modal');
9
+ return (props: ModalProps) => <Modal {...props} />;
10
+ });
11
+
12
+ describe('DatePickerCalendar', () => {
13
+ it('renders correctly', () => {
14
+ const onChange = jest.fn();
15
+ const { getByText, queryByTestId, toJSON } = renderWithTheme(
16
+ <DatePickerCalendar
17
+ value={new Date('1995-12-21T00:00:00.000Z')}
18
+ label="Start date"
19
+ confirmLabel="Confirm"
20
+ onChange={onChange}
21
+ />
22
+ );
23
+
24
+ expect(toJSON()).toMatchSnapshot();
25
+ expect(getByText('Start date')).toBeDefined();
26
+ expect(queryByTestId('text-input').props.value).toBe('21/12/1995');
27
+ expect(queryByTestId('calendar')).toBeNull();
28
+
29
+ // Open date picker
30
+ fireEvent.press(getByText('Start date'));
31
+ expect(queryByTestId('calendar')).toBeTruthy();
32
+
33
+ expect(getByText('December 1995')).toBeDefined();
34
+ expect(getByText('Mo')).toBeDefined();
35
+ expect(getByText('Tu')).toBeDefined();
36
+ expect(getByText('We')).toBeDefined();
37
+ expect(getByText('Th')).toBeDefined();
38
+ expect(getByText('Fr')).toBeDefined();
39
+ expect(getByText('Sa')).toBeDefined();
40
+ expect(getByText('Su')).toBeDefined();
41
+ // Change date
42
+ fireEvent.press(getByText('14'));
43
+ fireEvent.press(getByText('Confirm'));
44
+
45
+ expect(onChange).toBeCalledWith(new Date('1995-12-14T00:00:00.000Z'));
46
+ });
47
+
48
+ it('renders correct help text', () => {
49
+ const { getByText } = renderWithTheme(
50
+ <DatePickerCalendar
51
+ value={new Date('December 21, 1995')}
52
+ label="Start date"
53
+ confirmLabel="Confirm"
54
+ helpText="This is help text"
55
+ onChange={jest.fn()}
56
+ />
57
+ );
58
+
59
+ expect(getByText('This is help text')).toBeTruthy();
60
+ });
61
+ });