diff --git a/app/ScreenAdapter.tsx b/app/ScreenAdapter.tsx
new file mode 100644
index 0000000..7f9dc2a
--- /dev/null
+++ b/app/ScreenAdapter.tsx
@@ -0,0 +1,16 @@
+'use client'
+
+import { useEffect } from 'react';
+import { createScreenAdapter } from '@/utils/tools';
+
+export function ScreenAdapter() {
+ useEffect(() => {
+ // 页面加载时应用
+ window.addEventListener('load', createScreenAdapter)
+
+ // 窗口大小改变时重新应用
+ window.addEventListener('resize', createScreenAdapter)
+ }, []);
+
+ return null; // 这个组件不渲染任何内容
+}
diff --git a/app/layout.tsx b/app/layout.tsx
index cd01797..358bf6c 100644
--- a/app/layout.tsx
+++ b/app/layout.tsx
@@ -2,6 +2,9 @@ import './globals.css';
import type { Metadata } from 'next';
import { Providers } from '@/components/providers';
import { ConfigProvider, theme } from 'antd';
+import { useEffect } from 'react';
+import { createScreenAdapter } from '@/utils/tools';
+import { ScreenAdapter } from './ScreenAdapter';
export const metadata: Metadata = {
title: 'AI Movie Flow - Create Amazing Videos with AI',
@@ -29,6 +32,7 @@ export default function RootLayout({
}}
>
+
{children}
diff --git a/components/ChatInputBox/ChatInputBox.tsx b/components/ChatInputBox/ChatInputBox.tsx
index ee022d7..4b3e669 100644
--- a/components/ChatInputBox/ChatInputBox.tsx
+++ b/components/ChatInputBox/ChatInputBox.tsx
@@ -84,7 +84,9 @@ const RenderTemplateStoryMode = ({
// 本地加载状态,用于 UI 反馈
const [localLoading, setLocalLoading] = useState(0);
// 控制输入框显示状态
- const [inputVisible, setInputVisible] = useState<{ [key: string]: boolean }>({});
+ const [inputVisible, setInputVisible] = useState<{ [key: string]: boolean }>(
+ {}
+ );
const router = useRouter();
// 组件挂载时获取模板列表
useEffect(() => {
@@ -98,15 +100,18 @@ const RenderTemplateStoryMode = ({
const handleClickOutside = (event: MouseEvent) => {
const target = event.target as Element;
// 检查是否点击了输入框相关的元素
- if (!target.closest('.ant-tooltip') && !target.closest('[data-alt*="field-ai-button"]')) {
+ if (
+ !target.closest(".ant-tooltip") &&
+ !target.closest('[data-alt*="field-ai-button"]')
+ ) {
// 关闭所有打开的输入框
setInputVisible({});
}
};
- document.addEventListener('mousedown', handleClickOutside);
+ document.addEventListener("mousedown", handleClickOutside);
return () => {
- document.removeEventListener('mousedown', handleClickOutside);
+ document.removeEventListener("mousedown", handleClickOutside);
};
}, []);
@@ -164,7 +169,7 @@ const RenderTemplateStoryMode = ({
const templateListRender = () => {
return (
-
+
{templateStoryList.map((template, index) => (
{/* 左侧图片 */}
-
-

-
-
+
{/* 右侧信息 - 增加文本渲染空间 */}
@@ -217,7 +216,7 @@ const RenderTemplateStoryMode = ({
{selectedTemplate.name}
0 && (
-
+
({ ...prev, [field.field_name]: false }));
+ setInputVisible((prev) => ({
+ ...prev,
+ [field.field_name]: false,
+ }));
}}
icon={}
width="w-8"
@@ -289,14 +291,19 @@ const RenderTemplateStoryMode = ({
root: "max-w-none",
}}
open={inputVisible[field.field_name]}
- onOpenChange={(visible) => setInputVisible(prev => ({ ...prev, [field.field_name]: visible }))}
+ onOpenChange={(visible) =>
+ setInputVisible((prev) => ({
+ ...prev,
+ [field.field_name]: visible,
+ }))
+ }
trigger="contextMenu"
styles={{ root: { zIndex: 1000 } }}
>
{/* 图片 */}