import { getCollectionTitle } from "@/entrypoints/sidepanel/utils/getCollectionTitle"; import useSettings from "@/hooks/useSettings"; import { TabItem } from "@/models/CollectionModels"; import { Button, Caption1, makeStyles, mergeClasses, Subtitle2, tokens, Tooltip } from "@fluentui/react-components"; import { Add20Filled, Add20Regular, bundleIcon, EyeOff16Regular } from "@fluentui/react-icons"; import CollectionContext, { CollectionContextType } from "../../contexts/CollectionContext"; import { useCollections } from "../../contexts/CollectionsProvider"; import CollectionMoreButton from "./CollectionMoreButton"; import OpenCollectionButton from "./OpenCollectionButton"; import sendPartialSaveNotification from "@/utils/sendPartialSaveNotification"; import { getTabsToSaveAsync } from "@/utils/getTabsToSaveAsync"; export default function CollectionHeader({ dragHandleRef, dragHandleProps }: CollectionHeaderProps): React.ReactElement { const [contextOpen, setContextOpen] = useState(false); const [listLocation] = useSettings("listLocation"); const isTabView: boolean = listLocation === "tab" || listLocation === "pinned"; const { updateCollection } = useCollections(); const { tabCount, collection } = useContext(CollectionContext); const [alwaysShowToolbars] = useSettings("alwaysShowToolbars"); const AddIcon = bundleIcon(Add20Filled, Add20Regular); const handleAddSelected = async () => { const [newTabs, skipCount] = await getTabsToSaveAsync(true); if (newTabs.length > 0) await updateCollection({ ...collection, items: [...collection.items, ...newTabs.map(i => ({ type: "tab", url: i.url!, title: i.title }))] }, collection.timestamp); if (skipCount > 0) await sendPartialSaveNotification(); }; const cls = useStyles(); return (
{ collection.hidden && } { getCollectionTitle(collection) }
{ i18n.t("collections.tabs_count", [tabCount]) }
{ tabCount < 1 ? : setContextOpen(e.open) } /> } setContextOpen(e.open) } />
); } export type CollectionHeaderProps = { dragHandleRef?: React.LegacyRef; dragHandleProps?: React.HTMLAttributes; }; const useStyles = makeStyles({ header: { color: "var(--border)", display: "grid", gridTemplateColumns: "1fr auto", padding: `${tokens.spacingVerticalS} ${tokens.spacingHorizontalS}`, paddingBottom: tokens.spacingVerticalS }, title: { display: "flex", flexFlow: "column", alignItems: "flex-start", overflow: "hidden" }, titleText: { maxWidth: "100%" }, toolbar: { display: "none", gap: tokens.spacingHorizontalS, alignItems: "flex-start" }, showToolbar: { display: "flex" }, titleContainer: { display: "flex", alignItems: "center", gap: tokens.spacingHorizontalS } });