ss-support-widget 1.0.5 → 1.0.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/src/ChatWidget.tsx +13 -5
- package/src/hooks.ts +20 -0
package/package.json
CHANGED
package/src/ChatWidget.tsx
CHANGED
|
@@ -18,6 +18,7 @@ import SmartToyRoundedIcon from "@mui/icons-material/SmartToyRounded";
|
|
|
18
18
|
import PersonRoundedIcon from "@mui/icons-material/PersonRounded";
|
|
19
19
|
import ReactMarkdown from "react-markdown";
|
|
20
20
|
import { Msg } from "./App";
|
|
21
|
+
import { useViewportHeightVar } from "./hooks";
|
|
21
22
|
|
|
22
23
|
|
|
23
24
|
export function ChatWidget({
|
|
@@ -42,6 +43,7 @@ export function ChatWidget({
|
|
|
42
43
|
const endRef = useRef<HTMLDivElement | null>(null);
|
|
43
44
|
const theme = useTheme();
|
|
44
45
|
const isMobile = useMediaQuery(theme.breakpoints.down("sm"));
|
|
46
|
+
useViewportHeightVar();
|
|
45
47
|
|
|
46
48
|
useEffect(() => {
|
|
47
49
|
endRef.current?.scrollIntoView({ behavior: "smooth", block: "end" });
|
|
@@ -76,9 +78,12 @@ export function ChatWidget({
|
|
|
76
78
|
elevation={isMobile ? 0 : 10}
|
|
77
79
|
sx={{
|
|
78
80
|
width: isMobile ? "100vw" : 380,
|
|
79
|
-
height: isMobile ? "
|
|
81
|
+
height: isMobile ? "calc(var(--vh, 1vh) * 100)" : 560,
|
|
82
|
+
"@supports (height: 100dvh)": {
|
|
83
|
+
height: isMobile ? "100dvh" : 560,
|
|
84
|
+
},
|
|
80
85
|
maxWidth: "100vw",
|
|
81
|
-
maxHeight: "
|
|
86
|
+
maxHeight: "100dvh",
|
|
82
87
|
borderRadius: isMobile ? 0 : 4,
|
|
83
88
|
position: isMobile ? "fixed" : "relative",
|
|
84
89
|
inset: isMobile ? 0 : "auto",
|
|
@@ -101,7 +106,7 @@ export function ChatWidget({
|
|
|
101
106
|
borderColor: "divider",
|
|
102
107
|
background:
|
|
103
108
|
"linear-gradient(135deg, rgba(25,118,210,.18), rgba(156,39,176,.14))",
|
|
104
|
-
backdropFilter: "blur(10px)",
|
|
109
|
+
backdropFilter: isMobile ? "none" : "blur(10px)",
|
|
105
110
|
}}
|
|
106
111
|
>
|
|
107
112
|
<Badge
|
|
@@ -149,7 +154,7 @@ export function ChatWidget({
|
|
|
149
154
|
<Box
|
|
150
155
|
sx={{
|
|
151
156
|
flex: 1,
|
|
152
|
-
minHeight:
|
|
157
|
+
minHeight: 0,
|
|
153
158
|
position: "relative",
|
|
154
159
|
// height: 300,
|
|
155
160
|
overflow: "auto",
|
|
@@ -338,6 +343,9 @@ export function ChatWidget({
|
|
|
338
343
|
|
|
339
344
|
<Box
|
|
340
345
|
sx={{
|
|
346
|
+
position: "sticky",
|
|
347
|
+
bottom: 0,
|
|
348
|
+
zIndex: 2,
|
|
341
349
|
p: 1.25,
|
|
342
350
|
borderTop: "1px solid",
|
|
343
351
|
borderColor: "divider",
|
|
@@ -392,4 +400,4 @@ export function ChatWidget({
|
|
|
392
400
|
</Box>
|
|
393
401
|
);
|
|
394
402
|
}
|
|
395
|
-
export default ChatWidget;
|
|
403
|
+
export default ChatWidget;
|
package/src/hooks.ts
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { useEffect } from "react";
|
|
2
|
+
|
|
1
3
|
export function ensureViewportMeta() {
|
|
2
4
|
if (typeof document === "undefined") return;
|
|
3
5
|
|
|
@@ -10,3 +12,21 @@ export function ensureViewportMeta() {
|
|
|
10
12
|
document.head.appendChild(meta);
|
|
11
13
|
}
|
|
12
14
|
|
|
15
|
+
export function useViewportHeightVar() {
|
|
16
|
+
useEffect(() => {
|
|
17
|
+
const setVh = () => {
|
|
18
|
+
const vh = window.innerHeight * 0.01;
|
|
19
|
+
document.documentElement.style.setProperty("--vh", `${vh}px`);
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
setVh();
|
|
23
|
+
|
|
24
|
+
window.addEventListener("resize", setVh);
|
|
25
|
+
window.addEventListener("orientationchange", setVh);
|
|
26
|
+
|
|
27
|
+
return () => {
|
|
28
|
+
window.removeEventListener("resize", setVh);
|
|
29
|
+
window.removeEventListener("orientationchange", setVh);
|
|
30
|
+
};
|
|
31
|
+
}, []);
|
|
32
|
+
}
|