import { useDialog } from "@/contexts/DialogProvider"; import EditDialog from "@/entrypoints/sidepanel/components/EditDialog"; import CollectionContext, { CollectionContextType } from "@/entrypoints/sidepanel/contexts/CollectionContext"; import { useCollections } from "@/entrypoints/sidepanel/contexts/CollectionsProvider"; import GroupContext, { GroupContextType } from "@/entrypoints/sidepanel/contexts/GroupContext"; import getSelectedTabs from "@/entrypoints/sidepanel/utils/getSelectedTabs"; import { useDangerStyles } from "@/hooks/useDangerStyles"; import useSettings from "@/hooks/useSettings"; import { TabItem } from "@/models/CollectionModels"; import { Button, Menu, MenuItem, MenuList, MenuPopover, MenuTrigger, Tooltip } from "@fluentui/react-components"; import * as ic from "@fluentui/react-icons"; import { ReactElement } from "react"; import { openGroup } from "../../utils/opener"; export default function GroupMoreMenu(): ReactElement { const { group, indices } = useContext(GroupContext); const { hasPinnedGroup } = useContext(CollectionContext); const [deletePrompt] = useSettings("deletePrompt"); const dialog = useDialog(); const { updateGroup, removeItem, ungroup } = useCollections(); const dangerCls = useDangerStyles(); const AddIcon = ic.bundleIcon(ic.Add20Filled, ic.Add20Regular); const UngroupIcon = ic.bundleIcon(ic.FullScreenMaximize20Filled, ic.FullScreenMaximize20Regular); const EditIcon = ic.bundleIcon(ic.Edit20Filled, ic.Edit20Regular); const NewWindowIcon = ic.bundleIcon(ic.WindowNew20Filled, ic.WindowNew20Regular); const DeleteIcon = ic.bundleIcon(ic.Delete20Filled, ic.Delete20Regular); const handleDelete = () => { if (deletePrompt) dialog.pushPrompt({ title: i18n.t("groups.menu.delete"), content: i18n.t("common.delete_prompt"), confirmText: i18n.t("common.actions.delete"), destructive: true, onConfirm: () => removeItem(...indices) }); else removeItem(...indices); }; const handleEdit = () => dialog.pushCustom( updateGroup(item, indices[0], indices[1]) } /> ); const handleAddSelected = async () => { const newTabs: TabItem[] = await getSelectedTabs(); updateGroup({ ...group, items: [...group.items, ...newTabs] }, indices[0], indices[1]); }; return ( ); }