@hero-design/rn 8.35.0 → 8.36.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 (280) hide show
  1. package/.tool-versions +1 -0
  2. package/.turbo/turbo-build.log +2 -2
  3. package/.turbo/turbo-build:types.log +1 -0
  4. package/.turbo/turbo-lint.log +172 -0
  5. package/.turbo/turbo-publish:npm.log +9 -0
  6. package/.turbo/turbo-test.log +1 -0
  7. package/.turbo/turbo-type-check.log +1 -0
  8. package/es/index.js +39 -2
  9. package/lib/index.js +39 -2
  10. package/package.json +1 -1
  11. package/src/components/FAB/ActionGroup/StyledActionGroup.tsx +12 -0
  12. package/src/components/FAB/ActionGroup/__tests__/__snapshots__/index.spec.tsx.snap +801 -1251
  13. package/src/components/FAB/ActionGroup/__tests__/index.spec.tsx +45 -35
  14. package/src/components/FAB/ActionGroup/index.tsx +65 -45
  15. package/types/components/Accordion/AccordionItem.d.ts +0 -0
  16. package/types/components/Accordion/StyledAccordion.d.ts +0 -0
  17. package/types/components/Accordion/index.d.ts +0 -0
  18. package/types/components/Alert/StyledAlert.d.ts +0 -0
  19. package/types/components/Alert/index.d.ts +0 -0
  20. package/types/components/Attachment/StyledAttachment.d.ts +0 -0
  21. package/types/components/Attachment/index.d.ts +0 -0
  22. package/types/components/Avatar/Avatar.d.ts +0 -0
  23. package/types/components/Avatar/AvatarStack/StyledAvatarStack.d.ts +0 -0
  24. package/types/components/Avatar/AvatarStack/index.d.ts +0 -0
  25. package/types/components/Avatar/AvatarStack/utils.d.ts +0 -0
  26. package/types/components/Avatar/StyledAvatar.d.ts +0 -0
  27. package/types/components/Avatar/index.d.ts +0 -0
  28. package/types/components/Badge/Status.d.ts +0 -0
  29. package/types/components/Badge/StyledBadge.d.ts +0 -0
  30. package/types/components/Badge/index.d.ts +0 -0
  31. package/types/components/BottomNavigation/StyledBottomNavigation.d.ts +0 -0
  32. package/types/components/BottomNavigation/index.d.ts +0 -0
  33. package/types/components/BottomSheet/BottomSheetContext.d.ts +0 -0
  34. package/types/components/BottomSheet/Footer.d.ts +0 -0
  35. package/types/components/BottomSheet/Header.d.ts +0 -0
  36. package/types/components/BottomSheet/ScrollView.d.ts +0 -0
  37. package/types/components/BottomSheet/StyledBottomSheet.d.ts +0 -0
  38. package/types/components/BottomSheet/index.d.ts +0 -0
  39. package/types/components/Box/StyledBox.d.ts +0 -0
  40. package/types/components/Box/config.d.ts +0 -0
  41. package/types/components/Box/index.d.ts +0 -0
  42. package/types/components/Box/types.d.ts +0 -0
  43. package/types/components/Button/Button.d.ts +0 -0
  44. package/types/components/Button/IconButton.d.ts +0 -0
  45. package/types/components/Button/LoadingIndicator/StyledLoadingIndicator.d.ts +0 -0
  46. package/types/components/Button/LoadingIndicator/index.d.ts +0 -0
  47. package/types/components/Button/StyledButton.d.ts +0 -0
  48. package/types/components/Button/UtilityButton/StyledUtilityButton.d.ts +0 -0
  49. package/types/components/Button/UtilityButton/index.d.ts +0 -0
  50. package/types/components/Button/index.d.ts +0 -0
  51. package/types/components/Calendar/CalendarRowItem.d.ts +0 -0
  52. package/types/components/Calendar/StyledCalendar.d.ts +0 -0
  53. package/types/components/Calendar/helpers.d.ts +0 -0
  54. package/types/components/Calendar/index.d.ts +0 -0
  55. package/types/components/Card/DataCard/StyledDataCard.d.ts +0 -0
  56. package/types/components/Card/DataCard/index.d.ts +0 -0
  57. package/types/components/Card/StyledCard.d.ts +0 -0
  58. package/types/components/Card/index.d.ts +0 -0
  59. package/types/components/Carousel/CardCarousel.d.ts +0 -0
  60. package/types/components/Carousel/CarouselItem.d.ts +0 -0
  61. package/types/components/Carousel/StyledCardCarousel.d.ts +0 -0
  62. package/types/components/Carousel/StyledCarousel.d.ts +0 -0
  63. package/types/components/Carousel/contants.d.ts +0 -0
  64. package/types/components/Carousel/index.d.ts +0 -0
  65. package/types/components/Carousel/types.d.ts +0 -0
  66. package/types/components/Checkbox/StyledCheckbox.d.ts +0 -0
  67. package/types/components/Checkbox/index.d.ts +0 -0
  68. package/types/components/Collapse/StyledCollapse.d.ts +0 -0
  69. package/types/components/Collapse/index.d.ts +0 -0
  70. package/types/components/ContentNavigator/StyledContentNavigator.d.ts +0 -0
  71. package/types/components/ContentNavigator/index.d.ts +0 -0
  72. package/types/components/DatePicker/DatePickerAndroid.d.ts +0 -0
  73. package/types/components/DatePicker/DatePickerCalendar.d.ts +0 -0
  74. package/types/components/DatePicker/DatePickerIOS.d.ts +0 -0
  75. package/types/components/DatePicker/StyledDatePicker.d.ts +0 -0
  76. package/types/components/DatePicker/index.d.ts +0 -0
  77. package/types/components/DatePicker/types.d.ts +0 -0
  78. package/types/components/Divider/StyledDivider.d.ts +0 -0
  79. package/types/components/Divider/index.d.ts +0 -0
  80. package/types/components/Drawer/DragableDrawer/helpers.d.ts +0 -0
  81. package/types/components/Drawer/DragableDrawer/index.d.ts +0 -0
  82. package/types/components/Drawer/StyledDrawer.d.ts +0 -0
  83. package/types/components/Drawer/index.d.ts +0 -0
  84. package/types/components/Empty/StyledEmpty.d.ts +0 -0
  85. package/types/components/Empty/index.d.ts +0 -0
  86. package/types/components/Error/StyledError.d.ts +0 -0
  87. package/types/components/Error/index.d.ts +0 -0
  88. package/types/components/FAB/ActionGroup/ActionItem.d.ts +0 -0
  89. package/types/components/FAB/ActionGroup/FABModal.d.ts +21 -0
  90. package/types/components/FAB/ActionGroup/FABModalContentWrapper.d.ts +18 -0
  91. package/types/components/FAB/ActionGroup/FABProvider.d.ts +5 -0
  92. package/types/components/FAB/ActionGroup/ModalPresenter/ModalPresenter.d.ts +34 -0
  93. package/types/components/FAB/ActionGroup/ModalPresenter/index.d.ts +3 -0
  94. package/types/components/FAB/ActionGroup/StyledActionGroup.d.ts +7 -1
  95. package/types/components/FAB/ActionGroup/StyledActionItem.d.ts +0 -0
  96. package/types/components/FAB/ActionGroup/index.d.ts +0 -0
  97. package/types/components/FAB/AnimatedFABIcon.d.ts +0 -0
  98. package/types/components/FAB/FAB.d.ts +0 -0
  99. package/types/components/FAB/StyledFAB.d.ts +0 -0
  100. package/types/components/FAB/index.d.ts +0 -0
  101. package/types/components/Icon/AnimatedIcon.d.ts +0 -0
  102. package/types/components/Icon/HeroIcon/index.d.ts +0 -0
  103. package/types/components/Icon/IconList.d.ts +0 -0
  104. package/types/components/Icon/index.d.ts +0 -0
  105. package/types/components/Icon/utils.d.ts +0 -0
  106. package/types/components/Image/index.d.ts +0 -0
  107. package/types/components/List/BasicListItem.d.ts +0 -0
  108. package/types/components/List/ListItem.d.ts +0 -0
  109. package/types/components/List/StyledBasicListItem.d.ts +0 -0
  110. package/types/components/List/StyledListItem.d.ts +0 -0
  111. package/types/components/List/index.d.ts +0 -0
  112. package/types/components/PageControl/StyledPageControl.d.ts +0 -0
  113. package/types/components/PageControl/index.d.ts +0 -0
  114. package/types/components/PinInput/PinCell.d.ts +0 -0
  115. package/types/components/PinInput/StyledPinInput.d.ts +0 -0
  116. package/types/components/PinInput/index.d.ts +0 -0
  117. package/types/components/Progress/ProgressBar.d.ts +0 -0
  118. package/types/components/Progress/ProgressCircle.d.ts +0 -0
  119. package/types/components/Progress/StyledProgressBar.d.ts +0 -0
  120. package/types/components/Progress/StyledProgressCircle.d.ts +0 -0
  121. package/types/components/Progress/__tests__/index.spec.d.ts +0 -0
  122. package/types/components/Progress/constants.d.ts +0 -0
  123. package/types/components/Progress/index.d.ts +0 -0
  124. package/types/components/Progress/types.d.ts +0 -0
  125. package/types/components/Radio/Radio.d.ts +0 -0
  126. package/types/components/Radio/RadioGroup.d.ts +0 -0
  127. package/types/components/Radio/StyledRadio.d.ts +0 -0
  128. package/types/components/Radio/index.d.ts +0 -0
  129. package/types/components/Radio/types.d.ts +0 -0
  130. package/types/components/RefreshControl/index.d.ts +0 -0
  131. package/types/components/RichTextEditor/EditorEvent.d.ts +0 -0
  132. package/types/components/RichTextEditor/EditorToolbar.d.ts +0 -0
  133. package/types/components/RichTextEditor/MentionList.d.ts +0 -0
  134. package/types/components/RichTextEditor/RichTextEditor.d.ts +0 -0
  135. package/types/components/RichTextEditor/StyledRichTextEditor.d.ts +0 -0
  136. package/types/components/RichTextEditor/StyledToolbar.d.ts +0 -0
  137. package/types/components/RichTextEditor/__mocks__/heroEditorApp.d.ts +0 -0
  138. package/types/components/RichTextEditor/constants.d.ts +0 -0
  139. package/types/components/RichTextEditor/heroEditorApp.d.ts +0 -0
  140. package/types/components/RichTextEditor/index.d.ts +0 -0
  141. package/types/components/RichTextEditor/types.d.ts +0 -0
  142. package/types/components/RichTextEditor/utils/events.d.ts +0 -0
  143. package/types/components/RichTextEditor/utils/rnWebView.d.ts +0 -0
  144. package/types/components/SectionHeading/StyledHeading.d.ts +0 -0
  145. package/types/components/SectionHeading/index.d.ts +0 -0
  146. package/types/components/Select/BaseOptionList.d.ts +0 -0
  147. package/types/components/Select/Footer.d.ts +0 -0
  148. package/types/components/Select/MultiSelect/Option.d.ts +0 -0
  149. package/types/components/Select/MultiSelect/OptionList.d.ts +0 -0
  150. package/types/components/Select/MultiSelect/index.d.ts +0 -0
  151. package/types/components/Select/SingleSelect/Option.d.ts +0 -0
  152. package/types/components/Select/SingleSelect/OptionList.d.ts +0 -0
  153. package/types/components/Select/SingleSelect/StyledSingleSelect.d.ts +0 -0
  154. package/types/components/Select/SingleSelect/index.d.ts +0 -0
  155. package/types/components/Select/StyledSelect.d.ts +0 -0
  156. package/types/components/Select/helpers.d.ts +0 -0
  157. package/types/components/Select/index.d.ts +0 -0
  158. package/types/components/Select/types.d.ts +0 -0
  159. package/types/components/Skeleton/StyledSkeleton.d.ts +0 -0
  160. package/types/components/Skeleton/index.d.ts +0 -0
  161. package/types/components/Slider/index.d.ts +0 -0
  162. package/types/components/Spinner/AnimatedSpinner.d.ts +0 -0
  163. package/types/components/Spinner/StyledSpinner.d.ts +0 -0
  164. package/types/components/Spinner/index.d.ts +0 -0
  165. package/types/components/Success/StyledSuccess.d.ts +0 -0
  166. package/types/components/Success/index.d.ts +0 -0
  167. package/types/components/Swipeable/StyledSwipeable.d.ts +0 -0
  168. package/types/components/Swipeable/SwipeableAction.d.ts +0 -0
  169. package/types/components/Swipeable/index.d.ts +0 -0
  170. package/types/components/Switch/SelectorSwitch/Option.d.ts +0 -0
  171. package/types/components/Switch/SelectorSwitch/StyledSelectorSwitch.d.ts +0 -0
  172. package/types/components/Switch/SelectorSwitch/index.d.ts +0 -0
  173. package/types/components/Switch/StyledSwitch.d.ts +0 -0
  174. package/types/components/Switch/index.d.ts +0 -0
  175. package/types/components/Tabs/ActiveTabIndicator.d.ts +0 -0
  176. package/types/components/Tabs/SceneView.d.ts +0 -0
  177. package/types/components/Tabs/ScrollableTabs.d.ts +0 -0
  178. package/types/components/Tabs/ScrollableTabsHeader.d.ts +0 -0
  179. package/types/components/Tabs/ScrollableTabsV2/SceneView.d.ts +10 -0
  180. package/types/components/Tabs/ScrollableTabsV2/ScrollableTabsV2.d.ts +9 -0
  181. package/types/components/Tabs/ScrollableTabsV2/index.d.ts +4 -0
  182. package/types/components/Tabs/StyledScrollableTabs.d.ts +0 -0
  183. package/types/components/Tabs/StyledTabs.d.ts +0 -0
  184. package/types/components/Tabs/TabWithBadge.d.ts +0 -0
  185. package/types/components/Tabs/index.d.ts +0 -0
  186. package/types/components/Tabs/useIsFocused.d.ts +0 -0
  187. package/types/components/Tabs/utils.d.ts +0 -0
  188. package/types/components/Tag/StyledTag.d.ts +0 -0
  189. package/types/components/Tag/index.d.ts +0 -0
  190. package/types/components/TextInput/StyledTextInput.d.ts +0 -0
  191. package/types/components/TextInput/index.d.ts +0 -0
  192. package/types/components/TimePicker/StyledTimePicker.d.ts +0 -0
  193. package/types/components/TimePicker/TimePickerAndroid.d.ts +0 -0
  194. package/types/components/TimePicker/TimePickerIOS.d.ts +0 -0
  195. package/types/components/TimePicker/index.d.ts +0 -0
  196. package/types/components/TimePicker/types.d.ts +0 -0
  197. package/types/components/Toast/StyledToast.d.ts +0 -0
  198. package/types/components/Toast/Toast.d.ts +0 -0
  199. package/types/components/Toast/ToastContainer.d.ts +0 -0
  200. package/types/components/Toast/ToastContext.d.ts +0 -0
  201. package/types/components/Toast/ToastProvider.d.ts +0 -0
  202. package/types/components/Toast/index.d.ts +0 -0
  203. package/types/components/Toast/types.d.ts +0 -0
  204. package/types/components/Toolbar/StyledToolbar.d.ts +0 -0
  205. package/types/components/Toolbar/ToolbarGroup.d.ts +0 -0
  206. package/types/components/Toolbar/ToolbarItem.d.ts +0 -0
  207. package/types/components/Toolbar/index.d.ts +0 -0
  208. package/types/components/Typography/Text/StyledText.d.ts +0 -0
  209. package/types/components/Typography/Text/index.d.ts +0 -0
  210. package/types/components/Typography/index.d.ts +0 -0
  211. package/types/index.d.ts +0 -0
  212. package/types/testHelpers/renderWithTheme.d.ts +0 -0
  213. package/types/theme/ThemeProvider.d.ts +0 -0
  214. package/types/theme/ThemeSwitcher.d.ts +0 -0
  215. package/types/theme/components/accordion.d.ts +0 -0
  216. package/types/theme/components/alert.d.ts +0 -0
  217. package/types/theme/components/attachment.d.ts +0 -0
  218. package/types/theme/components/avatar.d.ts +0 -0
  219. package/types/theme/components/badge.d.ts +0 -0
  220. package/types/theme/components/bottomNavigation.d.ts +0 -0
  221. package/types/theme/components/bottomSheet.d.ts +0 -0
  222. package/types/theme/components/button.d.ts +0 -0
  223. package/types/theme/components/calendar.d.ts +0 -0
  224. package/types/theme/components/card.d.ts +0 -0
  225. package/types/theme/components/cardCarousel.d.ts +0 -0
  226. package/types/theme/components/carousel.d.ts +0 -0
  227. package/types/theme/components/checkbox.d.ts +0 -0
  228. package/types/theme/components/contentNavigator.d.ts +0 -0
  229. package/types/theme/components/datePicker.d.ts +0 -0
  230. package/types/theme/components/divider.d.ts +0 -0
  231. package/types/theme/components/drawer.d.ts +0 -0
  232. package/types/theme/components/empty.d.ts +0 -0
  233. package/types/theme/components/error.d.ts +0 -0
  234. package/types/theme/components/fab.d.ts +0 -0
  235. package/types/theme/components/icon.d.ts +0 -0
  236. package/types/theme/components/image.d.ts +0 -0
  237. package/types/theme/components/list.d.ts +0 -0
  238. package/types/theme/components/pageControl.d.ts +0 -0
  239. package/types/theme/components/pinInput.d.ts +0 -0
  240. package/types/theme/components/progress.d.ts +0 -0
  241. package/types/theme/components/radio.d.ts +0 -0
  242. package/types/theme/components/refreshControl.d.ts +0 -0
  243. package/types/theme/components/richTextEditor.d.ts +0 -0
  244. package/types/theme/components/sectionHeading.d.ts +0 -0
  245. package/types/theme/components/select.d.ts +0 -0
  246. package/types/theme/components/skeleton.d.ts +0 -0
  247. package/types/theme/components/slider.d.ts +0 -0
  248. package/types/theme/components/spinner.d.ts +0 -0
  249. package/types/theme/components/success.d.ts +0 -0
  250. package/types/theme/components/swipeable.d.ts +0 -0
  251. package/types/theme/components/switch.d.ts +0 -0
  252. package/types/theme/components/tabs.d.ts +0 -0
  253. package/types/theme/components/tag.d.ts +0 -0
  254. package/types/theme/components/textInput.d.ts +0 -0
  255. package/types/theme/components/timePicker.d.ts +0 -0
  256. package/types/theme/components/toast.d.ts +0 -0
  257. package/types/theme/components/toolbar.d.ts +0 -0
  258. package/types/theme/components/typography.d.ts +0 -0
  259. package/types/theme/getTheme.d.ts +0 -0
  260. package/types/theme/global/borders.d.ts +0 -0
  261. package/types/theme/global/colors/eBens.d.ts +0 -0
  262. package/types/theme/global/colors/global.d.ts +0 -0
  263. package/types/theme/global/colors/globalDark.d.ts +0 -0
  264. package/types/theme/global/colors/jobs.d.ts +0 -0
  265. package/types/theme/global/colors/swag.d.ts +0 -0
  266. package/types/theme/global/colors/swagDark.d.ts +0 -0
  267. package/types/theme/global/colors/types.d.ts +0 -0
  268. package/types/theme/global/colors/wallet.d.ts +0 -0
  269. package/types/theme/global/colors/work.d.ts +0 -0
  270. package/types/theme/global/index.d.ts +0 -0
  271. package/types/theme/global/scale.d.ts +0 -0
  272. package/types/theme/global/sizes.d.ts +0 -0
  273. package/types/theme/global/space.d.ts +0 -0
  274. package/types/theme/global/typography.d.ts +0 -0
  275. package/types/theme/index.d.ts +0 -0
  276. package/types/types.d.ts +0 -0
  277. package/types/utils/functions.d.ts +0 -0
  278. package/types/utils/helpers.d.ts +0 -0
  279. package/types/utils/hooks.d.ts +0 -0
  280. package/types/utils/scale.d.ts +0 -0
@@ -10,52 +10,53 @@ describe('ActionGroup', () => {
10
10
  ${true}
11
11
  ${false}
12
12
  `('has active $active', ({ active }) => {
13
- const { toJSON, getByTestId, getByText } = renderWithTheme(
14
- <ActionGroup
15
- fabTitle="Shout out"
16
- active={active}
17
- headerTitle="What would you like to create?"
18
- items={[
19
- {
20
- icon: 'speaker',
21
- title: 'Give shout out',
22
- testID: 'speaker-action-item',
23
- },
24
- { icon: 'target', title: 'Goal', testID: 'target-action-item' },
25
- {
26
- icon: 'plane',
27
- title: 'Leave request',
28
- testID: 'plane-action-item',
29
- },
30
- {
31
- icon: 'health-bag',
32
- title: 'Safety incident',
33
- testID: 'health-bag-action-item',
34
- },
35
- { icon: 'clock', title: 'Timesheets', testID: 'clock-action-item' },
36
- ]}
37
- />
38
- );
13
+ const { toJSON, getByTestId, getByText, queryByTestId, queryByText } =
14
+ renderWithTheme(
15
+ <ActionGroup
16
+ fabTitle="Shout out"
17
+ active={active}
18
+ headerTitle="What would you like to create?"
19
+ items={[
20
+ {
21
+ icon: 'speaker',
22
+ title: 'Give shout out',
23
+ testID: 'speaker-action-item',
24
+ },
25
+ { icon: 'target', title: 'Goal', testID: 'target-action-item' },
26
+ {
27
+ icon: 'plane',
28
+ title: 'Leave request',
29
+ testID: 'plane-action-item',
30
+ },
31
+ {
32
+ icon: 'health-bag',
33
+ title: 'Safety incident',
34
+ testID: 'health-bag-action-item',
35
+ },
36
+ { icon: 'clock', title: 'Timesheets', testID: 'clock-action-item' },
37
+ ]}
38
+ />
39
+ );
39
40
 
40
41
  expect(toJSON()).toMatchSnapshot();
41
42
 
42
- expect(getByText('What would you like to create?')).toBeDefined();
43
- expect(getByTestId('speaker-action-item')).toBeDefined();
44
- expect(getByTestId('target-action-item')).toBeDefined();
45
- expect(getByTestId('plane-action-item')).toBeDefined();
46
- expect(getByTestId('health-bag-action-item')).toBeDefined();
47
-
48
43
  if (active) {
49
44
  // verify backdrop appears
50
- expect(getByTestId('back-drop')).toHaveProp('pointerEvents', 'auto');
45
+ expect(queryByTestId('back-drop')).toBeDefined();
46
+ expect(getByText('What would you like to create?')).toBeDefined();
47
+ expect(getByTestId('speaker-action-item')).toBeDefined();
48
+ expect(getByTestId('target-action-item')).toBeDefined();
49
+ expect(getByTestId('plane-action-item')).toBeDefined();
50
+ expect(getByTestId('health-bag-action-item')).toBeDefined();
51
51
  } else {
52
52
  // verify backdrop disappears
53
- expect(getByTestId('back-drop')).toHaveProp('pointerEvents', 'box-none');
53
+ expect(queryByTestId('back-drop')).toBeNull();
54
+ expect(queryByText('What would you like to create?')).toBeNull();
54
55
  }
55
56
  });
56
57
 
57
58
  describe('when user presses', () => {
58
- it('calls onPress', () => {
59
+ it('calls onPress when active = false', () => {
59
60
  const onPressSpy = jest.fn();
60
61
  const { getByTestId } = renderWithTheme(
61
62
  <ActionGroup onPress={onPressSpy} />
@@ -63,5 +64,14 @@ describe('ActionGroup', () => {
63
64
  fireEvent(getByTestId('fab'), 'press');
64
65
  expect(onPressSpy).toBeCalledTimes(1);
65
66
  });
67
+
68
+ it('calls onPress when active = true', () => {
69
+ const onPressSpy = jest.fn();
70
+ const { getByTestId } = renderWithTheme(
71
+ <ActionGroup onPress={onPressSpy} active />
72
+ );
73
+ fireEvent(getByTestId('fab-in-portal'), 'press');
74
+ expect(onPressSpy).toBeCalledTimes(1);
75
+ });
66
76
  });
67
77
  });
@@ -1,6 +1,6 @@
1
1
  import React, { forwardRef, useRef } from 'react';
2
2
  import type { StyleProp, ViewStyle } from 'react-native';
3
- import { Animated, Platform } from 'react-native';
3
+ import { Animated, Platform, Modal } from 'react-native';
4
4
  import type { IconName } from '../../Icon';
5
5
  import type { ActionItemProps } from './ActionItem';
6
6
  import ActionItem from './ActionItem';
@@ -8,6 +8,7 @@ import {
8
8
  StyledActionGroupContainer,
9
9
  StyledBackdrop,
10
10
  StyledContainer,
11
+ StyledContainerInModal,
11
12
  StyledFAB,
12
13
  StyledHeaderText,
13
14
  } from './StyledActionGroup';
@@ -110,64 +111,83 @@ const ActionGroup = forwardRef<ActionGroupHandles, ActionGroupProps>(
110
111
  }),
111
112
  ]).start();
112
113
  }, [active]);
113
-
114
- const interpolatedBackdropOpacityAnimation =
114
+ const interpolatedActionGroupOpacityAnimation =
115
115
  tranlateXAnimation.current.interpolate({
116
116
  inputRange: [0, 1],
117
- outputRange: [0, 0.25],
117
+ outputRange: [0, 1],
118
118
  });
119
119
 
120
- const interpolatedActionGroupOpacityAnimation =
120
+ const interpolatedFABOpacityAnimation =
121
121
  tranlateXAnimation.current.interpolate({
122
122
  inputRange: [0, 1],
123
- outputRange: [0, 1],
123
+ outputRange: [1, 0],
124
124
  });
125
125
 
126
126
  return (
127
127
  <StyledContainer testID={testID} pointerEvents="box-none" style={style}>
128
- <StyledBackdrop
129
- pointerEvents={active ? 'auto' : 'box-none'}
130
- testID="back-drop"
131
- style={{ opacity: interpolatedBackdropOpacityAnimation }}
132
- />
133
- <StyledActionGroupContainer
134
- pointerEvents={active ? 'auto' : 'none'}
135
- testID="action-group"
128
+ <Animated.View
136
129
  style={{
137
- opacity: interpolatedActionGroupOpacityAnimation,
130
+ opacity: interpolatedFABOpacityAnimation,
138
131
  }}
139
132
  >
140
- {!!headerTitle && (
141
- <Animated.View
142
- style={{ transform: [{ translateY: titleTranslateY }] }}
133
+ <StyledFAB
134
+ key="fab"
135
+ testID="fab"
136
+ icon={fabIcon}
137
+ onPress={onPress}
138
+ animated
139
+ active={active}
140
+ title={fabTitle}
141
+ ref={fabRef}
142
+ />
143
+ </Animated.View>
144
+ <Modal
145
+ visible={active}
146
+ animationType="fade"
147
+ transparent
148
+ statusBarTranslucent={true}
149
+ >
150
+ <StyledContainerInModal testID={testID} style={[style]}>
151
+ <StyledBackdrop testID="back-drop" />
152
+ <StyledActionGroupContainer
153
+ testID="action-group"
154
+ style={{
155
+ opacity: interpolatedActionGroupOpacityAnimation,
156
+ }}
143
157
  >
144
- <StyledHeaderText testID="header-text" level="h4">
145
- {headerTitle}
146
- </StyledHeaderText>
147
- </Animated.View>
148
- )}
149
-
150
- <Box style={[style, { paddingBottom: 0 }]}>
151
- {items?.map((itemProp, index) => (
152
- <ActionItem
153
- key={itemProp.key || `${itemProp.icon}_${itemProp.title}`}
154
- {...itemProp}
155
- index={active ? index : items.length - index}
156
- active={active}
157
- />
158
- ))}
159
- </Box>
160
- </StyledActionGroupContainer>
161
-
162
- <StyledFAB
163
- testID="fab"
164
- icon={fabIcon}
165
- onPress={onPress}
166
- animated
167
- active={active}
168
- title={fabTitle}
169
- ref={fabRef}
170
- />
158
+ {!!headerTitle && (
159
+ <Animated.View
160
+ style={{ transform: [{ translateY: titleTranslateY }] }}
161
+ >
162
+ <StyledHeaderText testID="header-text" level="h4">
163
+ {headerTitle}
164
+ </StyledHeaderText>
165
+ </Animated.View>
166
+ )}
167
+
168
+ <Box style={[style, { paddingBottom: 0 }]}>
169
+ {items?.map((itemProp, index) => (
170
+ <ActionItem
171
+ key={itemProp.key || `${itemProp.icon}_${itemProp.title}`}
172
+ {...itemProp}
173
+ index={active ? index : items.length - index}
174
+ active={active}
175
+ />
176
+ ))}
177
+ </Box>
178
+ </StyledActionGroupContainer>
179
+
180
+ <StyledFAB
181
+ key="fab-in-portal"
182
+ testID="fab-in-portal"
183
+ icon={fabIcon}
184
+ onPress={onPress}
185
+ animated
186
+ active={active}
187
+ title={fabTitle}
188
+ />
189
+ </StyledContainerInModal>
190
+ </Modal>
171
191
  </StyledContainer>
172
192
  );
173
193
  }
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -0,0 +1,21 @@
1
+ import React from 'react';
2
+ export interface ModalProps {
3
+ /**
4
+ * Content of the modal.
5
+ */
6
+ children: React.ReactElement;
7
+ /**
8
+ * Visibility of the modal
9
+ */
10
+ visible?: boolean;
11
+ /**
12
+ * Callback when the modal is shown.
13
+ */
14
+ onShow?: () => void;
15
+ /**
16
+ * TestID of the modal.
17
+ */
18
+ testID?: string;
19
+ }
20
+ declare const fABModal: ({ children, onShow, testID, visible }: ModalProps) => null;
21
+ export default fABModal;
@@ -0,0 +1,18 @@
1
+ import React from 'react';
2
+ import { StyleProp, ViewStyle } from 'react-native';
3
+ type ModalContentWrapperProps = {
4
+ children: React.ReactElement;
5
+ visible?: boolean;
6
+ testID?: string;
7
+ style?: StyleProp<ViewStyle>;
8
+ animated?: boolean;
9
+ pointerEvents: 'box-none' | 'none' | 'box-only' | 'auto';
10
+ };
11
+ export type ModalContentWrapperHandler = {
12
+ hide: (callback?: () => void) => void;
13
+ };
14
+ declare const FABModalContentWrapper: {
15
+ ({ children, testID, pointerEvents, }: ModalContentWrapperProps): JSX.Element;
16
+ displayName: string;
17
+ };
18
+ export default FABModalContentWrapper;
@@ -0,0 +1,5 @@
1
+ import { ReactNode } from 'react';
2
+ declare const ModalProvider: ({ children }: {
3
+ children: ReactNode;
4
+ }) => JSX.Element;
5
+ export default ModalProvider;
@@ -0,0 +1,34 @@
1
+ import React from 'react';
2
+ import { ViewProps } from 'react-native';
3
+ export type ModalPresenterHandles = {
4
+ animatedOut: (completion?: () => void) => void;
5
+ };
6
+ export type FABModalDismissFunc = (onDismiss?: () => void) => void;
7
+ export type FABModalUpdateFunc = (content: React.ReactNode) => void;
8
+ /**
9
+ * Modal handler is returned by `showModal` function.
10
+ */
11
+ export type FABModalHandler = {
12
+ /**
13
+ * Same `dismiss` function as in `ModalContentProps`.
14
+ */
15
+ dismiss: FABModalDismissFunc;
16
+ /**
17
+ * Same `update` function as in `ModalContentProps`.
18
+ */
19
+ update: FABModalUpdateFunc;
20
+ };
21
+ declare const FABModalPresenter: React.ForwardRefExoticComponent<ViewProps & React.RefAttributes<ModalPresenterHandles>>;
22
+ /**
23
+ * Present a modal on screen immediately.
24
+ *
25
+ * The new presented modal will be on top of existing modals if there are any.
26
+ *
27
+ * @param Content A component to be presented as a modal on screen.
28
+ * This component will be centered horizontally and vertically on screen with
29
+ * a semitransparent black overlay underneath.
30
+ * @param contentProps Props for this modal component.
31
+ * @returns A `ModalHandler` you can use to dismiss the modal.
32
+ */
33
+ export declare const showFABModal: (content: React.ReactNode) => FABModalHandler;
34
+ export default FABModalPresenter;
@@ -0,0 +1,3 @@
1
+ import { FABModalDismissFunc, FABModalHandler, showFABModal, ModalPresenterHandles } from './ModalPresenter';
2
+ export type { FABModalDismissFunc as ModalDismissFunc, FABModalHandler as ModalHandler, ModalPresenterHandles, };
3
+ export { showFABModal };
@@ -8,6 +8,12 @@ declare const StyledContainer: import("@emotion/native").StyledComponent<ViewPro
8
8
  }, {}, {
9
9
  ref?: import("react").Ref<View> | undefined;
10
10
  }>;
11
+ declare const StyledContainerInModal: import("@emotion/native").StyledComponent<ViewProps & {
12
+ theme?: import("@emotion/react").Theme | undefined;
13
+ as?: import("react").ElementType<any> | undefined;
14
+ }, {}, {
15
+ ref?: import("react").Ref<View> | undefined;
16
+ }>;
11
17
  declare const StyledActionGroupContainer: import("@emotion/native").StyledComponent<Animated.AnimatedProps<ViewProps & import("react").RefAttributes<View>> & {
12
18
  children?: import("react").ReactNode;
13
19
  } & {
@@ -28,4 +34,4 @@ declare const StyledHeaderText: import("@emotion/native").StyledComponent<import
28
34
  theme?: import("@emotion/react").Theme | undefined;
29
35
  as?: import("react").ElementType<any> | undefined;
30
36
  } & TextProps, {}, {}>;
31
- export { StyledHeaderText, StyledBackdrop, StyledContainer, StyledActionGroupContainer, StyledFAB, };
37
+ export { StyledHeaderText, StyledBackdrop, StyledContainer, StyledContainerInModal, StyledActionGroupContainer, StyledFAB, };
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes