Skip to content

Commit c3b7e54

Browse files
committed
chore: add resize observer to dialog content
1 parent c5ed636 commit c3b7e54

File tree

3 files changed

+21
-7
lines changed

3 files changed

+21
-7
lines changed

packages/core/src/Dialog/Content/Content.styles.tsx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@ export const { staticClasses, useClasses } = createClasses("HvDialog-Content", {
99
paddingLeft: `calc(42px + ${theme.space.sm})`,
1010
paddingRight: "62px",
1111
overflowY: "auto",
12+
},
13+
contentBorder: {
1214
borderTop: "var(--content-border)",
1315
borderBottom: "var(--content-border)",
1416
},

packages/core/src/Dialog/Content/Content.tsx

Lines changed: 19 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -34,16 +34,28 @@ export const HvDialogContent = (props: HvDialogContentProps) => {
3434

3535
const { classes, cx } = useClasses(classesProp);
3636
const [hasBorder, setHasBorder] = useState(false);
37-
3837
const elRef = useRef<HTMLDivElement>(null);
3938

4039
useEffect(() => {
41-
const el = elRef.current as HTMLElement | null;
42-
if (el) {
43-
const hasOverflow = el.scrollHeight > el.clientHeight;
44-
setHasBorder(hasOverflow);
40+
if (typeof ResizeObserver !== "undefined") {
41+
const resizeObserver = new ResizeObserver(() => {
42+
const el = elRef.current as HTMLElement | null;
43+
if (el) {
44+
const hasOverflow = el.scrollHeight > el.clientHeight;
45+
setHasBorder(hasOverflow);
46+
}
47+
});
48+
49+
if (elRef.current) {
50+
resizeObserver.observe(elRef.current as HTMLElement);
51+
}
52+
53+
return () => {
54+
resizeObserver.disconnect();
55+
};
4556
}
46-
}, [elRef]);
57+
return undefined;
58+
}, []);
4759

4860
return (
4961
<HvTypography
@@ -52,6 +64,7 @@ export const HvDialogContent = (props: HvDialogContentProps) => {
5264
className={cx(
5365
classes.root,
5466
{ [classes.textContent]: !!indentContent },
67+
{ [classes.contentBorder]: hasBorder },
5568
className,
5669
)}
5770
style={{

packages/core/src/Dialog/Title/Title.tsx

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ import {
88

99
import { HvStatusIcon } from "../../StatusIcon";
1010
import { HvTypography } from "../../Typography";
11-
import { iconVariant } from "../../utils/iconVariant";
1211
import { useDialogContext } from "../context";
1312
import { staticClasses, useClasses } from "./Title.styles";
1413

0 commit comments

Comments
 (0)