Skip to content

Commit d37dd25

Browse files
committed
fix: reusable handlers
1 parent ba6dbab commit d37dd25

File tree

1 file changed

+22
-33
lines changed

1 file changed

+22
-33
lines changed

client/src/app/pages/Artifacts/components/ArtifactResults.tsx

Lines changed: 22 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,7 @@ import {
55
Button,
66
Card,
77
CardBody,
8-
CardFooter,
98
CardHeader,
10-
CardTitle,
119
ClipboardCopy,
1210
ClipboardCopyButton,
1311
CodeBlock,
@@ -28,7 +26,6 @@ import {
2826
DescriptionListGroup,
2927
DescriptionListTermHelpText,
3028
DescriptionListTermHelpTextButton,
31-
Divider,
3229
Dropdown,
3330
DropdownItem,
3431
DropdownList,
@@ -38,7 +35,6 @@ import {
3835
MenuToggle,
3936
Panel,
4037
Popover,
41-
Tooltip,
4238
TreeView,
4339
type MenuToggleElement,
4440
type TreeViewDataItem,
@@ -52,31 +48,30 @@ export interface IArtifactResultsProps {
5248

5349
export const ArtifactResults = ({ artifact }: IArtifactResultsProps) => {
5450
const [activeItems, setActiveItems] = useState<TreeViewDataItem[]>();
55-
const [isOpen1, setIsOpen1] = useState(false);
56-
const [isOpen2, setIsOpen2] = useState(false);
51+
const [sigDropdownOpen, setSigDropdownOpen] = useState<Record<string, boolean>>({});
5752
const [expanded, setExpanded] = useState(["ex-toggle1", "ex-toggle3"]);
5853

59-
const onSelect = (_event: MouseEvent, treeViewItem: TreeViewDataItem) => {
60-
// Ignore folders for selection
54+
const onSelectCertChain = (_event: MouseEvent, treeViewItem: TreeViewDataItem) => {
55+
// ignore folders for selection
6156
if (treeViewItem && !treeViewItem.children) {
6257
setActiveItems([treeViewItem]);
6358
}
6459
};
6560

66-
const onToggle1 = () => {
67-
setIsOpen1(!isOpen1);
61+
const setSigDropdownState = (id: string, isOpen: boolean) => {
62+
setSigDropdownOpen((prev) => ({ ...prev, [id]: isOpen }));
6863
};
6964

70-
const onSelect1 = () => {
71-
setIsOpen1(!isOpen1);
65+
const handleOpenSigDropdown = (id: string) => (isOpen: boolean) => {
66+
setSigDropdownState(id, isOpen);
7267
};
7368

74-
const onToggle2 = () => {
75-
setIsOpen2(!isOpen2);
69+
const handleToggleClick = (id: string) => () => {
70+
setSigDropdownState(id, !(sigDropdownOpen[id] ?? false));
7671
};
7772

78-
const onSelect2 = () => {
79-
setIsOpen2(!isOpen2);
73+
const handleSelect = (id: string) => () => {
74+
setSigDropdownState(id, false);
8075
};
8176

8277
const toggle = (id: string) => {
@@ -370,19 +365,19 @@ export const ArtifactResults = ({ artifact }: IArtifactResultsProps) => {
370365
<DataListAction aria-labelledby="ex-item1 ex-action1" id="ex-action1" aria-label="Actions">
371366
<Dropdown
372367
popperProps={{ position: "right" }}
373-
onSelect={onSelect1}
368+
onSelect={handleSelect("sig-1")}
374369
toggle={(toggleRef: React.Ref<MenuToggleElement>) => (
375370
<MenuToggle
376371
ref={toggleRef}
377-
isExpanded={isOpen1}
378-
onClick={onToggle1}
372+
isExpanded={sigDropdownOpen["sig-1"] ?? false}
373+
onClick={handleToggleClick("sig-1")}
379374
variant="plain"
380375
aria-label="Data list exapndable example kebaby toggle 1"
381376
icon={<EllipsisVIcon />}
382377
/>
383378
)}
384-
isOpen={isOpen1}
385-
onOpenChange={(isOpen: boolean) => setIsOpen1(isOpen)}
379+
isOpen={sigDropdownOpen["sig-1"] ?? false}
380+
onOpenChange={handleOpenSigDropdown("sig-1")}
386381
>
387382
<DropdownList>
388383
<DropdownItem key="link" to="#" onClick={(event: MouseEvent) => event.preventDefault()}>
@@ -400,10 +395,6 @@ export const ArtifactResults = ({ artifact }: IArtifactResultsProps) => {
400395
id="ex-expand1"
401396
isHidden={!expanded.includes("ex-toggle1")}
402397
>
403-
{/* <p>
404-
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore
405-
et dolore magna aliqua.
406-
</p> */}
407398
<CodeBlock actions={codeBlockActions}>
408399
<CodeBlockCode id="code-content">{code}</CodeBlockCode>
409400
</CodeBlock>
@@ -417,7 +408,7 @@ export const ArtifactResults = ({ artifact }: IArtifactResultsProps) => {
417408
aria-label="Certificate chain"
418409
data={options}
419410
activeItems={activeItems}
420-
onSelect={onSelect}
411+
onSelect={onSelectCertChain}
421412
/>
422413
</Panel>
423414
<Panel>
@@ -456,24 +447,22 @@ export const ArtifactResults = ({ artifact }: IArtifactResultsProps) => {
456447
<DataListAction aria-labelledby="ex-item2 ex-action2" id="ex-action2" aria-label="Actions">
457448
<Dropdown
458449
popperProps={{ position: "right" }}
459-
onSelect={onSelect2}
450+
onSelect={handleSelect("sig-2")}
460451
toggle={(toggleRef: React.Ref<MenuToggleElement>) => (
461452
<MenuToggle
462453
ref={toggleRef}
463-
isExpanded={isOpen2}
464-
onClick={onToggle2}
454+
isExpanded={sigDropdownOpen["sig-2"] ?? false}
455+
onClick={handleToggleClick("sig-2")}
465456
variant="plain"
466457
aria-label="Data list exapndable example kebaby toggle 2"
467458
icon={<EllipsisVIcon />}
468459
/>
469460
)}
470-
isOpen={isOpen2}
471-
onOpenChange={(isOpen: boolean) => setIsOpen2(isOpen)}
461+
isOpen={sigDropdownOpen["sig-2"] ?? false}
462+
onOpenChange={handleOpenSigDropdown("sig-2")}
472463
>
473464
<DropdownList>
474465
<DropdownItem key="action2">Action</DropdownItem>
475-
{/* Prevent default onClick functionality for example
476-
purposes */}
477466
<DropdownItem key="link2" to="#" onClick={(event: MouseEvent) => event.preventDefault()}>
478467
Link
479468
</DropdownItem>

0 commit comments

Comments
 (0)