From 7d51aa7de7803cc16463fd57bbbc347bb4b1dbd0 Mon Sep 17 00:00:00 2001 From: Miro Yovchev <2827783+myovchev@users.noreply.github.com> Date: Mon, 28 Sep 2026 18:45:43 +0300 Subject: [PATCH] No tabs when not versions; better first version message --- .../ui/apos/components/AposDocVersions.vue | 2 -- .../ui/apos/components/AposDocVersionsChanges.vue | 8 ++++---- .../ui/apos/composables/useDocVersionTabs.js | 11 +++++------ .../modules/@apostrophecms/i18n/i18n/en.json | 2 +- 4 files changed, 10 insertions(+), 13 deletions(-) diff --git a/packages/apostrophe/modules/@apostrophecms/document-versions/ui/apos/components/AposDocVersions.vue b/packages/apostrophe/modules/@apostrophecms/document-versions/ui/apos/components/AposDocVersions.vue index f34c03a4c2..de64fa601e 100644 --- a/packages/apostrophe/modules/@apostrophecms/document-versions/ui/apos/components/AposDocVersions.vue +++ b/packages/apostrophe/modules/@apostrophecms/document-versions/ui/apos/components/AposDocVersions.vue @@ -480,8 +480,6 @@ onMounted(async () => { } if (versions.value.length) { selectVersion(versions.value[0]); - } else { - evaluateConditions(props.doc); } }); diff --git a/packages/apostrophe/modules/@apostrophecms/document-versions/ui/apos/components/AposDocVersionsChanges.vue b/packages/apostrophe/modules/@apostrophecms/document-versions/ui/apos/components/AposDocVersionsChanges.vue index 0fd5999b89..b22b8aec46 100644 --- a/packages/apostrophe/modules/@apostrophecms/document-versions/ui/apos/components/AposDocVersionsChanges.vue +++ b/packages/apostrophe/modules/@apostrophecms/document-versions/ui/apos/components/AposDocVersionsChanges.vue @@ -299,16 +299,16 @@ function matches(row) { return changeGroups.matchesFilter(row, filter.value); } -// What an empty list says: a restore and a first version are baselines, -// while a version compared with the one before it and left with nothing -// ended where that one did +// What an empty list says: a restore is a baseline, a first version has +// nothing before it, and a version compared with the one before it and left +// with nothing ended where that one did const emptyMessage = computed(() => { if (props.version?.restoredFrom) { return 'apostrophe:versionRestoredBaseline'; } return props.compared ? 'apostrophe:versionUnchanged' - : 'apostrophe:versionNoChanges'; + : 'apostrophe:versionFirst'; }); const shownRows = computed(() => props.rows.filter(matches)); diff --git a/packages/apostrophe/modules/@apostrophecms/document-versions/ui/apos/composables/useDocVersionTabs.js b/packages/apostrophe/modules/@apostrophecms/document-versions/ui/apos/composables/useDocVersionTabs.js index ae8f3e22b5..646b2443a1 100644 --- a/packages/apostrophe/modules/@apostrophecms/document-versions/ui/apos/composables/useDocVersionTabs.js +++ b/packages/apostrophe/modules/@apostrophecms/document-versions/ui/apos/composables/useDocVersionTabs.js @@ -12,7 +12,7 @@ import { * The tabs of the versions modal: the read-only schema of the document's * type, grouped as the document editor groups it, with the conditional * fields evaluated against the version shown. A tab none of whose fields - * renders is not visible. + * renders is not visible, and there are no tabs until a version is shown. * * @param {object} options * @param {import('vue').Ref} options.moduleOptions @@ -22,7 +22,7 @@ import { * @param {object} options.doc * The document the modal opened for * @param {import('vue').Ref<{ data: object }>} options.docFields - * The version shown + * The version shown, `data` empty until one is */ export function useDocVersionTabs({ moduleOptions, unsupported, doc, docFields @@ -51,11 +51,10 @@ export function useDocVersionTabs({ ); } - // With no version to show, the tabs follow the live document - function evaluateConditions(data = docFields.value.data) { + function evaluateConditions() { conditionalFields.value = getConditionalFields( schema.value, - data, + docFields.value.data, externalConditionsResults.value ); } @@ -93,7 +92,7 @@ export function useDocVersionTabs({ } const versionTabs = computed(() => { - if (unsupported.value) { + if (unsupported.value || !docFields.value.data.type) { return []; } const tabs = Object.entries(groups.value) diff --git a/packages/apostrophe/modules/@apostrophecms/i18n/i18n/en.json b/packages/apostrophe/modules/@apostrophecms/i18n/i18n/en.json index 6d1fde94c3..10ab48eeb3 100644 --- a/packages/apostrophe/modules/@apostrophecms/i18n/i18n/en.json +++ b/packages/apostrophe/modules/@apostrophecms/i18n/i18n/en.json @@ -796,6 +796,7 @@ "versionFailDocPermsMessage": "Insufficient permissions.", "versionFailVersionLoadMessage": "Failed to load the requested Document Version.", "versionFailVersionRestoreMessage": "Unable to restore the requested Document Version.", + "versionFirst": "This is the first recorded version. There is no earlier version to compare it with.", "versionFilterChanges": "Filter changes", "versionFilterShowing": "Filter changes, showing {{ count }} edit", "versionFilterShowing_plural": "Filter changes, showing {{ count }} edits", @@ -826,7 +827,6 @@ "versionNavPosition": "{{ current }} of {{ total }}", "versionNavPrevious": "Previous", "versionNavShow": "Show in the document", - "versionNoChanges": "No changes recorded for this version.", "versionNoChangesMatch": "No changes match these filters.", "versionOpensNewTab": "Opens in a new tab", "versionOrderChanged": "Order changed",