From 16399719a01c3959a5e4d6a5c3e6017eaf822300 Mon Sep 17 00:00:00 2001 From: Giacomo Lombardi Date: Mon, 12 Oct 2020 11:59:03 +0200 Subject: [PATCH] feat(editor-preview): allow to disable editor preview for all collections (#4423) --- .../src/actions/__tests__/config.spec.js | 28 +++++++++++++++++++ .../netlify-cms-core/src/actions/config.js | 4 +++ .../src/constants/configSchema.js | 6 ++++ website/content/docs/configuration-options.md | 2 ++ 4 files changed, 40 insertions(+) diff --git a/packages/netlify-cms-core/src/actions/__tests__/config.spec.js b/packages/netlify-cms-core/src/actions/__tests__/config.spec.js index 10cacd69..2267149c 100644 --- a/packages/netlify-cms-core/src/actions/__tests__/config.spec.js +++ b/packages/netlify-cms-core/src/actions/__tests__/config.spec.js @@ -419,6 +419,34 @@ describe('config', () => { ).toEqual(false); }); }); + + describe('editor preview', () => { + it('should set editor preview honoring global config before and specific config after', () => { + const config = applyDefaults( + fromJS({ + editor: { + preview: false, + }, + collections: [ + { + fields: [{ name: 'title' }], + folder: 'foo', + }, + { + editor: { + preview: true, + }, + fields: [{ name: 'title' }], + folder: 'bar', + }, + ], + }), + ); + + expect(config.getIn(['collections', 0, 'editor', 'preview'])).toEqual(false); + expect(config.getIn(['collections', 1, 'editor', 'preview'])).toEqual(true); + }); + }); }); test('should convert camel case to snake case', () => { diff --git a/packages/netlify-cms-core/src/actions/config.js b/packages/netlify-cms-core/src/actions/config.js index 2ea70b60..4769ae1e 100644 --- a/packages/netlify-cms-core/src/actions/config.js +++ b/packages/netlify-cms-core/src/actions/config.js @@ -267,6 +267,10 @@ export function applyDefaults(config) { ); } + if (map.hasIn(['editor', 'preview']) && !collection.has('editor')) { + collection = collection.setIn(['editor', 'preview'], map.getIn(['editor', 'preview'])); + } + return collection; }), ); diff --git a/packages/netlify-cms-core/src/constants/configSchema.js b/packages/netlify-cms-core/src/constants/configSchema.js index 7479ea5c..23417465 100644 --- a/packages/netlify-cms-core/src/constants/configSchema.js +++ b/packages/netlify-cms-core/src/constants/configSchema.js @@ -284,6 +284,12 @@ const getConfigSchema = () => ({ }, uniqueItemProperties: ['name'], }, + editor: { + type: 'object', + properties: { + preview: { type: 'boolean' }, + }, + }, }, required: ['backend', 'collections'], anyOf: [{ required: ['media_folder'] }, { required: ['media_library'] }], diff --git a/website/content/docs/configuration-options.md b/website/content/docs/configuration-options.md index 042eb9f6..51b73644 100644 --- a/website/content/docs/configuration-options.md +++ b/website/content/docs/configuration-options.md @@ -365,6 +365,8 @@ This setting changes options for the editor view of the collection. It has one o preview: false ``` +**Note**: Setting this as a top level configuration will set the default for all collections + ### `summary` This setting allows the customization of the collection list view. Similar to the `slug` field, a string with templates can be used to include values of different fields, e.g. `{{title}}`. This option over-rides the default of `title` field and `identifier_field`.