Skip to content

Commit 918d1eb

Browse files
WesSouzaarturbien
authored andcommitted
refactor(treeview): categorize under Controls, rename Tree to TreeView
1 parent c42c3b4 commit 918d1eb

File tree

5 files changed

+42
-26
lines changed

5 files changed

+42
-26
lines changed

src/Tree/Tree.spec.tsx renamed to src/TreeView/TreeView.spec.tsx

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import React from 'react';
22

33
import { renderWithTheme } from '../../test/utils';
4-
import { Tree } from './Tree';
4+
import { TreeView } from './TreeView';
55

66
const categories = [
77
{
@@ -59,13 +59,13 @@ const categories = [
5959
}
6060
];
6161

62-
describe('<Tree />', () => {
62+
describe('<TreeView />', () => {
6363
describe('prop: onNodeSelect', () => {
6464
it('should call onNodeSelect when uncontrolled', () => {
6565
const onNodeSelect = jest.fn((_, id) => id);
6666

6767
const { getByText } = renderWithTheme(
68-
<Tree tree={categories} onNodeSelect={onNodeSelect} />
68+
<TreeView tree={categories} onNodeSelect={onNodeSelect} />
6969
);
7070

7171
getByText('Beverages').click();
@@ -78,7 +78,11 @@ describe('<Tree />', () => {
7878
const onNodeSelect = jest.fn((_, id) => id);
7979

8080
const { getByText } = renderWithTheme(
81-
<Tree tree={categories} selected='dairy' onNodeSelect={onNodeSelect} />
81+
<TreeView
82+
tree={categories}
83+
selected='dairy'
84+
onNodeSelect={onNodeSelect}
85+
/>
8286
);
8387

8488
getByText('Beverages').click();
@@ -93,7 +97,7 @@ describe('<Tree />', () => {
9397
const onNodeToggle = jest.fn((_, ids) => ids);
9498

9599
const { getByText } = renderWithTheme(
96-
<Tree tree={categories} onNodeToggle={onNodeToggle} />
100+
<TreeView tree={categories} onNodeToggle={onNodeToggle} />
97101
);
98102

99103
getByText('Beverages').click();
@@ -106,7 +110,7 @@ describe('<Tree />', () => {
106110
const onNodeToggle = jest.fn((_, ids) => ids);
107111

108112
const { getByText } = renderWithTheme(
109-
<Tree
113+
<TreeView
110114
tree={categories}
111115
expanded={['dairy']}
112116
onNodeToggle={onNodeToggle}
@@ -129,7 +133,7 @@ describe('<Tree />', () => {
129133
const onNodeToggle = jest.fn((_, ids) => ids);
130134

131135
const { getByText } = renderWithTheme(
132-
<Tree
136+
<TreeView
133137
disabled
134138
tree={categories}
135139
onNodeSelect={onNodeSelect}
@@ -151,7 +155,7 @@ describe('<Tree />', () => {
151155
);
152156

153157
const { getByText } = renderWithTheme(
154-
<Tree
158+
<TreeView
155159
tree={modifiedTree}
156160
onNodeSelect={onNodeSelect}
157161
onNodeToggle={onNodeToggle}

src/Tree/Tree.stories.tsx renamed to src/TreeView/TreeView.stories.tsx

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { ComponentMeta } from '@storybook/react';
22
import React, { useCallback, useState } from 'react';
3-
import { GroupBox, Tree, TreeLeaf } from 'react95';
3+
import { GroupBox, TreeLeaf, TreeView } from 'react95';
44
import styled from 'styled-components';
55
import { Button } from '../Button/Button';
66

@@ -23,10 +23,10 @@ const Panel = styled.div`
2323
`;
2424

2525
export default {
26-
title: 'Tree',
27-
component: Tree,
26+
title: 'Controls/TreeView',
27+
component: TreeView,
2828
decorators: [story => <Wrapper>{story()}</Wrapper>]
29-
} as ComponentMeta<typeof Tree>;
29+
} as ComponentMeta<typeof TreeView>;
3030

3131
const categories = [
3232
{
@@ -98,7 +98,7 @@ export function Basic() {
9898
return (
9999
<div style={{ maxWidth: '250px' }}>
100100
<GroupBox label='Catalog'>
101-
<Tree tree={categories} />
101+
<TreeView tree={categories} />
102102
</GroupBox>
103103
</div>
104104
);
@@ -125,7 +125,7 @@ export function Controlled() {
125125
</Panel>
126126

127127
<GroupBox label='Catalog'>
128-
<Tree
128+
<TreeView
129129
tree={categories}
130130
onNodeSelect={(_, id) => setSelected(id)}
131131
onNodeToggle={(_, ids) => setExpanded(ids)}
@@ -145,7 +145,7 @@ export function Disabled() {
145145
return (
146146
<div style={{ maxWidth: '250px' }}>
147147
<GroupBox label='Catalog'>
148-
<Tree tree={categories} disabled />
148+
<TreeView tree={categories} disabled />
149149
</GroupBox>
150150
</div>
151151
);
@@ -168,7 +168,7 @@ export function DisabledTreeItems() {
168168
return (
169169
<div style={{ maxWidth: '250px' }}>
170170
<GroupBox label='Catalog'>
171-
<Tree tree={modifiedTree} />
171+
<TreeView tree={modifiedTree} />
172172
</GroupBox>
173173
</div>
174174
);

src/Tree/Tree.tsx renamed to src/TreeView/TreeView.tsx

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
import React, { forwardRef, useCallback } from 'react';
22
import styled, { css } from 'styled-components';
33

4-
import { StyledLabel, LabelText } from '../SwitchBase/SwitchBase';
54
import useControlledOrUncontrolled from '../common/hooks/useControlledOrUncontrolled';
5+
import { LabelText, StyledLabel } from '../common/SwitchBase';
66
import { CommonStyledProps } from '../types';
77

88
type TreeLeaf<T> = {
@@ -13,7 +13,7 @@ type TreeLeaf<T> = {
1313
label?: string;
1414
};
1515

16-
type TreeProps<T> = {
16+
type TreeViewProps<T> = {
1717
className?: string;
1818
defaultExpanded?: T[];
1919
defaultSelected?: T;
@@ -66,7 +66,7 @@ const focusedElementStyles = css<{ $disabled: boolean }>`
6666
: `cursor: default;`}
6767
`;
6868

69-
const TreeView = styled.ul<{ isRootLevel: boolean }>`
69+
const TreeWrapper = styled.ul<{ isRootLevel: boolean }>`
7070
position: relative;
7171
isolation: isolate;
7272
@@ -293,15 +293,15 @@ function TreeBranch<T>({
293293
);
294294

295295
return (
296-
<TreeView
296+
<TreeWrapper
297297
className={isRootLevel ? className : undefined}
298298
style={isRootLevel ? style : undefined}
299299
ref={isRootLevel ? innerRef : undefined}
300300
role={isRootLevel ? 'tree' : 'group'}
301301
isRootLevel={isRootLevel}
302302
>
303303
{tree.map(renderLeaf)}
304-
</TreeView>
304+
</TreeWrapper>
305305
);
306306
}
307307

@@ -317,7 +317,7 @@ function TreeInner<T>(
317317
selected,
318318
style,
319319
tree = []
320-
}: TreeProps<T>,
320+
}: TreeViewProps<T>,
321321
ref: React.ForwardedRef<HTMLUListElement>
322322
) {
323323
const [expandedInternal, setExpandedInternal] = useControlledOrUncontrolled({
@@ -381,9 +381,13 @@ function TreeInner<T>(
381381
);
382382
}
383383

384-
const Tree = forwardRef(TreeInner) as <T>(
384+
const TreeView = forwardRef(TreeInner) as <T>(
385385
// eslint-disable-next-line no-use-before-define
386-
props: TreeProps<T> & { ref?: React.ForwardedRef<HTMLUListElement> }
386+
props: TreeViewProps<T> & { ref?: React.ForwardedRef<HTMLUListElement> }
387387
) => ReturnType<typeof TreeInner>;
388388

389-
export { Tree, TreeLeaf, TreeProps };
389+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
390+
// @ts-ignore
391+
TreeView.displayProps = 'TreeView';
392+
393+
export { TreeView, TreeViewProps, TreeLeaf };

src/index.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ export * from './Tabs/Tabs';
2929
export * from './TextInput/TextInput';
3030
export * from './Toolbar/Toolbar';
3131
export * from './Tooltip/Tooltip';
32-
export * from './Tree/Tree';
32+
export * from './TreeView/TreeView';
3333
export * from './Window/Window';
3434
export * from './WindowContent/WindowContent';
3535
export * from './WindowHeader/WindowHeader';
@@ -46,3 +46,4 @@ export * from './legacy/NumberField';
4646
export * from './legacy/Panel';
4747
export * from './legacy/Progress';
4848
export * from './legacy/TextField';
49+
export * from './legacy/Tree';

src/legacy/Tree.tsx

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
import { TreeView, TreeViewProps } from '../TreeView/TreeView';
2+
3+
/** @deprecated Use `TreeViewProps` */
4+
export type TreeProps<T> = TreeViewProps<T>;
5+
6+
/** @deprecated Use `TreeView` */
7+
export const Tree = TreeView;

0 commit comments

Comments
 (0)