mirror of
				https://github.com/ChatGPTNextWeb/ChatGPT-Next-Web.git
				synced 2025-11-04 16:23:41 +08:00 
			
		
		
		
	feat: improve dnd icon
This commit is contained in:
		@@ -101,6 +101,19 @@
 | 
			
		||||
    width: 100%;
 | 
			
		||||
    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 {
 | 
			
		||||
      margin-right: 10px;
 | 
			
		||||
    }
 | 
			
		||||
 
 | 
			
		||||
@@ -61,24 +61,36 @@
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  &:hover,
 | 
			
		||||
  &:active {
 | 
			
		||||
    .sidebar-drag {
 | 
			
		||||
      background-color: rgba($color: #000000, $alpha: 0.01);
 | 
			
		||||
 | 
			
		||||
      svg {
 | 
			
		||||
        opacity: 0.2;
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.sidebar-drag {
 | 
			
		||||
  $width: 10px;
 | 
			
		||||
  $width: 14px;
 | 
			
		||||
 | 
			
		||||
  position: absolute;
 | 
			
		||||
  top: 0;
 | 
			
		||||
  right: 0;
 | 
			
		||||
  height: 100%;
 | 
			
		||||
  width: $width;
 | 
			
		||||
  background-color: var(--black);
 | 
			
		||||
  background-color: rgba($color: #000000, $alpha: 0);
 | 
			
		||||
  cursor: ew-resize;
 | 
			
		||||
  opacity: 0;
 | 
			
		||||
  transition: all ease 0.3s;
 | 
			
		||||
  display: flex;
 | 
			
		||||
  align-items: center;
 | 
			
		||||
 | 
			
		||||
  &:hover,
 | 
			
		||||
  &:active {
 | 
			
		||||
    opacity: 0.2;
 | 
			
		||||
  svg {
 | 
			
		||||
    opacity: 0;
 | 
			
		||||
    margin-left: -2px;
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -11,6 +11,7 @@ import CloseIcon from "../icons/close.svg";
 | 
			
		||||
import DeleteIcon from "../icons/delete.svg";
 | 
			
		||||
import EyeIcon from "../icons/eye.svg";
 | 
			
		||||
import CopyIcon from "../icons/copy.svg";
 | 
			
		||||
import DragIcon from "../icons/drag.svg";
 | 
			
		||||
 | 
			
		||||
import { DEFAULT_MASK_AVATAR, Mask, useMaskStore } from "../store/mask";
 | 
			
		||||
import {
 | 
			
		||||
@@ -214,7 +215,7 @@ function ContextPromptItem(props: {
 | 
			
		||||
  const [focusingInput, setFocusingInput] = useState(false);
 | 
			
		||||
 | 
			
		||||
  return (
 | 
			
		||||
    <Draggable draggableId={props.prompt.id} index={props.index}>
 | 
			
		||||
    <Draggable draggableId={props.prompt.id.toString()} index={props.index}>
 | 
			
		||||
      {(provided) => (
 | 
			
		||||
        <div
 | 
			
		||||
          className={chatStyle["context-prompt-row"]}
 | 
			
		||||
@@ -223,22 +224,27 @@ function ContextPromptItem(props: {
 | 
			
		||||
          {...provided.dragHandleProps}
 | 
			
		||||
        >
 | 
			
		||||
          {!focusingInput && (
 | 
			
		||||
            <Select
 | 
			
		||||
              value={props.prompt.role}
 | 
			
		||||
              className={chatStyle["context-role"]}
 | 
			
		||||
              onChange={(e) =>
 | 
			
		||||
                props.update({
 | 
			
		||||
                  ...props.prompt,
 | 
			
		||||
                  role: e.target.value as any,
 | 
			
		||||
                })
 | 
			
		||||
              }
 | 
			
		||||
            >
 | 
			
		||||
              {ROLES.map((r) => (
 | 
			
		||||
                <option key={r} value={r}>
 | 
			
		||||
                  {r}
 | 
			
		||||
                </option>
 | 
			
		||||
              ))}
 | 
			
		||||
            </Select>
 | 
			
		||||
            <>
 | 
			
		||||
              <div className={chatStyle["context-drag"]}>
 | 
			
		||||
                <DragIcon />
 | 
			
		||||
              </div>
 | 
			
		||||
              <Select
 | 
			
		||||
                value={props.prompt.role}
 | 
			
		||||
                className={chatStyle["context-role"]}
 | 
			
		||||
                onChange={(e) =>
 | 
			
		||||
                  props.update({
 | 
			
		||||
                    ...props.prompt,
 | 
			
		||||
                    role: e.target.value as any,
 | 
			
		||||
                  })
 | 
			
		||||
                }
 | 
			
		||||
              >
 | 
			
		||||
                {ROLES.map((r) => (
 | 
			
		||||
                  <option key={r} value={r}>
 | 
			
		||||
                    {r}
 | 
			
		||||
                  </option>
 | 
			
		||||
                ))}
 | 
			
		||||
              </Select>
 | 
			
		||||
            </>
 | 
			
		||||
          )}
 | 
			
		||||
          <Input
 | 
			
		||||
            value={props.prompt.content}
 | 
			
		||||
 
 | 
			
		||||
@@ -10,6 +10,7 @@ import AddIcon from "../icons/add.svg";
 | 
			
		||||
import CloseIcon from "../icons/close.svg";
 | 
			
		||||
import MaskIcon from "../icons/mask.svg";
 | 
			
		||||
import PluginIcon from "../icons/plugin.svg";
 | 
			
		||||
import DragIcon from "../icons/drag.svg";
 | 
			
		||||
 | 
			
		||||
import Locale from "../locales";
 | 
			
		||||
 | 
			
		||||
@@ -198,7 +199,9 @@ export function SideBar(props: { className?: string }) {
 | 
			
		||||
      <div
 | 
			
		||||
        className={styles["sidebar-drag"]}
 | 
			
		||||
        onMouseDown={(e) => onDragMouseDown(e as any)}
 | 
			
		||||
      ></div>
 | 
			
		||||
      >
 | 
			
		||||
        <DragIcon />
 | 
			
		||||
      </div>
 | 
			
		||||
    </div>
 | 
			
		||||
  );
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										1
									
								
								app/icons/drag.svg
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								app/icons/drag.svg
									
									
									
									
									
										Normal 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  | 
		Reference in New Issue
	
	Block a user