@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.
- package/.tool-versions +1 -0
- package/.turbo/turbo-build.log +2 -2
- package/.turbo/turbo-build:types.log +1 -0
- package/.turbo/turbo-lint.log +172 -0
- package/.turbo/turbo-publish:npm.log +9 -0
- package/.turbo/turbo-test.log +1 -0
- package/.turbo/turbo-type-check.log +1 -0
- package/es/index.js +39 -2
- package/lib/index.js +39 -2
- package/package.json +1 -1
- package/src/components/FAB/ActionGroup/StyledActionGroup.tsx +12 -0
- package/src/components/FAB/ActionGroup/__tests__/__snapshots__/index.spec.tsx.snap +801 -1251
- package/src/components/FAB/ActionGroup/__tests__/index.spec.tsx +45 -35
- package/src/components/FAB/ActionGroup/index.tsx +65 -45
- package/types/components/Accordion/AccordionItem.d.ts +0 -0
- package/types/components/Accordion/StyledAccordion.d.ts +0 -0
- package/types/components/Accordion/index.d.ts +0 -0
- package/types/components/Alert/StyledAlert.d.ts +0 -0
- package/types/components/Alert/index.d.ts +0 -0
- package/types/components/Attachment/StyledAttachment.d.ts +0 -0
- package/types/components/Attachment/index.d.ts +0 -0
- package/types/components/Avatar/Avatar.d.ts +0 -0
- package/types/components/Avatar/AvatarStack/StyledAvatarStack.d.ts +0 -0
- package/types/components/Avatar/AvatarStack/index.d.ts +0 -0
- package/types/components/Avatar/AvatarStack/utils.d.ts +0 -0
- package/types/components/Avatar/StyledAvatar.d.ts +0 -0
- package/types/components/Avatar/index.d.ts +0 -0
- package/types/components/Badge/Status.d.ts +0 -0
- package/types/components/Badge/StyledBadge.d.ts +0 -0
- package/types/components/Badge/index.d.ts +0 -0
- package/types/components/BottomNavigation/StyledBottomNavigation.d.ts +0 -0
- package/types/components/BottomNavigation/index.d.ts +0 -0
- package/types/components/BottomSheet/BottomSheetContext.d.ts +0 -0
- package/types/components/BottomSheet/Footer.d.ts +0 -0
- package/types/components/BottomSheet/Header.d.ts +0 -0
- package/types/components/BottomSheet/ScrollView.d.ts +0 -0
- package/types/components/BottomSheet/StyledBottomSheet.d.ts +0 -0
- package/types/components/BottomSheet/index.d.ts +0 -0
- package/types/components/Box/StyledBox.d.ts +0 -0
- package/types/components/Box/config.d.ts +0 -0
- package/types/components/Box/index.d.ts +0 -0
- package/types/components/Box/types.d.ts +0 -0
- package/types/components/Button/Button.d.ts +0 -0
- package/types/components/Button/IconButton.d.ts +0 -0
- package/types/components/Button/LoadingIndicator/StyledLoadingIndicator.d.ts +0 -0
- package/types/components/Button/LoadingIndicator/index.d.ts +0 -0
- package/types/components/Button/StyledButton.d.ts +0 -0
- package/types/components/Button/UtilityButton/StyledUtilityButton.d.ts +0 -0
- package/types/components/Button/UtilityButton/index.d.ts +0 -0
- package/types/components/Button/index.d.ts +0 -0
- package/types/components/Calendar/CalendarRowItem.d.ts +0 -0
- package/types/components/Calendar/StyledCalendar.d.ts +0 -0
- package/types/components/Calendar/helpers.d.ts +0 -0
- package/types/components/Calendar/index.d.ts +0 -0
- package/types/components/Card/DataCard/StyledDataCard.d.ts +0 -0
- package/types/components/Card/DataCard/index.d.ts +0 -0
- package/types/components/Card/StyledCard.d.ts +0 -0
- package/types/components/Card/index.d.ts +0 -0
- package/types/components/Carousel/CardCarousel.d.ts +0 -0
- package/types/components/Carousel/CarouselItem.d.ts +0 -0
- package/types/components/Carousel/StyledCardCarousel.d.ts +0 -0
- package/types/components/Carousel/StyledCarousel.d.ts +0 -0
- package/types/components/Carousel/contants.d.ts +0 -0
- package/types/components/Carousel/index.d.ts +0 -0
- package/types/components/Carousel/types.d.ts +0 -0
- package/types/components/Checkbox/StyledCheckbox.d.ts +0 -0
- package/types/components/Checkbox/index.d.ts +0 -0
- package/types/components/Collapse/StyledCollapse.d.ts +0 -0
- package/types/components/Collapse/index.d.ts +0 -0
- package/types/components/ContentNavigator/StyledContentNavigator.d.ts +0 -0
- package/types/components/ContentNavigator/index.d.ts +0 -0
- package/types/components/DatePicker/DatePickerAndroid.d.ts +0 -0
- package/types/components/DatePicker/DatePickerCalendar.d.ts +0 -0
- package/types/components/DatePicker/DatePickerIOS.d.ts +0 -0
- package/types/components/DatePicker/StyledDatePicker.d.ts +0 -0
- package/types/components/DatePicker/index.d.ts +0 -0
- package/types/components/DatePicker/types.d.ts +0 -0
- package/types/components/Divider/StyledDivider.d.ts +0 -0
- package/types/components/Divider/index.d.ts +0 -0
- package/types/components/Drawer/DragableDrawer/helpers.d.ts +0 -0
- package/types/components/Drawer/DragableDrawer/index.d.ts +0 -0
- package/types/components/Drawer/StyledDrawer.d.ts +0 -0
- package/types/components/Drawer/index.d.ts +0 -0
- package/types/components/Empty/StyledEmpty.d.ts +0 -0
- package/types/components/Empty/index.d.ts +0 -0
- package/types/components/Error/StyledError.d.ts +0 -0
- package/types/components/Error/index.d.ts +0 -0
- package/types/components/FAB/ActionGroup/ActionItem.d.ts +0 -0
- package/types/components/FAB/ActionGroup/FABModal.d.ts +21 -0
- package/types/components/FAB/ActionGroup/FABModalContentWrapper.d.ts +18 -0
- package/types/components/FAB/ActionGroup/FABProvider.d.ts +5 -0
- package/types/components/FAB/ActionGroup/ModalPresenter/ModalPresenter.d.ts +34 -0
- package/types/components/FAB/ActionGroup/ModalPresenter/index.d.ts +3 -0
- package/types/components/FAB/ActionGroup/StyledActionGroup.d.ts +7 -1
- package/types/components/FAB/ActionGroup/StyledActionItem.d.ts +0 -0
- package/types/components/FAB/ActionGroup/index.d.ts +0 -0
- package/types/components/FAB/AnimatedFABIcon.d.ts +0 -0
- package/types/components/FAB/FAB.d.ts +0 -0
- package/types/components/FAB/StyledFAB.d.ts +0 -0
- package/types/components/FAB/index.d.ts +0 -0
- package/types/components/Icon/AnimatedIcon.d.ts +0 -0
- package/types/components/Icon/HeroIcon/index.d.ts +0 -0
- package/types/components/Icon/IconList.d.ts +0 -0
- package/types/components/Icon/index.d.ts +0 -0
- package/types/components/Icon/utils.d.ts +0 -0
- package/types/components/Image/index.d.ts +0 -0
- package/types/components/List/BasicListItem.d.ts +0 -0
- package/types/components/List/ListItem.d.ts +0 -0
- package/types/components/List/StyledBasicListItem.d.ts +0 -0
- package/types/components/List/StyledListItem.d.ts +0 -0
- package/types/components/List/index.d.ts +0 -0
- package/types/components/PageControl/StyledPageControl.d.ts +0 -0
- package/types/components/PageControl/index.d.ts +0 -0
- package/types/components/PinInput/PinCell.d.ts +0 -0
- package/types/components/PinInput/StyledPinInput.d.ts +0 -0
- package/types/components/PinInput/index.d.ts +0 -0
- package/types/components/Progress/ProgressBar.d.ts +0 -0
- package/types/components/Progress/ProgressCircle.d.ts +0 -0
- package/types/components/Progress/StyledProgressBar.d.ts +0 -0
- package/types/components/Progress/StyledProgressCircle.d.ts +0 -0
- package/types/components/Progress/__tests__/index.spec.d.ts +0 -0
- package/types/components/Progress/constants.d.ts +0 -0
- package/types/components/Progress/index.d.ts +0 -0
- package/types/components/Progress/types.d.ts +0 -0
- package/types/components/Radio/Radio.d.ts +0 -0
- package/types/components/Radio/RadioGroup.d.ts +0 -0
- package/types/components/Radio/StyledRadio.d.ts +0 -0
- package/types/components/Radio/index.d.ts +0 -0
- package/types/components/Radio/types.d.ts +0 -0
- package/types/components/RefreshControl/index.d.ts +0 -0
- package/types/components/RichTextEditor/EditorEvent.d.ts +0 -0
- package/types/components/RichTextEditor/EditorToolbar.d.ts +0 -0
- package/types/components/RichTextEditor/MentionList.d.ts +0 -0
- package/types/components/RichTextEditor/RichTextEditor.d.ts +0 -0
- package/types/components/RichTextEditor/StyledRichTextEditor.d.ts +0 -0
- package/types/components/RichTextEditor/StyledToolbar.d.ts +0 -0
- package/types/components/RichTextEditor/__mocks__/heroEditorApp.d.ts +0 -0
- package/types/components/RichTextEditor/constants.d.ts +0 -0
- package/types/components/RichTextEditor/heroEditorApp.d.ts +0 -0
- package/types/components/RichTextEditor/index.d.ts +0 -0
- package/types/components/RichTextEditor/types.d.ts +0 -0
- package/types/components/RichTextEditor/utils/events.d.ts +0 -0
- package/types/components/RichTextEditor/utils/rnWebView.d.ts +0 -0
- package/types/components/SectionHeading/StyledHeading.d.ts +0 -0
- package/types/components/SectionHeading/index.d.ts +0 -0
- package/types/components/Select/BaseOptionList.d.ts +0 -0
- package/types/components/Select/Footer.d.ts +0 -0
- package/types/components/Select/MultiSelect/Option.d.ts +0 -0
- package/types/components/Select/MultiSelect/OptionList.d.ts +0 -0
- package/types/components/Select/MultiSelect/index.d.ts +0 -0
- package/types/components/Select/SingleSelect/Option.d.ts +0 -0
- package/types/components/Select/SingleSelect/OptionList.d.ts +0 -0
- package/types/components/Select/SingleSelect/StyledSingleSelect.d.ts +0 -0
- package/types/components/Select/SingleSelect/index.d.ts +0 -0
- package/types/components/Select/StyledSelect.d.ts +0 -0
- package/types/components/Select/helpers.d.ts +0 -0
- package/types/components/Select/index.d.ts +0 -0
- package/types/components/Select/types.d.ts +0 -0
- package/types/components/Skeleton/StyledSkeleton.d.ts +0 -0
- package/types/components/Skeleton/index.d.ts +0 -0
- package/types/components/Slider/index.d.ts +0 -0
- package/types/components/Spinner/AnimatedSpinner.d.ts +0 -0
- package/types/components/Spinner/StyledSpinner.d.ts +0 -0
- package/types/components/Spinner/index.d.ts +0 -0
- package/types/components/Success/StyledSuccess.d.ts +0 -0
- package/types/components/Success/index.d.ts +0 -0
- package/types/components/Swipeable/StyledSwipeable.d.ts +0 -0
- package/types/components/Swipeable/SwipeableAction.d.ts +0 -0
- package/types/components/Swipeable/index.d.ts +0 -0
- package/types/components/Switch/SelectorSwitch/Option.d.ts +0 -0
- package/types/components/Switch/SelectorSwitch/StyledSelectorSwitch.d.ts +0 -0
- package/types/components/Switch/SelectorSwitch/index.d.ts +0 -0
- package/types/components/Switch/StyledSwitch.d.ts +0 -0
- package/types/components/Switch/index.d.ts +0 -0
- package/types/components/Tabs/ActiveTabIndicator.d.ts +0 -0
- package/types/components/Tabs/SceneView.d.ts +0 -0
- package/types/components/Tabs/ScrollableTabs.d.ts +0 -0
- package/types/components/Tabs/ScrollableTabsHeader.d.ts +0 -0
- package/types/components/Tabs/ScrollableTabsV2/SceneView.d.ts +10 -0
- package/types/components/Tabs/ScrollableTabsV2/ScrollableTabsV2.d.ts +9 -0
- package/types/components/Tabs/ScrollableTabsV2/index.d.ts +4 -0
- package/types/components/Tabs/StyledScrollableTabs.d.ts +0 -0
- package/types/components/Tabs/StyledTabs.d.ts +0 -0
- package/types/components/Tabs/TabWithBadge.d.ts +0 -0
- package/types/components/Tabs/index.d.ts +0 -0
- package/types/components/Tabs/useIsFocused.d.ts +0 -0
- package/types/components/Tabs/utils.d.ts +0 -0
- package/types/components/Tag/StyledTag.d.ts +0 -0
- package/types/components/Tag/index.d.ts +0 -0
- package/types/components/TextInput/StyledTextInput.d.ts +0 -0
- package/types/components/TextInput/index.d.ts +0 -0
- package/types/components/TimePicker/StyledTimePicker.d.ts +0 -0
- package/types/components/TimePicker/TimePickerAndroid.d.ts +0 -0
- package/types/components/TimePicker/TimePickerIOS.d.ts +0 -0
- package/types/components/TimePicker/index.d.ts +0 -0
- package/types/components/TimePicker/types.d.ts +0 -0
- package/types/components/Toast/StyledToast.d.ts +0 -0
- package/types/components/Toast/Toast.d.ts +0 -0
- package/types/components/Toast/ToastContainer.d.ts +0 -0
- package/types/components/Toast/ToastContext.d.ts +0 -0
- package/types/components/Toast/ToastProvider.d.ts +0 -0
- package/types/components/Toast/index.d.ts +0 -0
- package/types/components/Toast/types.d.ts +0 -0
- package/types/components/Toolbar/StyledToolbar.d.ts +0 -0
- package/types/components/Toolbar/ToolbarGroup.d.ts +0 -0
- package/types/components/Toolbar/ToolbarItem.d.ts +0 -0
- package/types/components/Toolbar/index.d.ts +0 -0
- package/types/components/Typography/Text/StyledText.d.ts +0 -0
- package/types/components/Typography/Text/index.d.ts +0 -0
- package/types/components/Typography/index.d.ts +0 -0
- package/types/index.d.ts +0 -0
- package/types/testHelpers/renderWithTheme.d.ts +0 -0
- package/types/theme/ThemeProvider.d.ts +0 -0
- package/types/theme/ThemeSwitcher.d.ts +0 -0
- package/types/theme/components/accordion.d.ts +0 -0
- package/types/theme/components/alert.d.ts +0 -0
- package/types/theme/components/attachment.d.ts +0 -0
- package/types/theme/components/avatar.d.ts +0 -0
- package/types/theme/components/badge.d.ts +0 -0
- package/types/theme/components/bottomNavigation.d.ts +0 -0
- package/types/theme/components/bottomSheet.d.ts +0 -0
- package/types/theme/components/button.d.ts +0 -0
- package/types/theme/components/calendar.d.ts +0 -0
- package/types/theme/components/card.d.ts +0 -0
- package/types/theme/components/cardCarousel.d.ts +0 -0
- package/types/theme/components/carousel.d.ts +0 -0
- package/types/theme/components/checkbox.d.ts +0 -0
- package/types/theme/components/contentNavigator.d.ts +0 -0
- package/types/theme/components/datePicker.d.ts +0 -0
- package/types/theme/components/divider.d.ts +0 -0
- package/types/theme/components/drawer.d.ts +0 -0
- package/types/theme/components/empty.d.ts +0 -0
- package/types/theme/components/error.d.ts +0 -0
- package/types/theme/components/fab.d.ts +0 -0
- package/types/theme/components/icon.d.ts +0 -0
- package/types/theme/components/image.d.ts +0 -0
- package/types/theme/components/list.d.ts +0 -0
- package/types/theme/components/pageControl.d.ts +0 -0
- package/types/theme/components/pinInput.d.ts +0 -0
- package/types/theme/components/progress.d.ts +0 -0
- package/types/theme/components/radio.d.ts +0 -0
- package/types/theme/components/refreshControl.d.ts +0 -0
- package/types/theme/components/richTextEditor.d.ts +0 -0
- package/types/theme/components/sectionHeading.d.ts +0 -0
- package/types/theme/components/select.d.ts +0 -0
- package/types/theme/components/skeleton.d.ts +0 -0
- package/types/theme/components/slider.d.ts +0 -0
- package/types/theme/components/spinner.d.ts +0 -0
- package/types/theme/components/success.d.ts +0 -0
- package/types/theme/components/swipeable.d.ts +0 -0
- package/types/theme/components/switch.d.ts +0 -0
- package/types/theme/components/tabs.d.ts +0 -0
- package/types/theme/components/tag.d.ts +0 -0
- package/types/theme/components/textInput.d.ts +0 -0
- package/types/theme/components/timePicker.d.ts +0 -0
- package/types/theme/components/toast.d.ts +0 -0
- package/types/theme/components/toolbar.d.ts +0 -0
- package/types/theme/components/typography.d.ts +0 -0
- package/types/theme/getTheme.d.ts +0 -0
- package/types/theme/global/borders.d.ts +0 -0
- package/types/theme/global/colors/eBens.d.ts +0 -0
- package/types/theme/global/colors/global.d.ts +0 -0
- package/types/theme/global/colors/globalDark.d.ts +0 -0
- package/types/theme/global/colors/jobs.d.ts +0 -0
- package/types/theme/global/colors/swag.d.ts +0 -0
- package/types/theme/global/colors/swagDark.d.ts +0 -0
- package/types/theme/global/colors/types.d.ts +0 -0
- package/types/theme/global/colors/wallet.d.ts +0 -0
- package/types/theme/global/colors/work.d.ts +0 -0
- package/types/theme/global/index.d.ts +0 -0
- package/types/theme/global/scale.d.ts +0 -0
- package/types/theme/global/sizes.d.ts +0 -0
- package/types/theme/global/space.d.ts +0 -0
- package/types/theme/global/typography.d.ts +0 -0
- package/types/theme/index.d.ts +0 -0
- package/types/types.d.ts +0 -0
- package/types/utils/functions.d.ts +0 -0
- package/types/utils/helpers.d.ts +0 -0
- package/types/utils/hooks.d.ts +0 -0
- 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 } =
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
{
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
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(
|
|
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(
|
|
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,
|
|
117
|
+
outputRange: [0, 1],
|
|
118
118
|
});
|
|
119
119
|
|
|
120
|
-
const
|
|
120
|
+
const interpolatedFABOpacityAnimation =
|
|
121
121
|
tranlateXAnimation.current.interpolate({
|
|
122
122
|
inputRange: [0, 1],
|
|
123
|
-
outputRange: [
|
|
123
|
+
outputRange: [1, 0],
|
|
124
124
|
});
|
|
125
125
|
|
|
126
126
|
return (
|
|
127
127
|
<StyledContainer testID={testID} pointerEvents="box-none" style={style}>
|
|
128
|
-
<
|
|
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:
|
|
130
|
+
opacity: interpolatedFABOpacityAnimation,
|
|
138
131
|
}}
|
|
139
132
|
>
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
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
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
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
|
|
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,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;
|
|
@@ -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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|