Skip to content

Commit 54b2952

Browse files
fix: accordion expansion (#64)
* fix: accordion expansion Signed-off-by: Carlos Feria <[email protected]> * fix: use typesafe accordion identifiers Signed-off-by: Carlos Feria <[email protected]> --------- Signed-off-by: Carlos Feria <[email protected]>
1 parent 085c54f commit 54b2952

File tree

1 file changed

+11
-9
lines changed
  • client/src/app/pages/RekorSearch/components

1 file changed

+11
-9
lines changed

client/src/app/pages/RekorSearch/components/Entry.tsx

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -101,11 +101,13 @@ export function EntryCard({
101101

102102
export function Entry({ entry }: { entry: LogEntry }) {
103103
const [uuid, obj] = Object.entries(entry)[0];
104-
const [expanded, setExpanded] = useState([""]);
105104

106-
const toggle = (id: string) => {
105+
type PanelId = "body-content" | "attestation-content" | "verification-content";
106+
const [expanded, setExpanded] = useState<PanelId[]>([]);
107+
108+
const toggle = (id: PanelId) => {
107109
const index = expanded.indexOf(id);
108-
const newExpanded: string[] =
110+
const newExpanded: PanelId[] =
109111
index >= 0 ? [...expanded.slice(0, index), ...expanded.slice(index + 1, expanded.length)] : [...expanded, id];
110112
setExpanded(newExpanded);
111113
};
@@ -184,7 +186,7 @@ export function Entry({ entry }: { entry: LogEntry }) {
184186
<Fragment>
185187
<Accordion>
186188
<>
187-
<AccordionItem>
189+
<AccordionItem isExpanded={expanded.includes("body-content")}>
188190
<AccordionToggle
189191
id={"body-header"}
190192
aria-controls="body-content"
@@ -194,14 +196,14 @@ export function Entry({ entry }: { entry: LogEntry }) {
194196
>
195197
<b>Raw Body</b>
196198
</AccordionToggle>
197-
<AccordionContent hidden={!expanded.includes("body-content")}>
199+
<AccordionContent>
198200
<SyntaxHighlighter language="yaml" style={atomDark}>
199201
{dump(body, DUMP_OPTIONS)}
200202
</SyntaxHighlighter>
201203
</AccordionContent>
202204
</AccordionItem>
203205
{attestation && (
204-
<AccordionItem>
206+
<AccordionItem isExpanded={expanded.includes("attestation-content")}>
205207
<AccordionToggle
206208
aria-controls="attestation-content"
207209
id="attestation-header"
@@ -211,15 +213,15 @@ export function Entry({ entry }: { entry: LogEntry }) {
211213
>
212214
<b>Attestation</b>
213215
</AccordionToggle>
214-
<AccordionContent hidden={!expanded.includes("attestation-content")}>
216+
<AccordionContent>
215217
<SyntaxHighlighter language="yaml" style={atomDark}>
216218
{dump(attestation)}
217219
</SyntaxHighlighter>
218220
</AccordionContent>
219221
</AccordionItem>
220222
)}
221223
{obj.verification && (
222-
<AccordionItem>
224+
<AccordionItem isExpanded={expanded.includes("verification-content")}>
223225
<AccordionToggle
224226
aria-controls="verification-content"
225227
id={"verification-header"}
@@ -229,7 +231,7 @@ export function Entry({ entry }: { entry: LogEntry }) {
229231
>
230232
<h3>Verification</h3>
231233
</AccordionToggle>
232-
<AccordionContent hidden={!expanded.includes("verification-content")}>
234+
<AccordionContent>
233235
<SyntaxHighlighter language="yaml" style={atomDark}>
234236
{dump(obj.verification)}
235237
</SyntaxHighlighter>

0 commit comments

Comments
 (0)