techsbcn-storybook 2.10.5 → 2.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -2873,6 +2873,7 @@ var FileUploadComponent = ({ labels, onUpload }) => {
2873
2873
  const [file, setFile] = React10.useState(null);
2874
2874
  const [note, setNote] = React10.useState("");
2875
2875
  const [loading, setLoading] = React10.useState(false);
2876
+ const [dragging, setDragging] = React10.useState(false);
2876
2877
  const save = async () => {
2877
2878
  if (!file) return;
2878
2879
  setLoading(true);
@@ -2891,16 +2892,37 @@ var FileUploadComponent = ({ labels, onUpload }) => {
2891
2892
  {
2892
2893
  component: "label",
2893
2894
  onDragOver: (event) => event.preventDefault(),
2895
+ onDragEnter: () => setDragging(true),
2896
+ onDragLeave: (event) => {
2897
+ if (!event.currentTarget.contains(event.relatedTarget)) setDragging(false);
2898
+ },
2894
2899
  onDrop: (event) => {
2895
2900
  event.preventDefault();
2896
- setFile(event.dataTransfer.files[0] ?? null);
2901
+ setDragging(false);
2902
+ const dropped = event.dataTransfer.files[0];
2903
+ if (dropped) setFile(dropped);
2904
+ },
2905
+ sx: {
2906
+ display: "flex",
2907
+ flexDirection: "column",
2908
+ alignItems: "center",
2909
+ gap: 1,
2910
+ p: 3,
2911
+ border: "2px dashed",
2912
+ borderColor: dragging ? "primary.main" : "divider",
2913
+ bgcolor: dragging ? "action.hover" : "transparent",
2914
+ borderRadius: 1,
2915
+ cursor: "pointer",
2916
+ position: "relative",
2917
+ "&:focus-within": { borderColor: "primary.main" }
2897
2918
  }
2898
2919
  },
2899
2920
  /* @__PURE__ */ React10__default.default.createElement(
2900
- "input",
2921
+ material.Box,
2901
2922
  {
2923
+ component: "input",
2902
2924
  type: "file",
2903
- hidden: true,
2925
+ sx: { position: "absolute", width: 1, height: 1, opacity: 0, overflow: "hidden" },
2904
2926
  onChange: (event) => {
2905
2927
  setFile(event.target.files?.[0] ?? null);
2906
2928
  event.target.value = "";