diff --git a/src/routes/Boards/History/HistoryCard/HistoryCard.tsx b/src/routes/Boards/History/HistoryCard/HistoryCard.tsx index f9bebed86f..72d07cc6ac 100644 --- a/src/routes/Boards/History/HistoryCard/HistoryCard.tsx +++ b/src/routes/Boards/History/HistoryCard/HistoryCard.tsx @@ -23,7 +23,7 @@ import {Button} from "components/Button"; import {UserRoleChip} from "routes/Boards/History/HistoryCard/AccessPolicyChip/UserRoleChip"; import {AccessPolicy, deleteHistoryBoard, setBoardFavourite} from "store/features"; import {ReactElement, useState} from "react"; -import {MiniMenu} from "components/MiniMenu/MiniMenu"; +import {MiniMenu, MiniMenuItem} from "components/MiniMenu/MiniMenu"; import {ConfirmationDialog} from "components/ConfirmationDialog/ConfirmationDialog"; import {Tooltip} from "components/Tooltip"; import {useTextOverflow} from "utils/hooks/useTextOverflow"; @@ -84,6 +84,10 @@ export const HistoryCard = (props: HistoryCardProps) => { // owner: edit + delete; moderator: edit only; participant: neither. const canEdit = isParticipantModerator(props.board.userRole); const canDelete = props.board.userRole === "OWNER"; + // creating templates from boards is only allowed if templates are available to the user + const isAnonymous = useAppSelector((state) => state.auth.user?.isAnonymous); + const allowAnonymousCustomTemplates = useAppSelector((state) => state.view.allowAnonymousCustomTemplates); + const canCreateTemplate = !isAnonymous || allowAnonymousCustomTemplates; const joinedColumnsNames = props.board.columns.map((column) => column.name).join(", "); const formattedCreatedAtDate = new Date(props.board.createdAt).toLocaleDateString(locale, {weekday: "long", year: "numeric", month: "2-digit", day: "2-digit"}); @@ -100,44 +104,42 @@ export const HistoryCard = (props: HistoryCardProps) => { showMiniMenu ? ( , - onClick: () => { - setShowMiniMenu(false); - setShowDeleteConfirmation(true); - }, - }, - ] - : []), - { - label: t("History.HistoryCard.Menu.copyLink"), - element: , - onClick: () => { - navigator.clipboard.writeText(`${window.location.origin}/board/${props.board.id}`).then(() => { - Toast.success({title: t("History.HistoryCard.linkCopied")}); - }); + items={ + [ + canDelete && { + label: t("History.HistoryCard.Menu.delete"), + element: , + onClick: () => { + setShowMiniMenu(false); + setShowDeleteConfirmation(true); + }, }, - }, - { - label: t("History.HistoryCard.Menu.createTemplate"), - element: , - onClick: () => navigate(`/boards/create-template/${props.board.id}`), - }, - ...(canEdit - ? [ - { - label: t("History.HistoryCard.Menu.edit"), - element: , - onClick: () => navigate(`/boards/edit-board/${props.board.id}`), - }, - ] - : []), - {label: t("History.HistoryCard.Menu.close"), element: , onClick: () => setShowMiniMenu(false)}, - ]} + { + label: t("History.HistoryCard.Menu.copyLink"), + element: , + onClick: () => { + navigator.clipboard.writeText(`${window.location.origin}/board/${props.board.id}`).then(() => { + Toast.success({title: t("History.HistoryCard.linkCopied")}); + }); + }, + }, + canCreateTemplate && { + label: t("History.HistoryCard.Menu.createTemplate"), + element: , + onClick: () => navigate(`/boards/create-template/${props.board.id}`), + }, + canEdit && { + label: t("History.HistoryCard.Menu.edit"), + element: , + onClick: () => navigate(`/boards/edit-board/${props.board.id}`), + }, + { + label: t("History.HistoryCard.Menu.close"), + element: , + onClick: () => setShowMiniMenu(false), + }, + ].filter(Boolean) as MiniMenuItem[] + } focusBehaviour="trap" onBlur={() => setShowMiniMenu(false)} dataCy="template-card__menu"