Skip to content

Commit 9ba99fc

Browse files
author
Elliot Park
authored
fix(Tree): Detail padding is properly controllable (#2401)
Also: fixed className not being passed down to nested TreeStyle bug
1 parent 098927d commit 9ba99fc

File tree

7 files changed

+23
-8
lines changed

7 files changed

+23
-8
lines changed

packages/components/src/List/ListItem.tsx

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -225,7 +225,9 @@ const ListItemInternal = forwardRef(
225225
</Wrapper>
226226
)
227227

228-
const { accessory, content, hoverDisclosure } = getDetailOptions(detail)
228+
const { accessory, content, hoverDisclosure, padding } = getDetailOptions(
229+
detail
230+
)
229231

230232
const wrapperRef = useRef<HTMLLIElement | HTMLDivElement>(null)
231233
const actualRef = useForkedRef(wrapperRef, ref)
@@ -243,7 +245,10 @@ const ListItemInternal = forwardRef(
243245

244246
const renderedDetail = detail && (
245247
<HoverDisclosure visible={!hoverDisclosure}>
246-
<ListItemDetail pr={accessory ? itemDimensions.px : '0'}>
248+
<ListItemDetail
249+
pl={padding ? 'xsmall' : '0'}
250+
pr={accessory && padding ? itemDimensions.px : '0'}
251+
>
247252
{content}
248253
</ListItemDetail>
249254
</HoverDisclosure>

packages/components/src/List/types.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -168,6 +168,12 @@ interface DetailOptions {
168168
* @default false
169169
*/
170170
hoverDisclosure?: boolean
171+
/**
172+
* Padding is added to the left and and right of the detail container by default. You can
173+
* optionally disable that behavior if you want to have fine-grained control.
174+
* @default true
175+
*/
176+
padding?: boolean
171177
}
172178

173179
export type Detail = ReactNode | { content: ReactNode; options: DetailOptions }

packages/components/src/List/utils/getDetailOptions.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,15 +28,17 @@ import { Detail } from '../types'
2828

2929
// Simplifies the type check when dealing with ListItem and related components
3030
export const getDetailOptions = (detail: Detail) => {
31-
let accessory, hoverDisclosure, content
31+
let accessory, padding, hoverDisclosure, content
3232

3333
if (typeof detail === 'object' && detail && 'options' in detail) {
3434
accessory = detail.options.accessory
3535
content = detail.content
36+
padding =
37+
detail.options.padding === undefined || detail.options.padding === true
3638
hoverDisclosure = detail.options.hoverDisclosure
3739
} else {
3840
content = detail
3941
}
4042

41-
return { accessory, content, hoverDisclosure }
43+
return { accessory, content, hoverDisclosure, padding }
4244
}

packages/components/src/Tree/Tree.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -193,6 +193,7 @@ const TreeLayout: FC<TreeProps> = ({
193193
<TreeStyle
194194
border={hasBorder}
195195
branchFontWeight={branchFontWeight}
196+
className={className}
196197
color={color}
197198
current={current}
198199
depth={depth}

packages/components/src/Tree/stories/FieldItem.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,7 @@ export const FieldItem: FC<FieldItemProps> = ({
104104
options: {
105105
accessory: true,
106106
hoverDisclosure: !isFieldMenuOpen,
107+
padding: false,
107108
},
108109
}}
109110
onKeyDown={(event) => {

packages/components/src/Tree/stories/FieldPicker.story.tsx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ const fields = (
5454
</TreeBranch>
5555
<BorderRadiusOverrideTree
5656
branchFontWeight
57-
label={<Box px="xxsmall">Created</Box>}
57+
label={<Box pl="xxsmall">Created</Box>}
5858
>
5959
<FieldItem>Created Date</FieldItem>
6060
<FieldItem>Created Month</FieldItem>
@@ -91,21 +91,21 @@ export const FieldPicker = () => (
9191
density={-3}
9292
defaultOpen={true}
9393
detail={3}
94-
label={<Box px="xxsmall">Orders</Box>}
94+
label={<Box pl="xxsmall">Orders</Box>}
9595
labelBackgroundOnly
9696
>
9797
{fields}
9898
</BorderRadiusOverrideTree>
9999
<BorderRadiusOverrideTree
100100
density={-3}
101-
label={<Box px="xxsmall">Order Items</Box>}
101+
label={<Box pl="xxsmall">Order Items</Box>}
102102
labelBackgroundOnly
103103
>
104104
{fields}
105105
</BorderRadiusOverrideTree>
106106
<BorderRadiusOverrideTree
107107
density={-3}
108-
label={<Box px="xxsmall">Users</Box>}
108+
label={<Box pl="xxsmall">Users</Box>}
109109
labelBackgroundOnly
110110
>
111111
{fields}
318 Bytes
Loading

0 commit comments

Comments
 (0)