Skip to content

Commit bf05573

Browse files
authored
feat: scroll to selected story (#684)
* feat: scroll to selected story * fix: avoid state for this * v8.5.5-alpha.3 * feat: also scroll when selecting in search * v8.5.5-y.0 * v8.5.5-alpha.4
1 parent 08215ac commit bf05573

File tree

16 files changed

+171
-88
lines changed

16 files changed

+171
-88
lines changed

examples/expo-example/package.json

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "expo-example",
3-
"version": "8.5.5-alpha.2",
3+
"version": "8.5.5-alpha.4",
44
"private": true,
55
"main": "index.js",
66
"scripts": {
@@ -28,19 +28,19 @@
2828
"@storybook/addon-essentials": "^8.5.1",
2929
"@storybook/addon-interactions": "^8.5.1",
3030
"@storybook/addon-links": "^8.5.1",
31-
"@storybook/addon-ondevice-actions": "^8.5.5-alpha.2",
32-
"@storybook/addon-ondevice-backgrounds": "^8.5.5-alpha.2",
33-
"@storybook/addon-ondevice-controls": "^8.5.5-alpha.2",
34-
"@storybook/addon-ondevice-notes": "^8.5.5-alpha.2",
31+
"@storybook/addon-ondevice-actions": "^8.5.5-alpha.4",
32+
"@storybook/addon-ondevice-backgrounds": "^8.5.5-alpha.4",
33+
"@storybook/addon-ondevice-controls": "^8.5.5-alpha.4",
34+
"@storybook/addon-ondevice-notes": "^8.5.5-alpha.4",
3535
"@storybook/addon-react-native-server": "0.0.6",
3636
"@storybook/addon-react-native-web": "^0.0.26",
3737
"@storybook/addon-webpack5-compiler-babel": "^3.0.3",
3838
"@storybook/blocks": "^8.5.1",
3939
"@storybook/builder-webpack5": "^8.5.1",
4040
"@storybook/global": "^5.0.0",
4141
"@storybook/react": "^8.5.1",
42-
"@storybook/react-native": "^8.5.5-alpha.2",
43-
"@storybook/react-native-theming": "^8.5.5-alpha.2",
42+
"@storybook/react-native": "^8.5.5-alpha.4",
43+
"@storybook/react-native-theming": "^8.5.5-alpha.4",
4444
"@storybook/react-webpack5": "^8.5.1",
4545
"@storybook/test": "^8.5.1",
4646
"expo": "~52.0.11",

lerna.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
22
"npmClient": "yarn",
33
"registry": "https://registry.npmjs.org",
4-
"version": "8.5.5-alpha.2"
4+
"version": "8.5.5-alpha.4"
55
}

packages/ondevice-actions/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@storybook/addon-ondevice-actions",
3-
"version": "8.5.5-alpha.2",
3+
"version": "8.5.5-alpha.4",
44
"description": "Action Logger addon for react-native storybook",
55
"keywords": [
66
"storybook"

packages/ondevice-backgrounds/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@storybook/addon-ondevice-backgrounds",
3-
"version": "8.5.5-alpha.2",
3+
"version": "8.5.5-alpha.4",
44
"description": "A react-native storybook addon to show different backgrounds for your preview",
55
"keywords": [
66
"addon",
@@ -33,7 +33,7 @@
3333
},
3434
"dependencies": {
3535
"@storybook/core": "^8.5.1",
36-
"@storybook/react-native-theming": "^8.5.5-alpha.2"
36+
"@storybook/react-native-theming": "^8.5.5-alpha.4"
3737
},
3838
"devDependencies": {
3939
"typescript": "^5.3.3"

packages/ondevice-controls/package.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@storybook/addon-ondevice-controls",
3-
"version": "8.5.5-alpha.2",
3+
"version": "8.5.5-alpha.4",
44
"description": "Display storybook controls on your device.",
55
"keywords": [
66
"addon",
@@ -32,8 +32,8 @@
3232
"dependencies": {
3333
"@storybook/addon-controls": "^8.5.1",
3434
"@storybook/core": "^8.5.1",
35-
"@storybook/react-native-theming": "^8.5.5-alpha.2",
36-
"@storybook/react-native-ui": "^8.5.5-alpha.2",
35+
"@storybook/react-native-theming": "^8.5.5-alpha.4",
36+
"@storybook/react-native-ui": "^8.5.5-alpha.4",
3737
"deep-equal": "^1.0.1",
3838
"prop-types": "^15.7.2",
3939
"react-native-modal-datetime-picker": "^18.0.0",

packages/ondevice-notes/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@storybook/addon-ondevice-notes",
3-
"version": "8.5.5-alpha.2",
3+
"version": "8.5.5-alpha.4",
44
"description": "Write notes for your react-native Storybook stories.",
55
"keywords": [
66
"addon",
@@ -30,7 +30,7 @@
3030
},
3131
"dependencies": {
3232
"@storybook/core": "^8.5.1",
33-
"@storybook/react-native-theming": "^8.5.5-alpha.2",
33+
"@storybook/react-native-theming": "^8.5.5-alpha.4",
3434
"react-native-markdown-display": "^7.0.2"
3535
},
3636
"devDependencies": {

packages/react-native-theming/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@storybook/react-native-theming",
3-
"version": "8.5.5-alpha.2",
3+
"version": "8.5.5-alpha.4",
44
"description": "A wrapper library around emotion 11 to provide theming support for react-native storybook",
55
"keywords": [
66
"react",

packages/react-native-ui/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@storybook/react-native-ui",
3-
"version": "8.5.5-alpha.2",
3+
"version": "8.5.5-alpha.4",
44
"description": "ui components for react native storybook",
55
"keywords": [
66
"react",
@@ -60,7 +60,7 @@
6060
"dependencies": {
6161
"@storybook/core": "^8.5.1",
6262
"@storybook/react": "^8.5.1",
63-
"@storybook/react-native-theming": "^8.5.5-alpha.2",
63+
"@storybook/react-native-theming": "^8.5.5-alpha.4",
6464
"fuse.js": "^7.0.0",
6565
"memoizerific": "^1.11.3",
6666
"polished": "^4.3.1",

packages/react-native-ui/src/Layout.tsx

Lines changed: 20 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ import { CloseFullscreenIcon } from './icon/CloseFullscreenIcon';
1919
import { FullscreenIcon } from './icon/FullscreenIcon';
2020
import { MenuIcon } from './icon/MenuIcon';
2121
import { useStyle } from './util/useStyle';
22+
import { SelectedNodeProvider } from './SelectedNodeProvider';
2223

2324
const desktopLogoContainer = {
2425
flexDirection: 'row',
@@ -249,23 +250,25 @@ export const Layout = ({
249250
) : null}
250251

251252
{isDesktop ? null : (
252-
<MobileMenuDrawer ref={mobileMenuDrawerRef}>
253-
<View style={mobileMenuDrawerContentStyle}>
254-
<StorybookLogo theme={theme} />
255-
</View>
256-
257-
<Sidebar
258-
extra={placeholderArray}
259-
previewInitialized
260-
indexError={undefined}
261-
refs={placeholderObject}
262-
setSelection={setSelection}
263-
status={placeholderObject}
264-
index={storyHash}
265-
storyId={story?.id}
266-
refId={DEFAULT_REF_ID}
267-
/>
268-
</MobileMenuDrawer>
253+
<SelectedNodeProvider>
254+
<MobileMenuDrawer ref={mobileMenuDrawerRef}>
255+
<View style={mobileMenuDrawerContentStyle}>
256+
<StorybookLogo theme={theme} />
257+
</View>
258+
259+
<Sidebar
260+
extra={placeholderArray}
261+
previewInitialized
262+
indexError={undefined}
263+
refs={placeholderObject}
264+
setSelection={setSelection}
265+
status={placeholderObject}
266+
index={storyHash}
267+
storyId={story?.id}
268+
refId={DEFAULT_REF_ID}
269+
/>
270+
</MobileMenuDrawer>
271+
</SelectedNodeProvider>
269272
)}
270273

271274
{isDesktop ? null : <MobileAddonsPanel ref={addonPanelRef} storyId={story?.id} />}

packages/react-native-ui/src/MobileMenuDrawer.tsx

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,12 @@ import BottomSheet, {
33
BottomSheetBackdropProps,
44
BottomSheetScrollView,
55
} from '@gorhom/bottom-sheet';
6-
import { ReactNode, forwardRef, memo, useImperativeHandle, useMemo, useRef } from 'react';
6+
import { useTheme } from '@storybook/react-native-theming';
7+
import { forwardRef, memo, ReactNode, useImperativeHandle, useMemo, useRef } from 'react';
78
import { Keyboard } from 'react-native';
89
import { useReducedMotion } from 'react-native-reanimated';
910
import { useSafeAreaInsets } from 'react-native-safe-area-context';
10-
import { useTheme } from '@storybook/react-native-theming';
11+
import { useSelectedNode } from './SelectedNodeProvider';
1112

1213
interface MobileMenuDrawerProps {
1314
children: ReactNode | ReactNode[];
@@ -34,18 +35,18 @@ export const MobileMenuDrawer = memo(
3435
const reducedMotion = useReducedMotion();
3536
const insets = useSafeAreaInsets();
3637
const theme = useTheme();
37-
3838
const menuBottomSheetRef = useRef<BottomSheet>(null);
39+
const { scrollToSelectedNode, scrollRef } = useSelectedNode();
3940

4041
useImperativeHandle(ref, () => ({
4142
setMobileMenuOpen: (open: boolean) => {
4243
if (open) {
43-
// menuBottomSheetRef.current?.present();
4444
menuBottomSheetRef.current?.snapToIndex(1);
45+
46+
scrollToSelectedNode();
4547
} else {
4648
Keyboard.dismiss();
4749

48-
// menuBottomSheetRef.current?.dismiss();
4950
menuBottomSheetRef.current?.close();
5051
}
5152
},
@@ -82,6 +83,7 @@ export const MobileMenuDrawer = memo(
8283
handleIndicatorStyle={handleIndicatorStyle}
8384
>
8485
<BottomSheetScrollView
86+
ref={scrollRef}
8587
keyboardShouldPersistTaps="handled"
8688
contentContainerStyle={contentContainerStyle}
8789
>

0 commit comments

Comments
 (0)