Skip to content

Commit 3c4a99e

Browse files
authored
feat: make tree entry keys toggleable (#93)
1 parent 75c0ee9 commit 3c4a99e

File tree

1 file changed

+16
-4
lines changed

1 file changed

+16
-4
lines changed

src/components/tree-entry.tsx

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -101,15 +101,16 @@ export const TreeEntry: FC<TreeEntryProperties> = ({
101101
const [key, value] = data;
102102
const [open, setOpen] = useState(false);
103103
const Icon = open ? MinusSquareIcon : PlusSquareIcon;
104+
const isToggleable =
105+
(typeof value === "object" && Object.values(value ?? {}).length) ||
106+
(Array.isArray(value) && value.length);
104107

105108
const toggleOpen = () => setOpen(!open);
106109

107110
return (
108111
<>
109112
<div className="flex items-center gap-3">
110-
{(typeof value === "object" &&
111-
Object.values(value ?? {}).length) ||
112-
(Array.isArray(value) && value.length) ? (
113+
{isToggleable ? (
113114
<button
114115
onClick={toggleOpen}
115116
aria-label="Toggle"
@@ -120,7 +121,18 @@ export const TreeEntry: FC<TreeEntryProperties> = ({
120121
) : (
121122
<div className="w-4 h-4" />
122123
)}
123-
{key && <span>{key}</span>}
124+
{key &&
125+
(isToggleable ? (
126+
<button
127+
onClick={toggleOpen}
128+
type="button"
129+
className="hover:underline"
130+
>
131+
{key}
132+
</button>
133+
) : (
134+
<span>{key}</span>
135+
))}
124136
{renderValue(value).map((part, partIndex) => (
125137
<span
126138
key={partIndex}

0 commit comments

Comments
 (0)