diff --git a/app/actions/definitions/collections.tsx b/app/actions/definitions/collections.tsx
index f995720a0..9d3085d9a 100644
--- a/app/actions/definitions/collections.tsx
+++ b/app/actions/definitions/collections.tsx
@@ -4,6 +4,7 @@ import {
PadlockIcon,
PlusIcon,
SearchIcon,
+ ShapesIcon,
StarredIcon,
TrashIcon,
UnstarredIcon,
@@ -21,7 +22,7 @@ import { createAction } from "~/actions";
import { CollectionSection } from "~/actions/sections";
import { setPersistedState } from "~/hooks/usePersistedState";
import history from "~/utils/history";
-import { searchPath } from "~/utils/routeHelpers";
+import { newTemplatePath, searchPath } from "~/utils/routeHelpers";
const ColorCollectionIcon = ({ collection }: { collection: Collection }) => (
@@ -220,6 +221,27 @@ export const deleteCollection = createAction({
},
});
+export const createTemplate = createAction({
+ name: ({ t }) => t("New template"),
+ analyticsName: "New template",
+ section: CollectionSection,
+ icon: ,
+ keywords: "new create template",
+ visible: ({ activeCollectionId, stores }) =>
+ !!(
+ !!activeCollectionId &&
+ stores.policies.abilities(activeCollectionId).update
+ ),
+ perform: ({ activeCollectionId, event }) => {
+ if (!activeCollectionId) {
+ return;
+ }
+ event?.preventDefault();
+ event?.stopPropagation();
+ history.push(newTemplatePath(activeCollectionId));
+ },
+});
+
export const rootCollectionActions = [
openCollection,
createCollection,
diff --git a/app/actions/definitions/documents.tsx b/app/actions/definitions/documents.tsx
index 14f29f84b..e8c7f939d 100644
--- a/app/actions/definitions/documents.tsx
+++ b/app/actions/definitions/documents.tsx
@@ -56,7 +56,6 @@ import {
documentPath,
urlify,
trashPath,
- newTemplatePath,
} from "~/utils/routeHelpers";
export const openDocument = createAction({
@@ -673,37 +672,34 @@ export const importDocument = createAction({
},
});
-export const createTemplate = createAction({
- name: ({ t, activeDocumentId }) =>
- activeDocumentId ? t("Templatize") : t("New template"),
+export const createTemplateFromDocument = createAction({
+ name: ({ t }) => t("Templatize"),
analyticsName: "Templatize document",
section: DocumentSection,
icon: ,
keywords: "new create template",
visible: ({ activeCollectionId, activeDocumentId, stores }) => {
- if (activeDocumentId) {
- const document = stores.documents.get(activeDocumentId);
- if (document?.isTemplate || !document?.isActive) {
- return false;
- }
+ const document = activeDocumentId
+ ? stores.documents.get(activeDocumentId)
+ : undefined;
+ if (document?.isTemplate || !document?.isActive) {
+ return false;
}
return !!(
!!activeCollectionId &&
stores.policies.abilities(activeCollectionId).update
);
},
- perform: ({ activeCollectionId, activeDocumentId, stores, t, event }) => {
+ perform: ({ activeDocumentId, stores, t, event }) => {
+ if (!activeDocumentId) {
+ return;
+ }
event?.preventDefault();
event?.stopPropagation();
-
- if (activeDocumentId) {
- stores.dialogs.openModal({
- title: t("Create template"),
- content: ,
- });
- } else if (activeCollectionId) {
- history.push(newTemplatePath(activeCollectionId));
- }
+ stores.dialogs.openModal({
+ title: t("Create template"),
+ content: ,
+ });
},
});
@@ -987,7 +983,7 @@ export const rootDocumentActions = [
openDocument,
archiveDocument,
createDocument,
- createTemplate,
+ createTemplateFromDocument,
deleteDocument,
importDocument,
downloadDocument,
diff --git a/app/menus/CollectionMenu.tsx b/app/menus/CollectionMenu.tsx
index 01ec77aac..debc1e138 100644
--- a/app/menus/CollectionMenu.tsx
+++ b/app/menus/CollectionMenu.tsx
@@ -27,8 +27,8 @@ import {
starCollection,
unstarCollection,
searchInCollection,
+ createTemplate,
} from "~/actions/definitions/collections";
-import { createTemplate } from "~/actions/definitions/documents";
import useActionContext from "~/hooks/useActionContext";
import useCurrentTeam from "~/hooks/useCurrentTeam";
import usePolicy from "~/hooks/usePolicy";
diff --git a/app/menus/DocumentMenu.tsx b/app/menus/DocumentMenu.tsx
index 382e58d40..87f666767 100644
--- a/app/menus/DocumentMenu.tsx
+++ b/app/menus/DocumentMenu.tsx
@@ -21,7 +21,7 @@ import Switch from "~/components/Switch";
import { actionToMenuItem } from "~/actions";
import {
pinDocument,
- createTemplate,
+ createTemplateFromDocument,
subscribeDocument,
unsubscribeDocument,
moveDocument,
@@ -284,7 +284,7 @@ function DocumentMenu({
},
actionToMenuItem(createNestedDocument, context),
actionToMenuItem(importDocument, context),
- actionToMenuItem(createTemplate, context),
+ actionToMenuItem(createTemplateFromDocument, context),
actionToMenuItem(duplicateDocument, context),
actionToMenuItem(publishDocument, context),
actionToMenuItem(unpublishDocument, context),
diff --git a/shared/i18n/locales/en_US/translation.json b/shared/i18n/locales/en_US/translation.json
index 75ce40c6b..1fea3f120 100644
--- a/shared/i18n/locales/en_US/translation.json
+++ b/shared/i18n/locales/en_US/translation.json
@@ -13,6 +13,7 @@
"Unstar": "Unstar",
"Delete": "Delete",
"Delete collection": "Delete collection",
+ "New template": "New template",
"Copy ID": "Copy ID",
"Clear IndexedDB cache": "Clear IndexedDB cache",
"IndexedDB cache cleared": "IndexedDB cache cleared",
@@ -60,7 +61,6 @@
"Print document": "Print document",
"Import document": "Import document",
"Templatize": "Templatize",
- "New template": "New template",
"Create template": "Create template",
"Open random document": "Open random document",
"Search documents for \"{{searchQuery}}\"": "Search documents for \"{{searchQuery}}\"",