Skip to content

Commit acd6135

Browse files
author
Illia Obukhau
committed
feat(accordion-web): prevent content render until group is expanded
1 parent 2aa4317 commit acd6135

File tree

2 files changed

+16
-3
lines changed

2 files changed

+16
-3
lines changed

packages/pluggableWidgets/accordion-web/src/components/AccordionGroup.tsx

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
import { createElement, KeyboardEvent, ReactElement, ReactNode, useCallback, useEffect, useRef, useState } from "react";
2-
32
import classNames from "classnames";
4-
3+
import { MountOnceReady } from "./MountOnceReady";
54
import "../ui/accordion-main.scss";
65

76
export const enum Target {
@@ -179,7 +178,7 @@ export function AccordionGroup(props: AccordionGroupProps): ReactElement | null
179178
aria-labelledby={`${props.id}HeaderButton`}
180179
>
181180
<div ref={contentRef} className={"widget-accordion-group-content"}>
182-
{props.content}
181+
<MountOnceReady ready={!renderCollapsed}>{props.content}</MountOnceReady>
183182
</div>
184183
</div>
185184
</section>
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
import { createElement, ReactNode, useRef, Fragment } from "react";
2+
3+
export function MountOnceReady(props: { ready: boolean; children: ReactNode }): JSX.Element | null {
4+
const { ready, children } = props;
5+
const isReady = useRef(false);
6+
7+
isReady.current = isReady.current || ready;
8+
9+
if (!isReady.current || !children) {
10+
return null;
11+
}
12+
13+
return <Fragment>{children}</Fragment>;
14+
}

0 commit comments

Comments
 (0)