import React, { HTMLProps } from "react";
import { CustomContext } from "../CustomContext";
import { MenuItemsProps } from "../Menu";
import { FigureWrapper, Figure, FigCaption, Image } from "./style";
import { Title2, Subtitle, Label2 } from "../../typography";
export enum BinderSize {
small = "339px",
medium = "480px"
}
export interface BoardInterface {
key: string;
fk: string;
date?: Date;
title: string;
snapshot: string;
sharedWith?: string[];
lastUpdatedAt?: string;
}
export interface BinderInterface {
key: string;
title: { color: string; text: string };
img?: string;
backgroundColor?: string;
desc?: { color: string; text: string };
courseInformation?: {
grade: string;
teacher: string;
schedule?: string;
};
boards?: BoardInterface[];
date?: Date;
}
export interface BinderProps
extends Omit<
HTMLProps,
"ref" | "onClick" | "contextMenu" | "size" | "as"
> {
binder: BinderInterface;
onClick?: () => void;
contextMenu?: MenuItemsProps[];
disabled?: boolean;
size?: BinderSize;
setCurrentBinder?: (currentBinder: BinderInterface) => void;
carousel?: boolean;
}
export const Binder = ({
binder,
disabled,
setCurrentBinder,
contextMenu,
carousel,
onClick,
size,
...props
}: BinderProps) => {
const [showContextMenu, setShowContextMenu] = React.useState(false);
const figureRef = React.useRef();
const imgRef = React.useRef();
const spanRef = React.useRef();
React.useEffect(() => {
document.addEventListener("contextmenu", event => {
event.preventDefault();
if (
event.target === figureRef.current ||
event.target === imgRef.current ||
event.target === spanRef.current
) {
if (setCurrentBinder) {
setCurrentBinder(binder);
}
setShowContextMenu(true);
} else {
setShowContextMenu(false);
}
});
document.addEventListener("click", event => {
event.preventDefault();
setShowContextMenu(false);
});
}, []);
return (
{!disabled && contextMenu && (
)}
{binder.img && (
)}
{binder.courseInformation && (
{binder.courseInformation.grade}
)}
{binder.title.text}
{binder.desc?.text}
);
};