Skip to content

Commit f613976

Browse files
committed
chore: add refocusing to story (#328)
1 parent 38d6c95 commit f613976

File tree

1 file changed

+19
-7
lines changed

1 file changed

+19
-7
lines changed

packages/core/src/stories/CustomDataProvider.stories.tsx

Lines changed: 19 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { Meta } from '@storybook/react';
2-
import { useEffect, useMemo } from 'react';
2+
import { useEffect, useMemo, useRef } from 'react';
33
import * as React from 'react';
44
import { shortTree } from 'demodata';
55
import { Tree } from '../tree/Tree';
@@ -8,6 +8,7 @@ import { UncontrolledTreeEnvironment } from '../uncontrolledEnvironment/Uncontro
88
import {
99
Disposable,
1010
TreeDataProvider,
11+
TreeEnvironmentRef,
1112
TreeItem,
1213
TreeItemIndex,
1314
} from '../types';
@@ -17,6 +18,7 @@ export default {
1718
} as Meta;
1819

1920
export const InjectingDataFromOutside = () => {
21+
const treeEnv = useRef<TreeEnvironmentRef>(null);
2022
const items = useMemo(() => ({ ...shortTree.items }), []);
2123
const dataProvider = useMemo(
2224
() =>
@@ -36,15 +38,24 @@ export const InjectingDataFromOutside = () => {
3638

3739
const removeItem = () => {
3840
if (items.root.children.length === 0) return;
39-
items.root.children.pop();
41+
const item = items.root.children.pop();
42+
delete items[item];
4043
dataProvider.onDidChangeTreeDataEmitter.emit(['root']);
4144
};
4245

43-
useEffect(() => {
44-
dataProvider.onDidChangeTreeData(changedItemIds => {
45-
console.log(changedItemIds);
46-
});
47-
}, [dataProvider]);
46+
useEffect(
47+
() =>
48+
dataProvider.onDidChangeTreeData(changedItemIds => {
49+
console.log('Changed Item IDs:', changedItemIds);
50+
51+
const focusedItem = treeEnv.current?.viewState['tree-1']?.focusedItem;
52+
if (focusedItem && !items[focusedItem]) {
53+
console.log('Focused item was deleted, refocusing new item...');
54+
treeEnv.current.focusItem(items.root.children[0], 'tree-1');
55+
}
56+
}).dispose,
57+
[dataProvider, items]
58+
);
4859

4960
return (
5061
<UncontrolledTreeEnvironment<string>
@@ -58,6 +69,7 @@ export const InjectingDataFromOutside = () => {
5869
expandedItems: [],
5970
},
6071
}}
72+
ref={treeEnv}
6173
>
6274
<button type="button" onClick={injectItem}>
6375
Inject item

0 commit comments

Comments
 (0)