import GroupContext from "@/entrypoints/sidepanel/contexts/GroupContext"; import useDndItem from "@/entrypoints/sidepanel/hooks/useDndItem"; import { openGroup } from "@/entrypoints/sidepanel/utils/opener"; import { useGroupColors } from "@/hooks/useGroupColors"; import useSettings from "@/hooks/useSettings"; import { GroupItem } from "@/models/CollectionModels"; import { horizontalListSortingStrategy, SortableContext, verticalListSortingStrategy } from "@dnd-kit/sortable"; import { Caption1Strong, Link, mergeClasses, Tooltip } from "@fluentui/react-components"; import { Pin16Filled, WebAssetRegular } from "@fluentui/react-icons"; import { ReactElement } from "react"; import { useCollections } from "../contexts/CollectionsProvider"; import GroupDropZone from "./collections/GroupDropZone"; import GroupMoreMenu from "./collections/GroupMoreMenu"; import { useStyles_GroupView } from "./GroupView.styles"; import TabView from "./TabView"; export default function GroupView({ group, indices, dragOverlay }: GroupViewProps): ReactElement { const [alwaysShowToolbars] = useSettings("alwaysShowToolbars"); const { tilesView } = useCollections(); const groupId: string = useMemo(() => indices.join("/"), [indices]); const { setNodeRef, nodeProps, setActivatorNodeRef, activatorProps, activeItem: active, isBeingDragged } = useDndItem({ id: groupId, data: { indices, item: group }, disabled: group.pinned }); const disableDropZone: boolean = useMemo( () => active !== null && (active.item.type !== "tab" || (active.indices[0] === indices[0] && active.indices[1] === indices[1])), [active, indices]); const disableSorting: boolean = useMemo( () => active !== null && (active.item.type !== "tab" || active.indices[0] !== indices[0]), [active, indices]); const cls = useStyles_GroupView(); const colorCls = useGroupColors(); return (
{ group.pinned === true ? <> { i18n.t("groups.pinned") } : { group.title } }
{ group.items.length > 0 && openGroup(group, false) }> { i18n.t("groups.open") } }
{ group.items.length < 1 ?
{ i18n.t("groups.empty") }
:
[...indices, index].join("/")) } disabled={ disableSorting } strategy={ !tilesView ? verticalListSortingStrategy : horizontalListSortingStrategy } > { group.items.map((i, index) => ) }
}
); } export type GroupViewProps = { group: GroupItem; indices: number[]; dragOverlay?: boolean; };