diff --git a/packages/web_ui/src/components/Dropzone.tsx b/packages/web_ui/src/components/Dropzone.tsx
index cef95cd6..cc9feb3e 100644
--- a/packages/web_ui/src/components/Dropzone.tsx
+++ b/packages/web_ui/src/components/Dropzone.tsx
@@ -3,11 +3,19 @@ import { DraggingContext } from "../model/is_dragging";
import { useContext } from "react";
// This component is used to display a dropzone when a file is being dragged over the parent component
-export function Dropzone() {
+export function Dropzone({ disabled = false }: { disabled?: boolean }) {
const isDroppingFile = useContext(DraggingContext);
+ const textStyle: { color?: string } = {};
+ let text = "Drop to upload";
+ if (disabled) {
+ textStyle.color = "red";
+ text = "Target is offline";
+ }
+ const borderColor = disabled ? "gray" : "rgb(22, 119, 255)";
+
return
@@ -34,9 +42,9 @@ export function Dropzone() {
height: "100%",
}}
>
-
-
- Drop to upload
+
+
+ {text}
;
diff --git a/packages/web_ui/src/components/SavesList.tsx b/packages/web_ui/src/components/SavesList.tsx
index d5eb6ef8..9a962a87 100644
--- a/packages/web_ui/src/components/SavesList.tsx
+++ b/packages/web_ui/src/components/SavesList.tsx
@@ -363,7 +363,7 @@ export default function SavesList(props: { instance: lib.InstanceDetails }) {
zIndex: "1010",
}}
>
-
+
{saveTable}
diff --git a/packages/web_ui/src/components/SiteLayout.tsx b/packages/web_ui/src/components/SiteLayout.tsx
index 856ac492..5baece76 100644
--- a/packages/web_ui/src/components/SiteLayout.tsx
+++ b/packages/web_ui/src/components/SiteLayout.tsx
@@ -13,7 +13,7 @@ import { DraggingContext } from "../model/is_dragging";
const { Header, Sider } = Layout;
-function isDropzone(element: HTMLElement | null): boolean {
+function isActiveDropzone(element: HTMLElement | null): boolean {
if (!element) {
return false;
}
@@ -21,7 +21,7 @@ function isDropzone(element: HTMLElement | null): boolean {
let depth = 0;
while (element && depth < checkDepth) {
if (element.classList.contains("dropzone")) {
- return true;
+ return element.classList.contains("enabled");
}
element = element.parentElement;
depth += 1;
@@ -105,7 +105,7 @@ export default function SiteLayout() {
onDrop={(e) => {
setDragging(0);
// Prevent dropping outside of dropzone
- if (!isDropzone(e.target as HTMLElement)) {
+ if (!isActiveDropzone(e.target as HTMLElement)) {
e.preventDefault();
e.stopPropagation();
}
@@ -114,7 +114,7 @@ export default function SiteLayout() {
onDragOver={(e) => {
e.preventDefault();
// Change cursor
- if (isDropzone(e.target as HTMLElement)) {
+ if (isActiveDropzone(e.target as HTMLElement)) {
e.dataTransfer.dropEffect = "copy";
} else {
e.dataTransfer.dropEffect = "none";
diff --git a/packages/web_ui/src/components/UploadButton.tsx b/packages/web_ui/src/components/UploadButton.tsx
index 652ce9a4..cc3dd6b7 100644
--- a/packages/web_ui/src/components/UploadButton.tsx
+++ b/packages/web_ui/src/components/UploadButton.tsx
@@ -6,13 +6,14 @@ import { DraggingContext } from "../model/is_dragging";
export default function UploadButton(props: React.ComponentProps) {
const isDroppingFile = useContext(DraggingContext);
+ const borderColor = props.disabled ? "gray" : "rgb(22, 119, 255)";
return : props.icon || }
>