diff --git a/app/actions/definitions/documents.tsx b/app/actions/definitions/documents.tsx
index 7dbb5a315..9bd3565bc 100644
--- a/app/actions/definitions/documents.tsx
+++ b/app/actions/definitions/documents.tsx
@@ -150,10 +150,11 @@ export const duplicateDocument = createAction({
* Pin a document to a collection. Pinned documents will be displayed at the top
* of the collection for all collection members to see.
*/
-export const pinDocument = createAction({
+export const pinDocumentToCollection = createAction({
name: ({ t }) => t("Pin to collection"),
section: DocumentSection,
icon: ,
+ iconInContextMenu: false,
visible: ({ activeCollectionId, activeDocumentId, stores }) => {
if (!activeDocumentId || !activeCollectionId) {
return false;
@@ -188,6 +189,7 @@ export const pinDocumentToHome = createAction({
name: ({ t }) => t("Pin to home"),
section: DocumentSection,
icon: ,
+ iconInContextMenu: false,
visible: ({ activeDocumentId, currentTeamId, stores }) => {
if (!currentTeamId || !activeDocumentId) {
return false;
@@ -214,6 +216,13 @@ export const pinDocumentToHome = createAction({
},
});
+export const pinDocument = createAction({
+ name: ({ t }) => t("Pin"),
+ section: DocumentSection,
+ icon: ,
+ children: [pinDocumentToCollection, pinDocumentToHome],
+});
+
export const printDocument = createAction({
name: ({ t, isContextMenu }) =>
isContextMenu ? t("Print") : t("Print document"),
@@ -319,6 +328,6 @@ export const rootDocumentActions = [
unstarDocument,
duplicateDocument,
printDocument,
- pinDocument,
+ pinDocumentToCollection,
pinDocumentToHome,
];
diff --git a/app/actions/index.ts b/app/actions/index.ts
index d8322681c..b1b25bd04 100644
--- a/app/actions/index.ts
+++ b/app/actions/index.ts
@@ -41,14 +41,17 @@ export function actionToMenuItem(
: undefined;
if (resolvedChildren) {
+ const items = resolvedChildren
+ .map((a) => actionToMenuItem(a, context))
+ .filter(Boolean)
+ .filter((a) => a.visible);
+
return {
type: "submenu",
title,
icon,
- items: resolvedChildren
- .map((a) => actionToMenuItem(a, context))
- .filter((a) => !!a),
- visible,
+ items,
+ visible: visible && items.length > 0,
};
}
diff --git a/app/menus/DocumentMenu.tsx b/app/menus/DocumentMenu.tsx
index 7bb615c5b..5c7d860d3 100644
--- a/app/menus/DocumentMenu.tsx
+++ b/app/menus/DocumentMenu.tsx
@@ -40,10 +40,7 @@ import Flex from "~/components/Flex";
import Modal from "~/components/Modal";
import Switch from "~/components/Switch";
import { actionToMenuItem } from "~/actions";
-import {
- pinDocument,
- pinDocumentToHome,
-} from "~/actions/definitions/documents";
+import { pinDocument } from "~/actions/definitions/documents";
import useActionContext from "~/hooks/useActionContext";
import useCurrentTeam from "~/hooks/useCurrentTeam";
import usePolicy from "~/hooks/usePolicy";
@@ -329,7 +326,6 @@ function DocumentMenu({
visible: !document.isStarred && !!can.star,
icon: ,
},
- actionToMenuItem(pinDocumentToHome, context),
actionToMenuItem(pinDocument, context),
{
type: "separator",