1
0
Fork 0
firefox/browser/extensions/newtab/content-src/components/DiscoveryStreamComponents/SectionContextMenu/SectionContextMenu.jsx
Daniel Baumann 5e9a113729
Adding upstream version 140.0.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
2025-06-25 09:37:52 +02:00

69 lines
1.7 KiB
JavaScript

/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
import React, { useState } from "react";
import { LinkMenu } from "../../LinkMenu/LinkMenu";
/**
* A context menu for blocking, following and unfollowing sections.
*
* @param props
* @returns {React.FunctionComponent}
*/
export function SectionContextMenu({
type = "DISCOVERY_STREAM",
title,
source,
index,
dispatch,
sectionKey,
following,
sectionPersonalization,
sectionPosition,
}) {
// Initial context menu options: block this section only.
const SECTIONS_CONTEXT_MENU_OPTIONS = ["SectionBlock"];
const [showContextMenu, setShowContextMenu] = useState(false);
if (following) {
SECTIONS_CONTEXT_MENU_OPTIONS.push("SectionUnfollow");
}
const onClick = e => {
e.preventDefault();
setShowContextMenu(!showContextMenu);
};
const onUpdate = () => {
setShowContextMenu(!showContextMenu);
};
return (
<div className="section-context-menu">
<moz-button
type="icon"
size="default"
iconsrc="chrome://global/skin/icons/more.svg"
title={title || source}
onClick={onClick}
/>
{showContextMenu && (
<LinkMenu
onUpdate={onUpdate}
dispatch={dispatch}
index={index}
source={type.toUpperCase()}
options={SECTIONS_CONTEXT_MENU_OPTIONS}
shouldSendImpressionStats={true}
site={{
sectionPersonalization,
sectionKey,
sectionPosition,
title,
}}
/>
)}
</div>
);
}