Skip to content

Commit aaee1ac

Browse files
committed
chore: test css
1 parent 86f10d4 commit aaee1ac

File tree

6 files changed

+91
-22
lines changed

6 files changed

+91
-22
lines changed

app/components/chat.module.scss

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -646,3 +646,30 @@
646646
bottom: 30px;
647647
}
648648
}
649+
650+
.drag-overlay {
651+
display: none;
652+
}
653+
654+
.drag-overlay-show {
655+
pointer-events: none;
656+
display: flex;
657+
flex-direction: column;
658+
position: absolute;
659+
top: 0;
660+
left: 0;
661+
width: 100%;
662+
height: 100%;
663+
background-color: rgba(0, 0, 0, 0.01);
664+
justify-content: center;
665+
align-items: center;
666+
color: var(--black);
667+
font-size: 14px;
668+
z-index: 9999;
669+
backdrop-filter: blur(10px);
670+
671+
p {
672+
font-size: 16px;
673+
font-weight: 700;
674+
}
675+
}

app/components/chat.tsx

Lines changed: 43 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ import SizeIcon from "../icons/size.svg";
4242
import QualityIcon from "../icons/hd.svg";
4343
import StyleIcon from "../icons/palette.svg";
4444
import PluginIcon from "../icons/plugin.svg";
45+
import FileUploadIcon from "../icons/file-upload.svg";
4546

4647
import {
4748
ChatMessage,
@@ -1373,30 +1374,34 @@ function _Chat() {
13731374
setAttachImages(images);
13741375
}
13751376

1376-
const handleDrop = async (event: React.DragEvent<HTMLTextAreaElement>) => {
1377-
event.preventDefault(); // 阻止默认行为
1378-
const acceptedTypes = [
1379-
"image/png",
1380-
"image/jpeg",
1381-
"image/webp",
1382-
"image/heic",
1383-
"image/heif",
1384-
];
1385-
1386-
const files = event.dataTransfer.files; // 获取拖拽的文件
1387-
if (files.length > 0) {
1377+
const [showDragOverlay, setShowDragOverlay] = useState(false);
1378+
1379+
const handleDragOver = (e: React.DragEvent<HTMLDivElement>) => {
1380+
e.preventDefault();
1381+
setShowDragOverlay(true);
1382+
};
1383+
1384+
const handleDragEnter = (e: React.DragEvent<HTMLDivElement>) => {
1385+
setShowDragOverlay(true);
1386+
};
1387+
1388+
const handleDragLeave = (e: React.DragEvent<HTMLDivElement>) => {
1389+
if (!e.currentTarget.contains(e.relatedTarget as Node)) {
1390+
setShowDragOverlay(false);
1391+
}
1392+
};
1393+
1394+
const handleDrop = async (e: React.DragEvent<HTMLDivElement>) => {
1395+
e.preventDefault();
1396+
setShowDragOverlay(false);
1397+
1398+
const files = e.dataTransfer?.files;
1399+
if (files && files.length > 0) {
13881400
const imagesData: string[] = [];
13891401
setUploading(true);
13901402

13911403
for (let i = 0; i < files.length; i++) {
13921404
const file = files[i];
1393-
1394-
// 检查文件类型是否是图片
1395-
if (!acceptedTypes.includes(file.type)) {
1396-
console.warn("文件类型不被接受:", file.type);
1397-
continue; // 如果不是图片类型,跳过这个文件
1398-
}
1399-
14001405
try {
14011406
const dataUrl = await uploadImageRemote(file); // 上传文件
14021407
imagesData.push(dataUrl);
@@ -1411,7 +1416,25 @@ function _Chat() {
14111416
};
14121417

14131418
return (
1414-
<div className={styles.chat} key={session.id}>
1419+
<div
1420+
className={styles.chat}
1421+
key={session.id}
1422+
onDragOver={handleDragOver}
1423+
onDragLeave={handleDragLeave}
1424+
onDrop={handleDrop}
1425+
>
1426+
<div
1427+
id="drag-overlay"
1428+
className={
1429+
showDragOverlay ? styles["drag-overlay-show"] : styles["drag-overlay"]
1430+
}
1431+
>
1432+
<span>
1433+
<FileUploadIcon />
1434+
</span>
1435+
<p>{Locale.Chat.Actions.Addanything}</p>
1436+
<span>{Locale.Chat.Actions.AddanythingSub}</span>
1437+
</div>
14151438
<div className="window-header" data-tauri-drag-region>
14161439
{isMobileScreen && (
14171440
<div className="window-actions">
@@ -1752,8 +1775,6 @@ function _Chat() {
17521775
fontSize: config.fontSize,
17531776
fontFamily: config.fontFamily,
17541777
}}
1755-
onDrop={handleDrop}
1756-
onDragOver={(e) => e.preventDefault()}
17571778
/>
17581779
{attachImages.length != 0 && (
17591780
<div className={styles["attach-images"]}>

app/icons/file-upload.svg

Lines changed: 15 additions & 0 deletions
Loading

app/locales/cn.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,8 @@ const cn = {
4343
Delete: "删除",
4444
Edit: "编辑",
4545
FullScreen: "全屏",
46+
Addanything: "添加任意内容",
47+
AddanythingSub: "将任意文件拖拽到此处添加到对话中",
4648
},
4749
Commands: {
4850
new: "新建聊天",

app/locales/en.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,8 @@ const en: LocaleType = {
4545
Delete: "Delete",
4646
Edit: "Edit",
4747
FullScreen: "FullScreen",
48+
Addanything: "Add anything",
49+
AddanythingSub: "Drop any file here to add it to the conversation",
4850
},
4951
Commands: {
5052
new: "Start a new chat",

app/locales/tw.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,8 @@ const tw = {
4343
PinToastAction: "檢視",
4444
Delete: "刪除",
4545
Edit: "編輯",
46+
Addanything: "添加任意內容",
47+
AddanythingSub: "將任意文件拖曳到此處添加到對話中",
4648
},
4749
Commands: {
4850
new: "新建聊天",

0 commit comments

Comments
 (0)