feat: improve dnd icon

This commit is contained in:
Yidadaa 2023-07-16 15:49:15 +08:00
parent e3c279b8be
commit 3ddedc903e
5 changed files with 59 additions and 24 deletions

View File

@ -101,6 +101,19 @@
width: 100%; width: 100%;
margin-bottom: 10px; margin-bottom: 10px;
&:hover {
.context-drag {
opacity: 1;
}
}
.context-drag {
display: flex;
align-items: center;
opacity: 0.5;
transition: all ease 0.3s;
}
.context-role { .context-role {
margin-right: 10px; margin-right: 10px;
} }

View File

@ -61,24 +61,36 @@
} }
} }
} }
&:hover,
&:active {
.sidebar-drag {
background-color: rgba($color: #000000, $alpha: 0.01);
svg {
opacity: 0.2;
}
}
}
} }
.sidebar-drag { .sidebar-drag {
$width: 10px; $width: 14px;
position: absolute; position: absolute;
top: 0; top: 0;
right: 0; right: 0;
height: 100%; height: 100%;
width: $width; width: $width;
background-color: var(--black); background-color: rgba($color: #000000, $alpha: 0);
cursor: ew-resize; cursor: ew-resize;
opacity: 0;
transition: all ease 0.3s; transition: all ease 0.3s;
display: flex;
align-items: center;
&:hover, svg {
&:active { opacity: 0;
opacity: 0.2; margin-left: -2px;
} }
} }

View File

@ -11,6 +11,7 @@ import CloseIcon from "../icons/close.svg";
import DeleteIcon from "../icons/delete.svg"; import DeleteIcon from "../icons/delete.svg";
import EyeIcon from "../icons/eye.svg"; import EyeIcon from "../icons/eye.svg";
import CopyIcon from "../icons/copy.svg"; import CopyIcon from "../icons/copy.svg";
import DragIcon from "../icons/drag.svg";
import { DEFAULT_MASK_AVATAR, Mask, useMaskStore } from "../store/mask"; import { DEFAULT_MASK_AVATAR, Mask, useMaskStore } from "../store/mask";
import { import {
@ -214,7 +215,7 @@ function ContextPromptItem(props: {
const [focusingInput, setFocusingInput] = useState(false); const [focusingInput, setFocusingInput] = useState(false);
return ( return (
<Draggable draggableId={props.prompt.id} index={props.index}> <Draggable draggableId={props.prompt.id.toString()} index={props.index}>
{(provided) => ( {(provided) => (
<div <div
className={chatStyle["context-prompt-row"]} className={chatStyle["context-prompt-row"]}
@ -223,22 +224,27 @@ function ContextPromptItem(props: {
{...provided.dragHandleProps} {...provided.dragHandleProps}
> >
{!focusingInput && ( {!focusingInput && (
<Select <>
value={props.prompt.role} <div className={chatStyle["context-drag"]}>
className={chatStyle["context-role"]} <DragIcon />
onChange={(e) => </div>
props.update({ <Select
...props.prompt, value={props.prompt.role}
role: e.target.value as any, className={chatStyle["context-role"]}
}) onChange={(e) =>
} props.update({
> ...props.prompt,
{ROLES.map((r) => ( role: e.target.value as any,
<option key={r} value={r}> })
{r} }
</option> >
))} {ROLES.map((r) => (
</Select> <option key={r} value={r}>
{r}
</option>
))}
</Select>
</>
)} )}
<Input <Input
value={props.prompt.content} value={props.prompt.content}

View File

@ -10,6 +10,7 @@ import AddIcon from "../icons/add.svg";
import CloseIcon from "../icons/close.svg"; import CloseIcon from "../icons/close.svg";
import MaskIcon from "../icons/mask.svg"; import MaskIcon from "../icons/mask.svg";
import PluginIcon from "../icons/plugin.svg"; import PluginIcon from "../icons/plugin.svg";
import DragIcon from "../icons/drag.svg";
import Locale from "../locales"; import Locale from "../locales";
@ -198,7 +199,9 @@ export function SideBar(props: { className?: string }) {
<div <div
className={styles["sidebar-drag"]} className={styles["sidebar-drag"]}
onMouseDown={(e) => onDragMouseDown(e as any)} onMouseDown={(e) => onDragMouseDown(e as any)}
></div> >
<DragIcon />
</div>
</div> </div>
); );
} }

1
app/icons/drag.svg Normal file
View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16" fill="none"><g opacity="1" transform="translate(0 0) rotate(0)"><mask id="bg-mask-0" fill="white"><use transform="translate(0 0) rotate(0)" xlink:href="#path_0"></use></mask><g mask="url(#bg-mask-0)" ><path id="路径 1" fill-rule="evenodd" style="fill:#333333" opacity="1" d="M6.33663,3.33c0,0.74 -0.6,1.34 -1.34,1.34c-0.73,0 -1.33,-0.6 -1.33,-1.34c0,-0.73 0.6,-1.33 1.33,-1.33c0.74,0 1.34,0.6 1.34,1.33zM4.99663,9.33c-0.73,0 -1.33,-0.59 -1.33,-1.33c0,-0.74 0.6,-1.33 1.33,-1.33c0.74,0 1.34,0.59 1.34,1.33c0,0.74 -0.6,1.33 -1.34,1.33zM4.99663,14c-0.73,0 -1.33,-0.6 -1.33,-1.33c0,-0.74 0.6,-1.34 1.33,-1.34c0.74,0 1.34,0.6 1.34,1.34c0,0.73 -0.6,1.33 -1.34,1.33z"></path><path id="路径 2" fill-rule="evenodd" style="fill:#333333" opacity="1" d="M12.3366,3.33c0,0.74 -0.6,1.34 -1.34,1.34c-0.73,0 -1.32997,-0.6 -1.32997,-1.34c0,-0.73 0.59997,-1.33 1.32997,-1.33c0.74,0 1.34,0.6 1.34,1.33zM10.9966,9.33c-0.73,0 -1.32997,-0.59 -1.32997,-1.33c0,-0.74 0.59997,-1.33 1.32997,-1.33c0.74,0 1.34,0.59 1.34,1.33c0,0.74 -0.6,1.33 -1.34,1.33zM10.9966,14c-0.73,0 -1.32997,-0.6 -1.32997,-1.33c0,-0.74 0.59997,-1.34 1.32997,-1.34c0.74,0 1.34,0.6 1.34,1.34c0,0.73 -0.6,1.33 -1.34,1.33z"></path></g></g><defs><rect id="path_0" x="0" y="0" width="16" height="16" /></defs></svg>

After

Width:  |  Height:  |  Size: 1.4 KiB