{"componentChunkName":"component---src-templates-doc-page-js","path":"/docs/beta-features/","result":{"data":{"page":{"fields":{"path":"docs/beta-features.md"},"frontmatter":{"title":"Beta Features!","group":"reference"},"html":"<p>We run new functionality in an open beta format from time to time. That means that this functionality is totally available for use, and we <em>think</em> it might be ready for primetime, but it could break or change without notice.</p>\n<p><strong>Use these features at your own risk.</strong></p>\n<h2 id=\"working-with-a-local-git-repository\" style=\"position:relative;\"><a href=\"#working-with-a-local-git-repository\" aria-label=\"working with a local git repository permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Working with a Local Git Repository</h2>\n<p><strong><em>added in netlify-cms@2.10.17 / netlify-cms-app@2.11.14</em></strong></p>\n<p>You can connect Netlify CMS to a local Git repository, instead of working with a live repo.</p>\n<ol>\n<li>Navigate to a local Git repository configured with the CMS.</li>\n<li>Run <code>npx netlify-cms-proxy-server</code> from the root directory of the above repository.</li>\n<li>Add the top-level property <code>local_backend</code> configuration to your <code>config.yml</code>:</li>\n</ol>\n<div class=\"gatsby-highlight\" data-language=\"yaml\"><pre class=\"language-yaml\"><code class=\"language-yaml\"><span class=\"token key atrule\">backend</span><span class=\"token punctuation\">:</span>\n  <span class=\"token key atrule\">name</span><span class=\"token punctuation\">:</span> git<span class=\"token punctuation\">-</span>gateway\n\n<span class=\"token comment\"># when using the default proxy server port</span>\n<span class=\"token key atrule\">local_backend</span><span class=\"token punctuation\">:</span> <span class=\"token boolean important\">true</span>\n\n<span class=\"token comment\"># when using a custom proxy server port</span>\n<span class=\"token key atrule\">local_backend</span><span class=\"token punctuation\">:</span>\n  <span class=\"token key atrule\">url</span><span class=\"token punctuation\">:</span> http<span class=\"token punctuation\">:</span>//localhost<span class=\"token punctuation\">:</span>8082/api/v1</code></pre></div>\n<ol start=\"4\">\n<li>Start your local development server (e.g. run <code>gatsby develop</code>).</li>\n</ol>\n<p><strong>Note:</strong> <code>netlify-cms-proxy-server</code> runs an unauthenticated express server. As any client can send requests to the server, it should only be used for local development.</p>\n<h2 id=\"gitlab-and-bitbucket-editorial-workflow-support\" style=\"position:relative;\"><a href=\"#gitlab-and-bitbucket-editorial-workflow-support\" aria-label=\"gitlab and bitbucket editorial workflow support permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>GitLab and BitBucket Editorial Workflow Support</h2>\n<p><strong><em>added in netlify-cms@2.10.6 / netlify-cms-app@2.11.3</em></strong></p>\n<p>You can enable the Editorial Workflow with the following line in your Netlify CMS <code>config.yml</code> file:</p>\n<div class=\"gatsby-highlight\" data-language=\"yaml\"><pre class=\"language-yaml\"><code class=\"language-yaml\"><span class=\"token key atrule\">publish_mode</span><span class=\"token punctuation\">:</span> editorial_workflow</code></pre></div>\n<p>In order to track unpublished entries statuses the GitLab implementation uses merge requests labels and the BitBucket implementation uses pull requests comments.</p>\n<h2 id=\"github-graphql-api\" style=\"position:relative;\"><a href=\"#github-graphql-api\" aria-label=\"github graphql api permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>GitHub GraphQL API</h2>\n<p>Experimental support for GitHub's <a href=\"https://developer.github.com/v4/\" target=\"_blank\" rel=\"noopener noreferrer\">GraphQL API</a> is now available for the GitHub backend.</p>\n<p><strong>Note: not currently compatible with Git Gateway.</strong></p>\n<p>For many queries, GraphQL allows data to be retrieved using less individual API requests compared to a REST API. GitHub's GraphQL API still does not support all mutations necessary to completely replace their REST API, so this feature only calls the new GraphQL API where possible.</p>\n<p>You can use the GraphQL API for the GitHub backend by setting <code>backend.use_graphql</code> to <code>true</code> in your CMS config:</p>\n<div class=\"gatsby-highlight\" data-language=\"yml\"><pre class=\"language-yml\"><code class=\"language-yml\"><span class=\"token key atrule\">backend</span><span class=\"token punctuation\">:</span>\n  <span class=\"token key atrule\">name</span><span class=\"token punctuation\">:</span> github\n  <span class=\"token key atrule\">repo</span><span class=\"token punctuation\">:</span> owner/repo <span class=\"token comment\"># replace this with your repo info</span>\n  <span class=\"token key atrule\">use_graphql</span><span class=\"token punctuation\">:</span> <span class=\"token boolean important\">true</span></code></pre></div>\n<p>Learn more about the benefits of GraphQL in the <a href=\"https://graphql.org\" target=\"_blank\" rel=\"noopener noreferrer\">GraphQL docs</a>.</p>\n<h2 id=\"open-authoring\" style=\"position:relative;\"><a href=\"#open-authoring\" aria-label=\"open authoring permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Open Authoring</h2>\n<p>When using the <a href=\"/docs/github-backend\">GitHub backend</a>, you can use Netlify CMS to accept contributions from GitHub users without giving them access to your repository. When they make changes in the CMS, the CMS forks your repository for them behind the scenes, and all the changes are made to the fork. When the contributor is ready to submit their changes, they can set their draft as ready for review in the CMS. This triggers a pull request to your repository, which you can merge using the GitHub UI.</p>\n<p>At the same time, any contributors who <em>do</em> have write access to the repository can continue to use Netlify CMS normally.</p>\n<p>More details and setup instructions can be found on <a href=\"/docs/open-authoring\">the Open Authoring docs page</a>.</p>\n<h2 id=\"folder-collections-path\" style=\"position:relative;\"><a href=\"#folder-collections-path\" aria-label=\"folder collections path permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Folder Collections Path</h2>\n<p>By default the CMS stores folder collection content under the folder specified in the collection setting.</p>\n<p>For example configuring <code>folder: posts</code> for a collection will save the content under <code>posts/post-title.md</code>.</p>\n<p>You can now specify an additional <code>path</code> template (similar to the <code>slug</code> template) to control the content destination.</p>\n<p>This allows saving content in subfolders, e.g. configuring <code>path: '{{year}}/{{slug}}'</code> will save the content under <code>posts/2019/post-title.md</code>.</p>\n<h2 id=\"folder-collections-media-and-public-folder\" style=\"position:relative;\"><a href=\"#folder-collections-media-and-public-folder\" aria-label=\"folder collections media and public folder permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Folder Collections Media and Public Folder</h2>\n<p>By default the CMS stores media files for all collections under a global <code>media_folder</code> directory as specified in the configuration.</p>\n<p>When using the global <code>media_folder</code> directory any entry field that points to a media file will use the absolute path to the published file as designated by the <code>public_folder</code> configuration.</p>\n<p>For example configuring:</p>\n<div class=\"gatsby-highlight\" data-language=\"yaml\"><pre class=\"language-yaml\"><code class=\"language-yaml\"><span class=\"token key atrule\">media_folder</span><span class=\"token punctuation\">:</span> static/media\n<span class=\"token key atrule\">public_folder</span><span class=\"token punctuation\">:</span> /media</code></pre></div>\n<p>And saving an entry with an image named <code>image.png</code> will result in the image being saved under <code>static/media/image.png</code> and relevant entry fields populated with the value of <code>/media/image.png</code>.</p>\n<p>Some static site generators (e.g. Gatsby) work best when using relative image paths.</p>\n<p>This can now be achieved using a per collection <code>media_folder</code> configuration which specifies a relative media folder for the collection.</p>\n<p>For example, the following configuration will result in media files being saved in the same directory as the entry, and the image field being populated with the relative path to the image.</p>\n<div class=\"gatsby-highlight\" data-language=\"yaml\"><pre class=\"language-yaml\"><code class=\"language-yaml\"><span class=\"token key atrule\">media_folder</span><span class=\"token punctuation\">:</span> static/media\n<span class=\"token key atrule\">public_folder</span><span class=\"token punctuation\">:</span> /media\n<span class=\"token key atrule\">collections</span><span class=\"token punctuation\">:</span>\n  <span class=\"token punctuation\">-</span> <span class=\"token key atrule\">name</span><span class=\"token punctuation\">:</span> posts\n    <span class=\"token key atrule\">label</span><span class=\"token punctuation\">:</span> Posts\n    <span class=\"token key atrule\">label_singular</span><span class=\"token punctuation\">:</span> <span class=\"token string\">'Post'</span>\n    <span class=\"token key atrule\">folder</span><span class=\"token punctuation\">:</span> content/posts\n    <span class=\"token key atrule\">path</span><span class=\"token punctuation\">:</span> <span class=\"token string\">'{{slug}}/index'</span>\n    <span class=\"token key atrule\">media_folder</span><span class=\"token punctuation\">:</span> <span class=\"token string\">''</span>\n    <span class=\"token key atrule\">public_folder</span><span class=\"token punctuation\">:</span> <span class=\"token string\">''</span>\n    <span class=\"token key atrule\">fields</span><span class=\"token punctuation\">:</span>\n      <span class=\"token punctuation\">-</span> <span class=\"token key atrule\">label</span><span class=\"token punctuation\">:</span> Title\n        <span class=\"token key atrule\">name</span><span class=\"token punctuation\">:</span> title\n        <span class=\"token key atrule\">widget</span><span class=\"token punctuation\">:</span> string\n      <span class=\"token punctuation\">-</span> <span class=\"token key atrule\">label</span><span class=\"token punctuation\">:</span> <span class=\"token string\">'Cover Image'</span>\n        <span class=\"token key atrule\">name</span><span class=\"token punctuation\">:</span> <span class=\"token string\">'image'</span>\n        <span class=\"token key atrule\">widget</span><span class=\"token punctuation\">:</span> <span class=\"token string\">'image'</span></code></pre></div>\n<p>More specifically, saving an entry with a title of <code>example post</code> with an image named <code>image.png</code> will result in a directory structure of:</p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">content\n  posts\n    example-post\n      index.md\n      image.png</code></pre></div>\n<p>And for the image field being populated with a value of <code>image.png</code>.</p>\n<p><strong>Note: When specifying a <code>path</code> on a folder collection, <code>media_folder</code> defaults to an empty string.</strong></p>\n<p><strong>Available template tags:</strong></p>\n<p>Supports all of the <a href=\"/docs/configuration-options#slug\"><code>slug</code> templates</a> and:</p>\n<ul>\n<li><code>{{filename}}</code> The file name without the extension part.</li>\n<li><code>{{extension}}</code> The file extension.</li>\n<li><code>{{media_folder}}</code> The global <code>media_folder</code>.</li>\n<li><code>{{public_folder}}</code> The global <code>public_folder</code>.</li>\n</ul>\n<h2 id=\"list-widget-variable-types\" style=\"position:relative;\"><a href=\"#list-widget-variable-types\" aria-label=\"list widget variable types permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>List Widget: Variable Types</h2>\n<p>Before this feature, the <a href=\"/docs/widgets/#list\">list widget</a> allowed a set of fields to be repeated, but every list item had the same set of fields available. With variable types, multiple named sets of fields can be defined, which opens the door to highly flexible content authoring (even page building) in Netlify CMS.</p>\n<p><strong>Note: this feature does not yet support default previews and requires <a href=\"/docs/customization#registerpreviewtemplate\">registering a preview template</a> in order to show up in the preview pane.</strong></p>\n<p>To use variable types in the list widget, update your field configuration as follows:</p>\n<ol>\n<li>Instead of defining your list fields under <code>fields</code> or <code>field</code>, define them under <code>types</code>. Similar to <code>fields</code>, <code>types</code> must be an array of field definition objects.</li>\n<li>Each field definition under <code>types</code> must use the <code>object</code> widget (this is the default value for\n<code>widget</code>).</li>\n</ol>\n<h3 id=\"additional-list-widget-options\" style=\"position:relative;\"><a href=\"#additional-list-widget-options\" aria-label=\"additional list widget options permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Additional list widget options</h3>\n<ul>\n<li><code>types</code>: a nested list of object widgets. All widgets must be of type <code>object</code>. Every object widget may define different set of fields.</li>\n<li><code>typeKey</code>: the name of the field that will be added to every item in list representing the name of the object widget that item belongs to. Ignored if <code>types</code> is not defined. Default is <code>type</code>.</li>\n</ul>\n<h3 id=\"example-configuration\" style=\"position:relative;\"><a href=\"#example-configuration\" aria-label=\"example configuration permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Example Configuration</h3>\n<p>The example configuration below imagines a scenario where the editor can add two \"types\" of content,\neither a \"carousel\" or a \"spotlight\". Each type has a unique name and set of fields.</p>\n<div class=\"gatsby-highlight\" data-language=\"yaml\"><pre class=\"language-yaml\"><code class=\"language-yaml\"><span class=\"token punctuation\">-</span> <span class=\"token key atrule\">label</span><span class=\"token punctuation\">:</span> <span class=\"token string\">'Home Section'</span>\n  <span class=\"token key atrule\">name</span><span class=\"token punctuation\">:</span> <span class=\"token string\">'sections'</span>\n  <span class=\"token key atrule\">widget</span><span class=\"token punctuation\">:</span> <span class=\"token string\">'list'</span>\n  <span class=\"token key atrule\">types</span><span class=\"token punctuation\">:</span>\n    <span class=\"token punctuation\">-</span> <span class=\"token key atrule\">label</span><span class=\"token punctuation\">:</span> <span class=\"token string\">'Carousel'</span>\n      <span class=\"token key atrule\">name</span><span class=\"token punctuation\">:</span> <span class=\"token string\">'carousel'</span>\n      <span class=\"token key atrule\">widget</span><span class=\"token punctuation\">:</span> object\n      <span class=\"token key atrule\">fields</span><span class=\"token punctuation\">:</span>\n        <span class=\"token punctuation\">-</span> <span class=\"token punctuation\">{</span> <span class=\"token key atrule\">label</span><span class=\"token punctuation\">:</span> Header<span class=\"token punctuation\">,</span> <span class=\"token key atrule\">name</span><span class=\"token punctuation\">:</span> header<span class=\"token punctuation\">,</span> <span class=\"token key atrule\">widget</span><span class=\"token punctuation\">:</span> string<span class=\"token punctuation\">,</span> <span class=\"token key atrule\">default</span><span class=\"token punctuation\">:</span> <span class=\"token string\">'Image Gallery'</span> <span class=\"token punctuation\">}</span>\n        <span class=\"token punctuation\">-</span> <span class=\"token punctuation\">{</span> <span class=\"token key atrule\">label</span><span class=\"token punctuation\">:</span> Template<span class=\"token punctuation\">,</span> <span class=\"token key atrule\">name</span><span class=\"token punctuation\">:</span> template<span class=\"token punctuation\">,</span> <span class=\"token key atrule\">widget</span><span class=\"token punctuation\">:</span> string<span class=\"token punctuation\">,</span> <span class=\"token key atrule\">default</span><span class=\"token punctuation\">:</span> <span class=\"token string\">'carousel.html'</span> <span class=\"token punctuation\">}</span>\n        <span class=\"token punctuation\">-</span> <span class=\"token key atrule\">label</span><span class=\"token punctuation\">:</span> Images\n          <span class=\"token key atrule\">name</span><span class=\"token punctuation\">:</span> images\n          <span class=\"token key atrule\">widget</span><span class=\"token punctuation\">:</span> list\n          <span class=\"token key atrule\">field</span><span class=\"token punctuation\">:</span> <span class=\"token punctuation\">{</span> <span class=\"token key atrule\">label</span><span class=\"token punctuation\">:</span> Image<span class=\"token punctuation\">,</span> <span class=\"token key atrule\">name</span><span class=\"token punctuation\">:</span> image<span class=\"token punctuation\">,</span> <span class=\"token key atrule\">widget</span><span class=\"token punctuation\">:</span> image <span class=\"token punctuation\">}</span>\n    <span class=\"token punctuation\">-</span> <span class=\"token key atrule\">label</span><span class=\"token punctuation\">:</span> <span class=\"token string\">'Spotlight'</span>\n      <span class=\"token key atrule\">name</span><span class=\"token punctuation\">:</span> <span class=\"token string\">'spotlight'</span>\n      <span class=\"token key atrule\">widget</span><span class=\"token punctuation\">:</span> object\n      <span class=\"token key atrule\">fields</span><span class=\"token punctuation\">:</span>\n        <span class=\"token punctuation\">-</span> <span class=\"token punctuation\">{</span> <span class=\"token key atrule\">label</span><span class=\"token punctuation\">:</span> Header<span class=\"token punctuation\">,</span> <span class=\"token key atrule\">name</span><span class=\"token punctuation\">:</span> header<span class=\"token punctuation\">,</span> <span class=\"token key atrule\">widget</span><span class=\"token punctuation\">:</span> string<span class=\"token punctuation\">,</span> <span class=\"token key atrule\">default</span><span class=\"token punctuation\">:</span> <span class=\"token string\">'Spotlight'</span> <span class=\"token punctuation\">}</span>\n        <span class=\"token punctuation\">-</span> <span class=\"token punctuation\">{</span> <span class=\"token key atrule\">label</span><span class=\"token punctuation\">:</span> Template<span class=\"token punctuation\">,</span> <span class=\"token key atrule\">name</span><span class=\"token punctuation\">:</span> template<span class=\"token punctuation\">,</span> <span class=\"token key atrule\">widget</span><span class=\"token punctuation\">:</span> string<span class=\"token punctuation\">,</span> <span class=\"token key atrule\">default</span><span class=\"token punctuation\">:</span> <span class=\"token string\">'spotlight.html'</span> <span class=\"token punctuation\">}</span>\n        <span class=\"token punctuation\">-</span> <span class=\"token punctuation\">{</span> <span class=\"token key atrule\">label</span><span class=\"token punctuation\">:</span> Text<span class=\"token punctuation\">,</span> <span class=\"token key atrule\">name</span><span class=\"token punctuation\">:</span> text<span class=\"token punctuation\">,</span> <span class=\"token key atrule\">widget</span><span class=\"token punctuation\">:</span> text<span class=\"token punctuation\">,</span> <span class=\"token key atrule\">default</span><span class=\"token punctuation\">:</span> <span class=\"token string\">'Hello World'</span> <span class=\"token punctuation\">}</span></code></pre></div>\n<h3 id=\"example-output\" style=\"position:relative;\"><a href=\"#example-output\" aria-label=\"example output permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Example Output</h3>\n<p>The output for the list widget will be an array of objects, and each object will have a <code>type</code> key\nwith the name of the type used for the list item. The <code>type</code> key name can be customized via the\n<code>typeKey</code> property in the list configuration.</p>\n<p>If the above example configuration were used to create a carousel, a spotlight, and another\ncarousel, the output could look like this:</p>\n<div class=\"gatsby-highlight\" data-language=\"yaml\"><pre class=\"language-yaml\"><code class=\"language-yaml\"><span class=\"token key atrule\">title</span><span class=\"token punctuation\">:</span> Home\n<span class=\"token key atrule\">sections</span><span class=\"token punctuation\">:</span>\n  <span class=\"token punctuation\">-</span> <span class=\"token key atrule\">type</span><span class=\"token punctuation\">:</span> carousel\n    <span class=\"token key atrule\">header</span><span class=\"token punctuation\">:</span> Image Gallery\n    <span class=\"token key atrule\">template</span><span class=\"token punctuation\">:</span> carousel.html\n    <span class=\"token key atrule\">images</span><span class=\"token punctuation\">:</span>\n      <span class=\"token punctuation\">-</span> images/image01.png\n      <span class=\"token punctuation\">-</span> images/image02.png\n      <span class=\"token punctuation\">-</span> images/image03.png\n  <span class=\"token punctuation\">-</span> <span class=\"token key atrule\">type</span><span class=\"token punctuation\">:</span> spotlight\n    <span class=\"token key atrule\">header</span><span class=\"token punctuation\">:</span> Spotlight\n    <span class=\"token key atrule\">template</span><span class=\"token punctuation\">:</span> spotlight.html\n    <span class=\"token key atrule\">text</span><span class=\"token punctuation\">:</span> Hello World\n  <span class=\"token punctuation\">-</span> <span class=\"token key atrule\">type</span><span class=\"token punctuation\">:</span> carousel\n    <span class=\"token key atrule\">header</span><span class=\"token punctuation\">:</span> Image Gallery\n    <span class=\"token key atrule\">template</span><span class=\"token punctuation\">:</span> carousel.html\n    <span class=\"token key atrule\">images</span><span class=\"token punctuation\">:</span>\n      <span class=\"token punctuation\">-</span> images/image04.png\n      <span class=\"token punctuation\">-</span> images/image05.png\n      <span class=\"token punctuation\">-</span> images/image06.png</code></pre></div>\n<h2 id=\"custom-mount-element\" style=\"position:relative;\"><a href=\"#custom-mount-element\" aria-label=\"custom mount element permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Custom Mount Element</h2>\n<p>Netlify CMS always creates its own DOM element for mounting the application, which means it always takes over the entire page, and is generally inflexible if you're trying to do something creative, like injecting it into a shared context.</p>\n<p>You can now provide your own element for Netlify CMS to mount in by setting the target element's ID as <code>nc-root</code>. If Netlify CMS finds an element with this ID during initialization, it will mount within that element instead of creating its own.</p>\n<h2 id=\"manual-initialization\" style=\"position:relative;\"><a href=\"#manual-initialization\" aria-label=\"manual initialization permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Manual Initialization</h2>\n<p>Netlify CMS can now be manually initialized, rather than automatically loading up the moment you import it. The whole point of this at the moment is to inject configuration into Netlify CMS before it loads, bypassing need for an actual Netlify CMS <code>config.yml</code>. This is important, for example, when creating tight integrations with static site generators.</p>\n<p>Injecting config is technically already possible by setting <code>window.CMS_CONFIG</code> before importing/requiring/running Netlify CMS, but most projects are modular and don't want to use globals, plus <code>window.CMS_CONFIG</code> is an internal, not technically supported, and provides no validation.</p>\n<p>Assuming you have the netlify-cms package installed to your project, manual initialization works like this:</p>\n<div class=\"gatsby-highlight\" data-language=\"js\"><pre class=\"language-js\"><code class=\"language-js\"><span class=\"token comment\">// This global flag enables manual initialization.</span>\nwindow<span class=\"token punctuation\">.</span><span class=\"token constant\">CMS_MANUAL_INIT</span> <span class=\"token operator\">=</span> <span class=\"token boolean\">true</span>\n<span class=\"token comment\">// Usage with import from npm package</span>\n<span class=\"token keyword\">import</span> <span class=\"token constant\">CMS</span><span class=\"token punctuation\">,</span> <span class=\"token punctuation\">{</span> init <span class=\"token punctuation\">}</span> <span class=\"token keyword\">from</span> <span class=\"token string\">'netlify-cms'</span>\n<span class=\"token comment\">// Usage with script tag</span>\n<span class=\"token keyword\">const</span> <span class=\"token punctuation\">{</span> <span class=\"token constant\">CMS</span><span class=\"token punctuation\">,</span> initCMS<span class=\"token operator\">:</span> init <span class=\"token punctuation\">}</span> <span class=\"token operator\">=</span> window\n<span class=\"token comment\">/**\n * Initialize without passing in config - equivalent to just importing\n * Netlify CMS the old way.\n */</span>\n<span class=\"token function\">init</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span>\n<span class=\"token comment\">/**\n * Optionally pass in a config object. This object will be merged into\n * `config.yml` if it exists, and any portion that conflicts with\n * `config.yml` will be overwritten. Arrays will be replaced during merge,\n * not concatenated.\n *\n * For example, the code below contains an incomplete config, but using it,\n * your `config.yml` can be missing its backend property, allowing you\n * to set this property at runtime.\n */</span>\n<span class=\"token function\">init</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">{</span>\n  config<span class=\"token operator\">:</span> <span class=\"token punctuation\">{</span>\n    backend<span class=\"token operator\">:</span> <span class=\"token punctuation\">{</span>\n      name<span class=\"token operator\">:</span> <span class=\"token string\">'git-gateway'</span><span class=\"token punctuation\">,</span>\n    <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n  <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n<span class=\"token punctuation\">}</span><span class=\"token punctuation\">)</span>\n<span class=\"token comment\">/**\n * Optionally pass in a complete config object and set a flag\n *  (`load_config_file: false`) to ignore the `config.yml`.\n *\n * For example, the code below contains a complete config. The\n * `config.yml` will be ignored when setting `load_config_file` to false.\n * It is not required if the `config.yml` file is missing to set\n * `load_config_file`, but will improve performance and avoid a load error.\n */</span>\n<span class=\"token function\">init</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">{</span>\n  config<span class=\"token operator\">:</span> <span class=\"token punctuation\">{</span>\n    backend<span class=\"token operator\">:</span> <span class=\"token punctuation\">{</span>\n      name<span class=\"token operator\">:</span> <span class=\"token string\">'git-gateway'</span><span class=\"token punctuation\">,</span>\n    <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n    load_config_file<span class=\"token operator\">:</span> <span class=\"token boolean\">false</span><span class=\"token punctuation\">,</span>\n    media_folder<span class=\"token operator\">:</span> <span class=\"token string\">\"static/images/uploads\"</span><span class=\"token punctuation\">,</span>\n    public_folder<span class=\"token operator\">:</span> <span class=\"token string\">\"/images/uploads\"</span><span class=\"token punctuation\">,</span>\n    collections<span class=\"token operator\">:</span> <span class=\"token punctuation\">[</span>\n      <span class=\"token punctuation\">{</span> label<span class=\"token operator\">:</span> <span class=\"token string\">\"Blog\"</span><span class=\"token punctuation\">,</span> name<span class=\"token operator\">:</span> <span class=\"token string\">\"blog\"</span><span class=\"token punctuation\">,</span> folder<span class=\"token operator\">:</span> <span class=\"token string\">\"_posts/blog\"</span><span class=\"token punctuation\">,</span> create<span class=\"token operator\">:</span> <span class=\"token boolean\">true</span><span class=\"token punctuation\">,</span> fields<span class=\"token operator\">:</span> <span class=\"token punctuation\">[</span>\n        <span class=\"token punctuation\">{</span> label<span class=\"token operator\">:</span> <span class=\"token string\">\"Title\"</span><span class=\"token punctuation\">,</span> name<span class=\"token operator\">:</span> <span class=\"token string\">\"title\"</span><span class=\"token punctuation\">,</span> widget<span class=\"token operator\">:</span> <span class=\"token string\">\"string\"</span> <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n        <span class=\"token punctuation\">{</span> label<span class=\"token operator\">:</span> <span class=\"token string\">\"Publish Date\"</span><span class=\"token punctuation\">,</span> name<span class=\"token operator\">:</span> <span class=\"token string\">\"date\"</span><span class=\"token punctuation\">,</span> widget<span class=\"token operator\">:</span> <span class=\"token string\">\"datetime\"</span> <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n        <span class=\"token punctuation\">{</span> label<span class=\"token operator\">:</span> <span class=\"token string\">\"Featured Image\"</span><span class=\"token punctuation\">,</span> name<span class=\"token operator\">:</span> <span class=\"token string\">\"thumbnail\"</span><span class=\"token punctuation\">,</span> widget<span class=\"token operator\">:</span> <span class=\"token string\">\"image\"</span> <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n        <span class=\"token punctuation\">{</span> label<span class=\"token operator\">:</span> <span class=\"token string\">\"Body\"</span><span class=\"token punctuation\">,</span> name<span class=\"token operator\">:</span> <span class=\"token string\">\"body\"</span><span class=\"token punctuation\">,</span> widget<span class=\"token operator\">:</span> <span class=\"token string\">\"markdown\"</span> <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n      <span class=\"token punctuation\">]</span><span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n    <span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span>\n  <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n<span class=\"token punctuation\">}</span><span class=\"token punctuation\">)</span>\n<span class=\"token comment\">// The registry works as expected, and can be used before or after init.</span>\n<span class=\"token constant\">CMS</span><span class=\"token punctuation\">.</span><span class=\"token function\">registerPreviewTemplate</span><span class=\"token punctuation\">(</span><span class=\"token operator\">...</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span></code></pre></div>\n<h2 id=\"raw-css-in-registerpreviewstyle\" style=\"position:relative;\"><a href=\"#raw-css-in-registerpreviewstyle\" aria-label=\"raw css in registerpreviewstyle permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Raw CSS in <code>registerPreviewStyle</code></h2>\n<p><code>registerPreviewStyle</code> can now accept a CSS string, in addition to accepting a url. The feature is activated by passing in an object as the second argument, with <code>raw</code> set to a truthy value. This is critical for integrating with modern build tooling. Here's an example using webpack:</p>\n<div class=\"gatsby-highlight\" data-language=\"js\"><pre class=\"language-js\"><code class=\"language-js\"><span class=\"token comment\">/**\n * Assumes a webpack project with `sass-loader` and `css-loader` installed.\n * Takes advantage of the `toString` method in the return value of `css-loader`.\n */</span>\n<span class=\"token keyword\">import</span> <span class=\"token constant\">CMS</span> <span class=\"token keyword\">from</span> <span class=\"token string\">'netlify-cms'</span><span class=\"token punctuation\">;</span>\n<span class=\"token keyword\">import</span> styles <span class=\"token keyword\">from</span> <span class=\"token string\">'!css-loader!sass-loader!../main.scss'</span><span class=\"token punctuation\">;</span>\n<span class=\"token constant\">CMS</span><span class=\"token punctuation\">.</span><span class=\"token function\">registerPreviewStyle</span><span class=\"token punctuation\">(</span>styles<span class=\"token punctuation\">.</span><span class=\"token function\">toString</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span> <span class=\"token punctuation\">{</span> raw<span class=\"token operator\">:</span> <span class=\"token boolean\">true</span> <span class=\"token punctuation\">}</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span></code></pre></div>\n<h2 id=\"squash-merge-github-pull-requests\" style=\"position:relative;\"><a href=\"#squash-merge-github-pull-requests\" aria-label=\"squash merge github pull requests permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Squash merge GitHub pull requests</h2>\n<p>When using the <a href=\"../configuration-options/#publish-mode\">Editorial Workflow</a> with the <code>github</code> or GitHub-connected <code>git-gateway</code> backends, Netlify CMS creates a pull request for each unpublished entry. Every time the unpublished entry is changed and saved, a new commit is added to the pull request. When the entry is published, the pull request is merged, and all of those commits are added to your project commit history in a merge commit.</p>\n<p>The squash merge option causes all commits to be \"squashed\" into a single commit when the pull request is merged, and the resulting commit is rebased onto the target branch, avoiding the merge commit altogether.</p>\n<p>To enable this feature, you can set the following option in your Netlify CMS <code>config.yml</code>:</p>\n<div class=\"gatsby-highlight\" data-language=\"yaml\"><pre class=\"language-yaml\"><code class=\"language-yaml\"><span class=\"token key atrule\">backend</span><span class=\"token punctuation\">:</span>\n  <span class=\"token key atrule\">squash_merges</span><span class=\"token punctuation\">:</span> <span class=\"token boolean important\">true</span></code></pre></div>\n<h2 id=\"commit-message-templates\" style=\"position:relative;\"><a href=\"#commit-message-templates\" aria-label=\"commit message templates permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Commit Message Templates</h2>\n<p>You can customize the templates used by Netlify CMS to generate commit messages by setting the <code>commit_messages</code> option under <code>backend</code> in your Netlify CMS <code>config.yml</code>.</p>\n<p>Template tags wrapped in curly braces will be expanded to include information about the file changed by the commit. For example, <code>{{path}}</code> will include the full path to the file changed.</p>\n<p>Setting up your Netlify CMS <code>config.yml</code> to recreate the default values would look like this:</p>\n<div class=\"gatsby-highlight\" data-language=\"yaml\"><pre class=\"language-yaml\"><code class=\"language-yaml\"><span class=\"token key atrule\">backend</span><span class=\"token punctuation\">:</span>\n  <span class=\"token key atrule\">commit_messages</span><span class=\"token punctuation\">:</span>\n    <span class=\"token key atrule\">create</span><span class=\"token punctuation\">:</span> Create <span class=\"token punctuation\">{</span><span class=\"token punctuation\">{</span>collection<span class=\"token punctuation\">}</span><span class=\"token punctuation\">}</span> “<span class=\"token punctuation\">{</span><span class=\"token punctuation\">{</span>slug<span class=\"token punctuation\">}</span><span class=\"token punctuation\">}</span>”\n    <span class=\"token key atrule\">update</span><span class=\"token punctuation\">:</span> Update <span class=\"token punctuation\">{</span><span class=\"token punctuation\">{</span>collection<span class=\"token punctuation\">}</span><span class=\"token punctuation\">}</span> “<span class=\"token punctuation\">{</span><span class=\"token punctuation\">{</span>slug<span class=\"token punctuation\">}</span><span class=\"token punctuation\">}</span>”\n    <span class=\"token key atrule\">delete</span><span class=\"token punctuation\">:</span> Delete <span class=\"token punctuation\">{</span><span class=\"token punctuation\">{</span>collection<span class=\"token punctuation\">}</span><span class=\"token punctuation\">}</span> “<span class=\"token punctuation\">{</span><span class=\"token punctuation\">{</span>slug<span class=\"token punctuation\">}</span><span class=\"token punctuation\">}</span>”\n    <span class=\"token key atrule\">uploadMedia</span><span class=\"token punctuation\">:</span> Upload “<span class=\"token punctuation\">{</span><span class=\"token punctuation\">{</span>path<span class=\"token punctuation\">}</span><span class=\"token punctuation\">}</span>”\n    <span class=\"token key atrule\">deleteMedia</span><span class=\"token punctuation\">:</span> Delete “<span class=\"token punctuation\">{</span><span class=\"token punctuation\">{</span>path<span class=\"token punctuation\">}</span><span class=\"token punctuation\">}</span>”\n    <span class=\"token key atrule\">openAuthoring</span><span class=\"token punctuation\">:</span> <span class=\"token string\">'{{message}}'</span></code></pre></div>\n<p>Netlify CMS generates the following commit types:</p>\n<table>\n<thead>\n<tr>\n<th>Commit type</th>\n<th>When is it triggered?</th>\n<th>Available template tags</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>create</code></td>\n<td>A new entry is created</td>\n<td><code>slug</code>, <code>path</code>, <code>collection</code></td>\n</tr>\n<tr>\n<td><code>update</code></td>\n<td>An existing entry is changed</td>\n<td><code>slug</code>, <code>path</code>, <code>collection</code></td>\n</tr>\n<tr>\n<td><code>delete</code></td>\n<td>An exising entry is deleted</td>\n<td><code>slug</code>, <code>path</code>, <code>collection</code></td>\n</tr>\n<tr>\n<td><code>uploadMedia</code></td>\n<td>A media file is uploaded</td>\n<td><code>path</code></td>\n</tr>\n<tr>\n<td><code>deleteMedia</code></td>\n<td>A media file is deleted</td>\n<td><code>path</code></td>\n</tr>\n<tr>\n<td><code>openAuthoring</code></td>\n<td>A commit is made via a forked repository</td>\n<td><code>message</code>, <code>author-login</code>, <code>author-name</code></td>\n</tr>\n</tbody>\n</table>\n<p>Template tags produce the following output:</p>\n<ul>\n<li><code>{{slug}}</code>: the url-safe filename of the entry changed</li>\n<li><code>{{collection}}</code>: the name of the collection containing the entry changed</li>\n<li><code>{{path}}</code>: the full path to the file changed</li>\n<li><code>{{message}}</code>: the relevant message based on the current change (e.g. the <code>create</code> message when an entry is created)</li>\n<li><code>{{author-login}}</code>: the login/username of the author</li>\n<li><code>{{author-name}}</code>: the full name of the author (might be empty based on the user's profile)</li>\n</ul>\n<h2 id=\"image-widget-file-size-limit\" style=\"position:relative;\"><a href=\"#image-widget-file-size-limit\" aria-label=\"image widget file size limit permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Image widget file size limit</h2>\n<p>You can set a limit to as what the maximum file size of a file is that users can upload directly into a image field.</p>\n<p>Example config:</p>\n<div class=\"gatsby-highlight\" data-language=\"yaml\"><pre class=\"language-yaml\"><code class=\"language-yaml\"><span class=\"token punctuation\">-</span> <span class=\"token key atrule\">label</span><span class=\"token punctuation\">:</span> <span class=\"token string\">'Featured Image'</span>\n  <span class=\"token key atrule\">name</span><span class=\"token punctuation\">:</span> <span class=\"token string\">'thumbnail'</span>\n  <span class=\"token key atrule\">widget</span><span class=\"token punctuation\">:</span> <span class=\"token string\">'image'</span>\n  <span class=\"token key atrule\">default</span><span class=\"token punctuation\">:</span> <span class=\"token string\">'/uploads/chocolate-dogecoin.jpg'</span>\n  <span class=\"token key atrule\">media_library</span><span class=\"token punctuation\">:</span>\n    <span class=\"token key atrule\">config</span><span class=\"token punctuation\">:</span>\n      <span class=\"token key atrule\">max_file_size</span><span class=\"token punctuation\">:</span> <span class=\"token number\">512000</span> <span class=\"token comment\"># in bytes, only for default media library</span></code></pre></div>\n<h2 id=\"registering-to-cms-events\" style=\"position:relative;\"><a href=\"#registering-to-cms-events\" aria-label=\"registering to cms events permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Registering to CMS Events</h2>\n<p>You can execute a function when a specific CMS event occurs.</p>\n<p>Example usage:</p>\n<div class=\"gatsby-highlight\" data-language=\"javascript\"><pre class=\"language-javascript\"><code class=\"language-javascript\"><span class=\"token constant\">CMS</span><span class=\"token punctuation\">.</span><span class=\"token function\">registerEventListener</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">{</span>\n  name<span class=\"token operator\">:</span> <span class=\"token string\">'prePublish'</span><span class=\"token punctuation\">,</span>\n  <span class=\"token function-variable function\">handler</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">(</span><span class=\"token parameter\"><span class=\"token punctuation\">{</span> author<span class=\"token punctuation\">,</span> entry <span class=\"token punctuation\">}</span></span><span class=\"token punctuation\">)</span> <span class=\"token operator\">=></span> console<span class=\"token punctuation\">.</span><span class=\"token function\">log</span><span class=\"token punctuation\">(</span><span class=\"token constant\">JSON</span><span class=\"token punctuation\">.</span><span class=\"token function\">stringify</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">{</span> author<span class=\"token punctuation\">,</span> data<span class=\"token operator\">:</span> entry<span class=\"token punctuation\">.</span><span class=\"token function\">get</span><span class=\"token punctuation\">(</span><span class=\"token string\">'data'</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">}</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span>\n<span class=\"token punctuation\">}</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n<span class=\"token constant\">CMS</span><span class=\"token punctuation\">.</span><span class=\"token function\">registerEventListener</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">{</span>\n  name<span class=\"token operator\">:</span> <span class=\"token string\">'postPublish'</span><span class=\"token punctuation\">,</span>\n  <span class=\"token function-variable function\">handler</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">(</span><span class=\"token parameter\"><span class=\"token punctuation\">{</span> author<span class=\"token punctuation\">,</span> entry <span class=\"token punctuation\">}</span></span><span class=\"token punctuation\">)</span> <span class=\"token operator\">=></span> console<span class=\"token punctuation\">.</span><span class=\"token function\">log</span><span class=\"token punctuation\">(</span><span class=\"token constant\">JSON</span><span class=\"token punctuation\">.</span><span class=\"token function\">stringify</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">{</span> author<span class=\"token punctuation\">,</span> data<span class=\"token operator\">:</span> entry<span class=\"token punctuation\">.</span><span class=\"token function\">get</span><span class=\"token punctuation\">(</span><span class=\"token string\">'data'</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">}</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span>\n<span class=\"token punctuation\">}</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n<span class=\"token constant\">CMS</span><span class=\"token punctuation\">.</span><span class=\"token function\">registerEventListener</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">{</span>\n  name<span class=\"token operator\">:</span> <span class=\"token string\">'preUnpublish'</span><span class=\"token punctuation\">,</span>\n  <span class=\"token function-variable function\">handler</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">(</span><span class=\"token parameter\"><span class=\"token punctuation\">{</span> author<span class=\"token punctuation\">,</span> entry <span class=\"token punctuation\">}</span></span><span class=\"token punctuation\">)</span> <span class=\"token operator\">=></span> console<span class=\"token punctuation\">.</span><span class=\"token function\">log</span><span class=\"token punctuation\">(</span><span class=\"token constant\">JSON</span><span class=\"token punctuation\">.</span><span class=\"token function\">stringify</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">{</span> author<span class=\"token punctuation\">,</span> data<span class=\"token operator\">:</span> entry<span class=\"token punctuation\">.</span><span class=\"token function\">get</span><span class=\"token punctuation\">(</span><span class=\"token string\">'data'</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">}</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span>\n<span class=\"token punctuation\">}</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n<span class=\"token constant\">CMS</span><span class=\"token punctuation\">.</span><span class=\"token function\">registerEventListener</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">{</span>\n  name<span class=\"token operator\">:</span> <span class=\"token string\">'postUnpublish'</span><span class=\"token punctuation\">,</span>\n  <span class=\"token function-variable function\">handler</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">(</span><span class=\"token parameter\"><span class=\"token punctuation\">{</span> author<span class=\"token punctuation\">,</span> entry <span class=\"token punctuation\">}</span></span><span class=\"token punctuation\">)</span> <span class=\"token operator\">=></span> console<span class=\"token punctuation\">.</span><span class=\"token function\">log</span><span class=\"token punctuation\">(</span><span class=\"token constant\">JSON</span><span class=\"token punctuation\">.</span><span class=\"token function\">stringify</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">{</span> author<span class=\"token punctuation\">,</span> data<span class=\"token operator\">:</span> entry<span class=\"token punctuation\">.</span><span class=\"token function\">get</span><span class=\"token punctuation\">(</span><span class=\"token string\">'data'</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">}</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span>\n<span class=\"token punctuation\">}</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span></code></pre></div>\n<p><strong>Note:</strong> Supported events are <code>prePublish</code>, <code>postPublish</code>, <code>preUnpublish</code> and <code>postUnpublish</code>.</p>\n<h2 id=\"dynamic-default-values\" style=\"position:relative;\"><a href=\"#dynamic-default-values\" aria-label=\"dynamic default values permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Dynamic Default Values</h2>\n<p>When linking to <code>/admin/#/collections/posts/new</code> you can pass URL parameters to pre-populate an entry.</p>\n<p>For example given the configuration:</p>\n<div class=\"gatsby-highlight\" data-language=\"yaml\"><pre class=\"language-yaml\"><code class=\"language-yaml\"><span class=\"token key atrule\">collections</span><span class=\"token punctuation\">:</span>\n  <span class=\"token punctuation\">-</span> <span class=\"token key atrule\">name</span><span class=\"token punctuation\">:</span> posts\n    <span class=\"token key atrule\">label</span><span class=\"token punctuation\">:</span> Posts\n    <span class=\"token key atrule\">folder</span><span class=\"token punctuation\">:</span> content/posts\n    <span class=\"token key atrule\">create</span><span class=\"token punctuation\">:</span> <span class=\"token boolean important\">true</span>\n    <span class=\"token key atrule\">fields</span><span class=\"token punctuation\">:</span>\n      <span class=\"token punctuation\">-</span> <span class=\"token key atrule\">label</span><span class=\"token punctuation\">:</span> Title\n        <span class=\"token key atrule\">name</span><span class=\"token punctuation\">:</span> title\n        <span class=\"token key atrule\">widget</span><span class=\"token punctuation\">:</span> string\n      <span class=\"token punctuation\">-</span> <span class=\"token key atrule\">label</span><span class=\"token punctuation\">:</span> Object\n        <span class=\"token key atrule\">name</span><span class=\"token punctuation\">:</span> object\n        <span class=\"token key atrule\">widget</span><span class=\"token punctuation\">:</span> object\n        <span class=\"token key atrule\">fields</span><span class=\"token punctuation\">:</span>\n          <span class=\"token punctuation\">-</span> <span class=\"token key atrule\">label</span><span class=\"token punctuation\">:</span> Title\n            <span class=\"token key atrule\">name</span><span class=\"token punctuation\">:</span> title\n            <span class=\"token key atrule\">widget</span><span class=\"token punctuation\">:</span> string\n      <span class=\"token punctuation\">-</span> <span class=\"token key atrule\">label</span><span class=\"token punctuation\">:</span> body\n        <span class=\"token key atrule\">name</span><span class=\"token punctuation\">:</span> body\n        <span class=\"token key atrule\">widget</span><span class=\"token punctuation\">:</span> markdown</code></pre></div>\n<p>clicking the following link: <code>/#/collections/posts/new?title=first&#x26;object.title=second&#x26;body=%23%20content</code></p>\n<p>will open the editor for a new post with the <code>title</code> field populated with <code>first</code>, the nested <code>object.title</code> field\nwith <code>second</code> and the markdown <code>body</code> field with <code># content</code>.</p>\n<p><strong>Note:</strong> URL Encoding might be required for certain values (e.g. in the previous example the value for <code>body</code> is URL encoded).</p>"},"nav":{"group":[{"fieldValue":"backends","edges":[{"node":{"fields":{"slug":"/docs/backends-overview/"},"frontmatter":{"title":"Overview","group":"backends"},"tableOfContents":"<ul>\n<li><a href=\"/docs/backends-overview/#backend-configuration\">Backend Configuration</a></li>\n<li><a href=\"/docs/backends-overview/#creating-a-new-backend\">Creating a New Backend</a></li>\n</ul>"}},{"node":{"fields":{"slug":"/docs/git-gateway-backend/"},"frontmatter":{"title":"Git Gateway","group":"backends"},"tableOfContents":"<ul>\n<li><a href=\"/docs/git-gateway-backend/#git-gateway-with-netlify\">Git Gateway with Netlify</a></li>\n<li><a href=\"/docs/git-gateway-backend/#reconnect-after-changing-repository-permissions\">Reconnect after Changing Repository Permissions</a></li>\n<li><a href=\"/docs/git-gateway-backend/#git-gateway-without-netlify\">Git Gateway without Netlify</a></li>\n</ul>"}},{"node":{"fields":{"slug":"/docs/bitbucket-backend/"},"frontmatter":{"title":"Bitbucket","group":"backends"},"tableOfContents":"<ul>\n<li><a href=\"/docs/bitbucket-backend/#client-side-implicit-grant-bitbucket\">Client-Side Implicit Grant (Bitbucket)</a></li>\n</ul>"}},{"node":{"fields":{"slug":"/docs/github-backend/"},"frontmatter":{"title":"GitHub","group":"backends"},"tableOfContents":"<ul>\n<li><a href=\"/docs/github-backend/#specifying-a-status-for-deploy-previews\">Specifying a status for deploy previews</a></li>\n</ul>"}},{"node":{"fields":{"slug":"/docs/gitlab-backend/"},"frontmatter":{"title":"GitLab","group":"backends"},"tableOfContents":"<ul>\n<li><a href=\"/docs/gitlab-backend/#web-application-flow-with-netlify\">Web Application Flow with Netlify</a></li>\n<li><a href=\"/docs/gitlab-backend/#client-side-implicit-grant-gitlab\">Client-Side Implicit Grant (GitLab)</a></li>\n</ul>"}},{"node":{"fields":{"slug":"/docs/test-backend/"},"frontmatter":{"title":"Test","group":"backends"},"tableOfContents":""}},{"node":{"fields":{"slug":"/docs/external-oauth-clients/"},"frontmatter":{"title":"External OAuth Clients","group":"backends"},"tableOfContents":""}}]},{"fieldValue":"contributing","edges":[{"node":{"fields":{"slug":"/docs/contributor-guide/"},"frontmatter":{"title":"Contributor Guide","group":"contributing"},"tableOfContents":"<ul>\n<li><a href=\"/docs/contributor-guide/#getting-started-with-contributing\">Getting started with contributing</a></li>\n<li><a href=\"/docs/contributor-guide/#the-basics-of-the-netlify-cms-docs\">The basics of the Netlify CMS docs</a></li>\n<li><a href=\"/docs/contributor-guide/#style-guidelines\">Style guidelines</a></li>\n<li><a href=\"/docs/contributor-guide/#filing-issues\">Filing issues</a></li>\n<li><a href=\"/docs/contributor-guide/#improve-existing-content\">Improve existing content</a></li>\n<li><a href=\"/docs/contributor-guide/#other-places-to-get-involved\">Other places to get involved</a></li>\n</ul>"}},{"node":{"fields":{"slug":"/docs/writing-style-guide/"},"frontmatter":{"title":"Writing Style Guide","group":"contributing"},"tableOfContents":"<ul>\n<li>\n<p><a href=\"/docs/writing-style-guide/#netlify-cms-style-guide\">Netlify CMS Style Guide</a></p>\n<ul>\n<li>\n<p><a href=\"/docs/writing-style-guide/#documentation-formatting-standards\">Documentation Formatting Standards</a></p>\n<ul>\n<li><a href=\"/docs/writing-style-guide/#use-angle-brackets-for-placeholders\">Use angle brackets for placeholders</a></li>\n<li><a href=\"/docs/writing-style-guide/#use-bold-for-user-interface-elements\">Use bold for user interface elements</a></li>\n<li><a href=\"/docs/writing-style-guide/#use-italics-to-define-or-introduce-new-terms\">Use italics to define or introduce new terms</a></li>\n<li><a href=\"/docs/writing-style-guide/#use-code-style-for-filenames-directories-and-paths\">Use code style for filenames, directories, and paths</a></li>\n<li><a href=\"/docs/writing-style-guide/#use-the-international-standard-for-punctuation-inside-quotes\">Use the international standard for punctuation inside quotes</a></li>\n</ul>\n</li>\n<li>\n<p><a href=\"/docs/writing-style-guide/#inline-code-formatting\">Inline code formatting</a></p>\n<ul>\n<li><a href=\"/docs/writing-style-guide/#use-code-style-for-inline-code-and-commands\">Use code style for inline code and commands</a></li>\n<li><a href=\"/docs/writing-style-guide/#use-code-style-for-object-field-names\">Use code style for object field names</a></li>\n<li><a href=\"/docs/writing-style-guide/#use-normal-style-for-string-and-integer-field-values\">Use normal style for string and integer field values</a></li>\n</ul>\n</li>\n<li>\n<p><a href=\"/docs/writing-style-guide/#code-snippet-formatting\">Code snippet formatting</a></p>\n<ul>\n<li><a href=\"/docs/writing-style-guide/#dont-include-the-command-prompt\">Don’t include the command prompt</a></li>\n</ul>\n</li>\n<li>\n<p><a href=\"/docs/writing-style-guide/#content-best-practices\">Content best practices</a></p>\n<ul>\n<li><a href=\"/docs/writing-style-guide/#use-present-tense\">Use present tense</a></li>\n<li><a href=\"/docs/writing-style-guide/#use-active-voice\">Use active voice</a></li>\n<li><a href=\"/docs/writing-style-guide/#use-simple-and-direct-language\">Use simple and direct language</a></li>\n<li><a href=\"/docs/writing-style-guide/#address-the-reader-as-you\">Address the reader as “you”</a></li>\n<li><a href=\"/docs/writing-style-guide/#avoid-latin-phrases\">Avoid Latin phrases</a></li>\n</ul>\n</li>\n<li>\n<p><a href=\"/docs/writing-style-guide/#patterns-to-avoid\">Patterns to avoid</a></p>\n<ul>\n<li><a href=\"/docs/writing-style-guide/#avoid-using-we\">Avoid using “we”</a></li>\n<li><a href=\"/docs/writing-style-guide/#avoid-jargon-and-idioms\">Avoid jargon and idioms</a></li>\n<li><a href=\"/docs/writing-style-guide/#avoid-statements-about-the-future\">Avoid statements about the future</a></li>\n<li><a href=\"/docs/writing-style-guide/#avoid-statements-that-will-soon-be-out-of-date\">Avoid statements that will soon be out of date</a></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>"}},{"node":{"fields":{"slug":"/docs/architecture/"},"frontmatter":{"title":"Architecture","group":"contributing"},"tableOfContents":"<ul>\n<li><a href=\"/docs/architecture/#state-shape--reducers\">State shape / reducers</a></li>\n<li><a href=\"/docs/architecture/#selectors\">Selectors</a></li>\n<li><a href=\"/docs/architecture/#value-objects\">Value Objects</a></li>\n<li>\n<p><a href=\"/docs/architecture/#components-structure-and-workflows\">Components structure and Workflows</a></p>\n<ul>\n<li>\n<p><a href=\"/docs/architecture/#entry-editing\">Entry Editing</a></p>\n<ul>\n<li><a href=\"/docs/architecture/#widget-components-implementation\">Widget components implementation</a></li>\n</ul>\n</li>\n</ul>\n</li>\n<li>\n<p><a href=\"/docs/architecture/#editorial-workflow-implementation\">Editorial Workflow implementation</a></p>\n<ul>\n<li><a href=\"/docs/architecture/#about-metadata\">About metadata</a></li>\n</ul>\n</li>\n</ul>"}}]},{"fieldValue":"customization","edges":[{"node":{"fields":{"slug":"/docs/custom-widgets/"},"frontmatter":{"title":"Creating Custom Widgets","group":"customization"},"tableOfContents":"<ul>\n<li>\n<ul>\n<li><a href=\"/docs/custom-widgets/#writing-react-components-inline\">Writing React Components inline</a></li>\n</ul>\n</li>\n<li><a href=\"/docs/custom-widgets/#registerwidget\"><code>registerWidget</code></a></li>\n<li><a href=\"/docs/custom-widgets/#registereditorcomponent\"><code>registerEditorComponent</code></a></li>\n<li><a href=\"/docs/custom-widgets/#advanced-field-validation\">Advanced field validation</a></li>\n</ul>"}},{"node":{"fields":{"slug":"/docs/customization/"},"frontmatter":{"title":"Creating Custom Previews","group":"customization"},"tableOfContents":"<ul>\n<li>\n<ul>\n<li><a href=\"/docs/customization/#react-components-inline-interaction\">React Components inline interaction</a></li>\n</ul>\n</li>\n<li><a href=\"/docs/customization/#registerpreviewstyle\"><code>registerPreviewStyle</code></a></li>\n<li><a href=\"/docs/customization/#registerpreviewtemplate\"><code>registerPreviewTemplate</code></a></li>\n</ul>"}}]},{"fieldValue":"features","edges":[{"node":{"fields":{"slug":"/docs/deploy-preview-links/"},"frontmatter":{"title":"Deploy Preview Links","group":"features"},"tableOfContents":"<ul>\n<li>\n<p><a href=\"/docs/deploy-preview-links/#using-deploy-preview-links\">Using deploy preview links</a></p>\n<ul>\n<li><a href=\"/docs/deploy-preview-links/#waiting-for-builds\">Waiting for builds</a></li>\n</ul>\n</li>\n<li>\n<p><a href=\"/docs/deploy-preview-links/#configuring-preview-paths\">Configuring preview paths</a></p>\n<ul>\n<li><a href=\"/docs/deploy-preview-links/#dates-in-preview-paths\">Dates in preview paths</a></li>\n</ul>\n</li>\n<li><a href=\"/docs/deploy-preview-links/#preview-links-for-published-content\">Preview links for published content</a></li>\n<li><a href=\"/docs/deploy-preview-links/#disabling-deploy-preview-links\">Disabling deploy preview links</a></li>\n<li><a href=\"/docs/deploy-preview-links/#how-it-works\">How it works</a></li>\n</ul>"}},{"node":{"fields":{"slug":"/docs/open-authoring/"},"frontmatter":{"title":"Open Authoring","group":"features"},"tableOfContents":"<ul>\n<li><a href=\"/docs/open-authoring/#requirements\">Requirements</a></li>\n<li><a href=\"/docs/open-authoring/#enabling-open-authoring\">Enabling Open Authoring</a></li>\n<li><a href=\"/docs/open-authoring/#usage\">Usage</a></li>\n<li><a href=\"/docs/open-authoring/#alternative-for-external-contributors-with-git-gateway\">Alternative for external contributors with Git Gateway</a></li>\n<li><a href=\"/docs/open-authoring/#linking-to-specific-entries-in-the-cms\">Linking to specific entries in the CMS</a></li>\n</ul>"}}]},{"fieldValue":"guides","edges":[{"node":{"fields":{"slug":"/docs/gatsby/"},"frontmatter":{"title":"Gatsby","group":"guides"},"tableOfContents":"<ul>\n<li><a href=\"/docs/gatsby/#create-a-new-gatsby-site\">Create a new Gatsby site</a></li>\n<li><a href=\"/docs/gatsby/#get-to-know-gatsby\">Get to know Gatsby</a></li>\n<li>\n<p><a href=\"/docs/gatsby/#add-netlify-cms-to-your-site\">Add Netlify CMS to your site</a></p>\n<ul>\n<li><a href=\"/docs/gatsby/#configuration\">Configuration</a></li>\n<li><a href=\"/docs/gatsby/#push-to-github\">Push to GitHub</a></li>\n<li><a href=\"/docs/gatsby/#add-your-repo-to-netlify\">Add your repo to Netlify</a></li>\n<li><a href=\"/docs/gatsby/#enable-identity-and-git-gateway\">Enable Identity and Git Gateway</a></li>\n</ul>\n</li>\n<li>\n<p><a href=\"/docs/gatsby/#start-publishing\">Start publishing</a></p>\n<ul>\n<li><a href=\"/docs/gatsby/#cleanup\">Cleanup</a></li>\n</ul>\n</li>\n</ul>"}},{"node":{"fields":{"slug":"/docs/hugo/"},"frontmatter":{"title":"Hugo","group":"guides"},"tableOfContents":"<ul>\n<li><a href=\"/docs/hugo/#introduction\">Introduction</a></li>\n<li>\n<p><a href=\"/docs/hugo/#getting-started-with-hugo\">Getting started with Hugo</a></p>\n<ul>\n<li><a href=\"/docs/hugo/#installation\">Installation</a></li>\n<li><a href=\"/docs/hugo/#creating-a-new-site\">Creating a new site</a></li>\n</ul>\n</li>\n<li>\n<p><a href=\"/docs/hugo/#getting-started-with-netlify-cms\">Getting Started With Netlify CMS</a></p>\n<ul>\n<li><a href=\"/docs/hugo/#add-the-netlify-cms-files-to-hugo\">Add the Netlify CMS files to Hugo</a></li>\n<li><a href=\"/docs/hugo/#pushing-to-github\">Pushing to GitHub</a></li>\n<li><a href=\"/docs/hugo/#deploying-with-netlify\">Deploying With Netlify</a></li>\n<li><a href=\"/docs/hugo/#authenticating-with-netlify-identity\">Authenticating with Netlify Identity</a></li>\n<li><a href=\"/docs/hugo/#enable-identity--git-gateway-in-netlify\">Enable Identity &#x26; Git Gateway in Netlify</a></li>\n<li><a href=\"/docs/hugo/#accessing-the-cms\">Accessing the CMS</a></li>\n</ul>\n</li>\n<li>\n<p><a href=\"/docs/hugo/#using-netlify-cms-content-in-hugo\">Using Netlify CMS content in Hugo</a></p>\n<ul>\n<li><a href=\"/docs/hugo/#creating-a-list-of-posts\">Creating a list of posts</a></li>\n<li><a href=\"/docs/hugo/#creating-a-single-page-post-layout\">Creating a single page post layout</a></li>\n</ul>\n</li>\n</ul>"}},{"node":{"fields":{"slug":"/docs/nextjs/"},"frontmatter":{"title":"NextJS","group":"guides"},"tableOfContents":"<ul>\n<li><a href=\"/docs/nextjs/#creating-a-new-project\">Creating a new project</a></li>\n<li><a href=\"/docs/nextjs/#adding-netlify-cms\">Adding Netlify CMS</a></li>\n<li>\n<p><a href=\"/docs/nextjs/#publishing-to-github-and-netlify\">Publishing to GitHub and Netlify</a></p>\n<ul>\n<li><a href=\"/docs/nextjs/#enable-identity-and-git-gateway\">Enable Identity and Git Gateway</a></li>\n<li><a href=\"/docs/nextjs/#celebrate\">Celebrate!</a></li>\n</ul>\n</li>\n</ul>"}},{"node":{"fields":{"slug":"/docs/nuxt/"},"frontmatter":{"title":"Nuxt","group":"guides"},"tableOfContents":"<ul>\n<li><a href=\"/docs/nuxt/#starting-with-create-nuxt-app\">Starting With <code>create-nuxt-app</code></a></li>\n<li>\n<p><a href=\"/docs/nuxt/#setting-up-netlify-cms\">Setting Up Netlify CMS</a></p>\n<ul>\n<li><a href=\"/docs/nuxt/#add-the-netlify-cms-files-to-nuxt\">Add the Netlify CMS files to Nuxt</a></li>\n<li><a href=\"/docs/nuxt/#add-the-content-directory-to-nuxt\">Add the <code>content/</code> directory to Nuxt</a></li>\n<li><a href=\"/docs/nuxt/#pushing-to-github\">Pushing to GitHub</a></li>\n<li><a href=\"/docs/nuxt/#deploying-with-netlify\">Deploying With Netlify</a></li>\n<li><a href=\"/docs/nuxt/#authenticating-with-netlify-identity\">Authenticating with Netlify Identity</a></li>\n</ul>\n</li>\n<li>\n<p><a href=\"/docs/nuxt/#integrating-content-in-nuxt-with-vuex\">Integrating content in Nuxt with Vuex</a></p>\n<ul>\n<li><a href=\"/docs/nuxt/#rendering-markdown-with-nuxtjsmarkdownit\">Rendering Markdown with <code>@nuxtjs/markdownit</code></a></li>\n<li><a href=\"/docs/nuxt/#generating-pages-with-the-generate-property\">Generating pages with the <code>generate</code> property</a></li>\n</ul>\n</li>\n</ul>"}},{"node":{"fields":{"slug":"/docs/jekyll/"},"frontmatter":{"title":"Jekyll","group":"guides"},"tableOfContents":"<ul>\n<li><a href=\"/docs/jekyll/#introduction\">Introduction</a></li>\n<li><a href=\"/docs/jekyll/#setup\">Setup</a></li>\n<li>\n<p><a href=\"/docs/jekyll/#add-netlify-cms\">Add Netlify CMS</a></p>\n<ul>\n<li><a href=\"/docs/jekyll/#add-adminindexhtml\">Add admin/index.html</a></li>\n<li><a href=\"/docs/jekyll/#add-adminconfigyml\">Add admin/config.yml</a></li>\n<li><a href=\"/docs/jekyll/#setup-backend\">Setup Backend</a></li>\n</ul>\n</li>\n<li>\n<p><a href=\"/docs/jekyll/#cms-configuration\">CMS Configuration</a></p>\n<ul>\n<li><a href=\"/docs/jekyll/#blog-collection\">Blog Collection</a></li>\n<li><a href=\"/docs/jekyll/#author-collection\">Author Collection</a></li>\n<li><a href=\"/docs/jekyll/#about-page\">About Page</a></li>\n<li><a href=\"/docs/jekyll/#navigation\">Navigation</a></li>\n</ul>\n</li>\n</ul>"}},{"node":{"fields":{"slug":"/docs/middleman/"},"frontmatter":{"title":"Middleman","group":"guides"},"tableOfContents":"<ul>\n<li><a href=\"/docs/middleman/#installation\">Installation</a></li>\n<li>\n<p><a href=\"/docs/middleman/#create-a-new-middleman-site\">Create a new Middleman site</a></p>\n<ul>\n<li><a href=\"/docs/middleman/#add-the-middleman-blog-extension\">Add the Middleman blog extension</a></li>\n</ul>\n</li>\n<li>\n<p><a href=\"/docs/middleman/#get-started-with-middleman\">Get started with Middleman</a></p>\n<ul>\n<li><a href=\"/docs/middleman/#activate-the-blog-extension\">Activate the blog extension</a></li>\n<li><a href=\"/docs/middleman/#load-the-articles\">Load the articles</a></li>\n<li><a href=\"/docs/middleman/#add-an-article-layout\">Add an article layout</a></li>\n</ul>\n</li>\n<li>\n<p><a href=\"/docs/middleman/#add-netlify-cms-to-your-site\">Add Netlify CMS to your site</a></p>\n<ul>\n<li><a href=\"/docs/middleman/#configuration\">Configuration</a></li>\n<li><a href=\"/docs/middleman/#push-to-github\">Push to GitHub</a></li>\n<li><a href=\"/docs/middleman/#add-your-repo-to-netlify\">Add your repo to Netlify</a></li>\n<li><a href=\"/docs/middleman/#enable-identity-and-git-gateway\">Enable Identity and Git Gateway</a></li>\n</ul>\n</li>\n<li><a href=\"/docs/middleman/#start-publishing\">Start publishing</a></li>\n</ul>"}}]},{"fieldValue":"media","edges":[{"node":{"fields":{"slug":"/docs/cloudinary/"},"frontmatter":{"title":"Cloudinary","group":"media"},"tableOfContents":"<ul>\n<li><a href=\"/docs/cloudinary/#creating-a-cloudinary-account\">Creating a Cloudinary Account</a></li>\n<li>\n<p><a href=\"/docs/cloudinary/#connecting-cloudinary-to-netlify-cms\">Connecting Cloudinary to Netlify CMS</a></p>\n<ul>\n<li><a href=\"/docs/cloudinary/#security-considerations\">Security Considerations</a></li>\n</ul>\n</li>\n<li><a href=\"/docs/cloudinary/#netlify-cms-configuration-options\">Netlify CMS configuration options</a></li>\n<li>\n<p><a href=\"/docs/cloudinary/#cloudinary-configuration-options\">Cloudinary configuration options</a></p>\n<ul>\n<li><a href=\"/docs/cloudinary/#authentication\">Authentication</a></li>\n<li><a href=\"/docs/cloudinary/#media-library-behavior\">Media library behavior</a></li>\n</ul>\n</li>\n<li>\n<p><a href=\"/docs/cloudinary/#image-transformations\">Image transformations</a></p>\n<ul>\n<li>\n<p><a href=\"/docs/cloudinary/#transforming-images-via-media-library\">Transforming images via Media Library</a></p>\n<ul>\n<li><a href=\"/docs/cloudinary/#global-configuration\">Global configuration</a></li>\n<li><a href=\"/docs/cloudinary/#field-configuration\">Field configuration</a></li>\n</ul>\n</li>\n</ul>\n</li>\n<li><a href=\"/docs/cloudinary/#inserting-cloudinary-url-in-page-templates\">Inserting Cloudinary URL in page templates</a></li>\n</ul>"}},{"node":{"fields":{"slug":"/docs/netlify-large-media/"},"frontmatter":{"title":"Netlify Large Media","group":"media"},"tableOfContents":"<ul>\n<li><a href=\"/docs/netlify-large-media/#requirements\">Requirements</a></li>\n<li>\n<p><a href=\"/docs/netlify-large-media/#image-transformations\">Image transformations</a></p>\n<ul>\n<li><a href=\"/docs/netlify-large-media/#transformation-control-for-media-gallery-thumbnails\">Transformation control for media gallery thumbnails</a></li>\n</ul>\n</li>\n</ul>"}},{"node":{"fields":{"slug":"/docs/uploadcare/"},"frontmatter":{"title":"Uploadcare","group":"media"},"tableOfContents":"<ul>\n<li><a href=\"/docs/uploadcare/#creating-an-uploadcare-account\">Creating an Uploadcare Account</a></li>\n<li><a href=\"/docs/uploadcare/#updating-netlify-cms-configuration\">Updating Netlify CMS Configuration</a></li>\n<li>\n<p><a href=\"/docs/uploadcare/#configuring-the-uploadcare-widget\">Configuring the Uploadcare Widget</a></p>\n<ul>\n<li><a href=\"/docs/uploadcare/#global-configuration\">Global configuration</a></li>\n</ul>\n</li>\n<li><a href=\"/docs/uploadcare/#field-configuration\">Field configuration</a></li>\n<li><a href=\"/docs/uploadcare/#integration-settings\">Integration settings</a></li>\n</ul>"}}]},{"fieldValue":"reference","edges":[{"node":{"fields":{"slug":"/docs/configuration-options/"},"frontmatter":{"title":"Configuration Options","group":"reference"},"tableOfContents":"<ul>\n<li><a href=\"/docs/configuration-options/#backend\">Backend</a></li>\n<li><a href=\"/docs/configuration-options/#publish-mode\">Publish Mode</a></li>\n<li>\n<p><a href=\"/docs/configuration-options/#media-and-public-folders\">Media and Public Folders</a></p>\n<ul>\n<li><a href=\"/docs/configuration-options/#media-folder\">Media Folder</a></li>\n<li><a href=\"/docs/configuration-options/#public-folder\">Public Folder</a></li>\n</ul>\n</li>\n<li><a href=\"/docs/configuration-options/#media-library\">Media Library</a></li>\n<li><a href=\"/docs/configuration-options/#site-url\">Site URL</a></li>\n<li><a href=\"/docs/configuration-options/#display-url\">Display URL</a></li>\n<li><a href=\"/docs/configuration-options/#custom-logo\">Custom Logo</a></li>\n<li><a href=\"/docs/configuration-options/#locale\">Locale</a></li>\n<li><a href=\"/docs/configuration-options/#show-preview-links\">Show Preview Links</a></li>\n<li><a href=\"/docs/configuration-options/#slug-type\">Slug Type</a></li>\n<li>\n<p><a href=\"/docs/configuration-options/#collections\">Collections</a></p>\n<ul>\n<li><a href=\"/docs/configuration-options/#identifier_field\"><code>identifier_field</code></a></li>\n<li><a href=\"/docs/configuration-options/#extension-and-format\"><code>extension</code> and <code>format</code></a></li>\n<li><a href=\"/docs/configuration-options/#frontmatter_delimiter\"><code>frontmatter_delimiter</code></a></li>\n<li><a href=\"/docs/configuration-options/#slug\"><code>slug</code></a></li>\n<li><a href=\"/docs/configuration-options/#preview_path\"><code>preview_path</code></a></li>\n<li><a href=\"/docs/configuration-options/#preview_path_date_field\"><code>preview_path_date_field</code></a></li>\n<li><a href=\"/docs/configuration-options/#fields\"><code>fields</code></a></li>\n<li><a href=\"/docs/configuration-options/#editor\"><code>editor</code></a></li>\n<li><a href=\"/docs/configuration-options/#summary\"><code>summary</code></a></li>\n<li><a href=\"/docs/configuration-options/#sortablefields\"><code>sortableFields</code></a></li>\n</ul>\n</li>\n</ul>"}},{"node":{"fields":{"slug":"/docs/widgets/"},"frontmatter":{"title":"Widgets","group":"reference"},"tableOfContents":"<ul>\n<li><a href=\"/docs/widgets/#common-widget-options\">Common widget options</a></li>\n<li><a href=\"/docs/widgets/#default-widgets\">Default widgets</a></li>\n</ul>"}},{"node":{"fields":{"slug":"/docs/beta-features/"},"frontmatter":{"title":"Beta Features!","group":"reference"},"tableOfContents":"<ul>\n<li><a href=\"/docs/beta-features/#working-with-a-local-git-repository\">Working with a Local Git Repository</a></li>\n<li><a href=\"/docs/beta-features/#gitlab-and-bitbucket-editorial-workflow-support\">GitLab and BitBucket Editorial Workflow Support</a></li>\n<li><a href=\"/docs/beta-features/#github-graphql-api\">GitHub GraphQL API</a></li>\n<li><a href=\"/docs/beta-features/#open-authoring\">Open Authoring</a></li>\n<li><a href=\"/docs/beta-features/#folder-collections-path\">Folder Collections Path</a></li>\n<li><a href=\"/docs/beta-features/#folder-collections-media-and-public-folder\">Folder Collections Media and Public Folder</a></li>\n<li>\n<p><a href=\"/docs/beta-features/#list-widget-variable-types\">List Widget: Variable Types</a></p>\n<ul>\n<li><a href=\"/docs/beta-features/#additional-list-widget-options\">Additional list widget options</a></li>\n<li><a href=\"/docs/beta-features/#example-configuration\">Example Configuration</a></li>\n<li><a href=\"/docs/beta-features/#example-output\">Example Output</a></li>\n</ul>\n</li>\n<li><a href=\"/docs/beta-features/#custom-mount-element\">Custom Mount Element</a></li>\n<li><a href=\"/docs/beta-features/#manual-initialization\">Manual Initialization</a></li>\n<li><a href=\"/docs/beta-features/#raw-css-in-registerpreviewstyle\">Raw CSS in <code>registerPreviewStyle</code></a></li>\n<li><a href=\"/docs/beta-features/#squash-merge-github-pull-requests\">Squash merge GitHub pull requests</a></li>\n<li><a href=\"/docs/beta-features/#commit-message-templates\">Commit Message Templates</a></li>\n<li><a href=\"/docs/beta-features/#image-widget-file-size-limit\">Image widget file size limit</a></li>\n<li><a href=\"/docs/beta-features/#registering-to-cms-events\">Registering to CMS Events</a></li>\n<li><a href=\"/docs/beta-features/#dynamic-default-values\">Dynamic Default Values</a></li>\n</ul>"}}]},{"fieldValue":"start","edges":[{"node":{"fields":{"slug":"/docs/intro/"},"frontmatter":{"title":"Introduction","group":"start"},"tableOfContents":"<ul>\n<li><a href=\"/docs/intro/#netlify-cms-vs-netlify\">Netlify CMS vs. Netlify</a></li>\n<li><a href=\"/docs/intro/#find-out-more\">Find out more</a></li>\n</ul>"}},{"node":{"fields":{"slug":"/docs/start-with-a-template/"},"frontmatter":{"title":"Start with a Template","group":"start"},"tableOfContents":"<ul>\n<li><a href=\"/docs/start-with-a-template/#access-netlify-cms-on-your-new-site\">Access Netlify CMS on your new site</a></li>\n<li><a href=\"/docs/start-with-a-template/#more-paths-to-explore\">More paths to explore</a></li>\n</ul>"}},{"node":{"fields":{"slug":"/docs/add-to-your-site/"},"frontmatter":{"title":"Add to Your Site","group":"start"},"tableOfContents":"<ul>\n<li>\n<p><a href=\"/docs/add-to-your-site/#app-file-structure\">App File Structure</a></p>\n<ul>\n<li><a href=\"/docs/add-to-your-site/#installing-with-npm\">Installing with npm</a></li>\n</ul>\n</li>\n<li>\n<p><a href=\"/docs/add-to-your-site/#configuration\">Configuration</a></p>\n<ul>\n<li><a href=\"/docs/add-to-your-site/#backend\">Backend</a></li>\n<li><a href=\"/docs/add-to-your-site/#editorial-workflow\">Editorial Workflow</a></li>\n<li><a href=\"/docs/add-to-your-site/#media-and-public-folders\">Media and Public Folders</a></li>\n<li><a href=\"/docs/add-to-your-site/#collections\">Collections</a></li>\n<li><a href=\"/docs/add-to-your-site/#filter\">Filter</a></li>\n</ul>\n</li>\n<li>\n<p><a href=\"/docs/add-to-your-site/#authentication\">Authentication</a></p>\n<ul>\n<li><a href=\"/docs/add-to-your-site/#setup-on-netlify\">Setup on Netlify</a></li>\n<li><a href=\"/docs/add-to-your-site/#enable-identity-and-git-gateway\">Enable Identity and Git Gateway</a></li>\n<li><a href=\"/docs/add-to-your-site/#add-the-netlify-identity-widget\">Add the Netlify Identity Widget</a></li>\n</ul>\n</li>\n<li><a href=\"/docs/add-to-your-site/#accessing-the-cms\">Accessing the CMS</a></li>\n</ul>"}},{"node":{"fields":{"slug":"/docs/collection-types/"},"frontmatter":{"title":"Collection Types","group":"start"},"tableOfContents":"<ul>\n<li>\n<p><a href=\"/docs/collection-types/#folder-collections\">Folder collections</a></p>\n<ul>\n<li><a href=\"/docs/collection-types/#filtered-folder-collections\">Filtered folder collections</a></li>\n</ul>\n</li>\n<li><a href=\"/docs/collection-types/#file-collections\">File collections</a></li>\n</ul>"}},{"node":{"fields":{"slug":"/docs/update-the-cms-version/"},"frontmatter":{"title":"Update the CMS Version","group":"start"},"tableOfContents":"<ul>\n<li><a href=\"/docs/update-the-cms-version/#package-manager\">Package Manager</a></li>\n<li><a href=\"/docs/update-the-cms-version/#cdn\">CDN</a></li>\n</ul>"}},{"node":{"fields":{"slug":"/docs/examples/"},"frontmatter":{"title":"Examples","group":"start"},"tableOfContents":""}}]}]},"menu":{"siteMetadata":{"menu":{"docs":[{"name":"start","title":"Quick Start"},{"name":"backends","title":"Backends"},{"name":"features","title":"Features"},{"name":"reference","title":"Reference"},{"name":"media","title":"Media"},{"name":"guides","title":"Guides"},{"name":"customization","title":"Customization"},{"name":"contributing","title":"Contributing"}]}}},"widgets":{"edges":[{"node":{"frontmatter":{"title":"boolean","label":"Boolean"},"html":"<p>The boolean widget translates a toggle switch input to a true/false value.</p>\n<ul>\n<li><strong>Name:</strong> <code>boolean</code></li>\n<li><strong>UI:</strong> toggle switch</li>\n<li><strong>Data type:</strong> boolean</li>\n<li>\n<p><strong>Options:</strong></p>\n<ul>\n<li><code>default</code>: accepts <code>true</code> or <code>false</code>; defaults to <code>false</code> when <code>required</code> is set to <code>false</code></li>\n</ul>\n</li>\n<li>\n<p><strong>Example:</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"yaml\"><pre class=\"language-yaml\"><code class=\"language-yaml\"><span class=\"token punctuation\">-</span> <span class=\"token punctuation\">{</span><span class=\"token key atrule\">label</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"Draft\"</span><span class=\"token punctuation\">,</span> <span class=\"token key atrule\">name</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"draft\"</span><span class=\"token punctuation\">,</span> <span class=\"token key atrule\">widget</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"boolean\"</span><span class=\"token punctuation\">,</span> <span class=\"token key atrule\">default</span><span class=\"token punctuation\">:</span> <span class=\"token boolean important\">true</span><span class=\"token punctuation\">}</span></code></pre></div>\n</li>\n</ul>"}},{"node":{"frontmatter":{"title":"code","label":"Code"},"html":"<p>The code widget provides a code editor (powered by <a href=\"https://codemirror.net\" target=\"_blank\" rel=\"noopener noreferrer\">Codemirror</a>) with optional syntax awareness. Can output the raw code value or an object with the selected language and the raw code value.</p>\n<ul>\n<li><strong>Name:</strong> <code>code</code></li>\n<li><strong>UI:</strong> code editor</li>\n<li><strong>Data type:</strong> string</li>\n<li>\n<p><strong>Options:</strong></p>\n<ul>\n<li><code>default_language</code>: optional; default language to use</li>\n<li><code>allow_language_selection</code>: optional; defaults to <code>false</code>: allows syntax to be changed</li>\n<li><code>keys</code>: optional; sets key names for code and lang if outputting an object; defaults to <code>{ code: 'code', lang: 'lang' }</code></li>\n<li><code>output_code_only</code>: set to <code>true</code> to output the string value only, defaults to <code>false</code></li>\n</ul>\n</li>\n<li>\n<p><strong>Example:</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"yaml\"><pre class=\"language-yaml\"><code class=\"language-yaml\"><span class=\"token punctuation\">-</span> <span class=\"token key atrule\">label</span><span class=\"token punctuation\">:</span> <span class=\"token string\">'Code'</span>\n<span class=\"token key atrule\">name</span><span class=\"token punctuation\">:</span> <span class=\"token string\">'code'</span>\n<span class=\"token key atrule\">widget</span><span class=\"token punctuation\">:</span> <span class=\"token string\">'code'</span></code></pre></div>\n</li>\n</ul>"}},{"node":{"frontmatter":{"title":"date","label":"Date"},"html":"<p><em><strong>Deprecation notice</strong>: the date widget has been deprecated and will be removed in the next major release. Please use the datetime widget instead.</em></p>\n<p>The date widget translates a date picker input to a date string. For saving date and time together, use the datetime widget.</p>\n<ul>\n<li><strong>Name:</strong> <code>date</code></li>\n<li><strong>UI:</strong> date picker</li>\n<li><strong>Data type:</strong> Moment.js-formatted date string</li>\n<li>\n<p><strong>Options:</strong></p>\n<ul>\n<li><code>default</code>: accepts a date string, or an empty string to accept blank input; otherwise defaults to current date</li>\n<li><code>format</code>: optional; accepts Moment.js <a href=\"https://momentjs.com/docs/#/parsing/string-format/\" target=\"_blank\" rel=\"noopener noreferrer\">tokens</a>; defaults to raw Date object (if supported by output format)</li>\n<li><code>dateFormat</code>: optional; boolean or Moment.js <a href=\"https://momentjs.com/docs/#/parsing/string-format/\" target=\"_blank\" rel=\"noopener noreferrer\">tokens</a>. If <code>true</code> use default locale format.</li>\n<li><code>timeFormat</code>: optional; boolean or Moment.js <a href=\"https://momentjs.com/docs/#/parsing/string-format/\" target=\"_blank\" rel=\"noopener noreferrer\">tokens</a>. If <code>true</code> use default locale format, <code>false</code> hides time-picker. Defaults to false.</li>\n</ul>\n</li>\n<li>\n<p><strong>Example:</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"yaml\"><pre class=\"language-yaml\"><code class=\"language-yaml\"><span class=\"token punctuation\">-</span> <span class=\"token key atrule\">label</span><span class=\"token punctuation\">:</span> <span class=\"token string\">'Birthdate'</span>\n<span class=\"token key atrule\">name</span><span class=\"token punctuation\">:</span> <span class=\"token string\">'birthdate'</span>\n<span class=\"token key atrule\">widget</span><span class=\"token punctuation\">:</span> <span class=\"token string\">'date'</span>\n<span class=\"token key atrule\">default</span><span class=\"token punctuation\">:</span> <span class=\"token string\">''</span>\n<span class=\"token key atrule\">format</span><span class=\"token punctuation\">:</span> <span class=\"token string\">'MMM Do YY'</span></code></pre></div>\n</li>\n</ul>"}},{"node":{"frontmatter":{"title":"datetime","label":"DateTime"},"html":"<p>The datetime widget translates a datetime picker to a datetime string. For saving the date only, use the date widget.</p>\n<ul>\n<li><strong>Name:</strong> <code>datetime</code></li>\n<li><strong>UI:</strong> datetime picker</li>\n<li><strong>Data type:</strong> Moment.js-formatted datetime string</li>\n<li>\n<p><strong>Options:</strong></p>\n<ul>\n<li><code>default</code>: accepts a datetime string, or an empty string to accept blank input; otherwise defaults to current datetime</li>\n<li><code>format</code>: sets storage format; accepts Moment.js <a href=\"https://momentjs.com/docs/#/parsing/string-format/\" target=\"_blank\" rel=\"noopener noreferrer\">tokens</a>; defaults to raw Date object (if supported by output format)</li>\n<li><code>dateFormat</code>: sets date display format in UI; boolean or Moment.js <a href=\"https://momentjs.com/docs/#/parsing/string-format/\" target=\"_blank\" rel=\"noopener noreferrer\">tokens</a>. If <code>true</code> use default locale format.</li>\n<li><code>timeFormat</code>: sets time display format in UI; boolean or Moment.js <a href=\"https://momentjs.com/docs/#/parsing/string-format/\" target=\"_blank\" rel=\"noopener noreferrer\">tokens</a>. If <code>true</code> use default locale format, <code>false</code> hides time-picker.</li>\n</ul>\n</li>\n<li>\n<p><strong>Example:</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"yaml\"><pre class=\"language-yaml\"><code class=\"language-yaml\"><span class=\"token punctuation\">-</span> <span class=\"token key atrule\">label</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"Start time\"</span>\n  <span class=\"token key atrule\">name</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"start\"</span>\n  <span class=\"token key atrule\">widget</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"datetime\"</span>\n  <span class=\"token key atrule\">default</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"\"</span>\n  <span class=\"token key atrule\">dateFormat</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"DD.MM.YYYY\"</span> <span class=\"token comment\"># e.g. 24.12.2021</span>\n  <span class=\"token key atrule\">timeFormat</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"HH:mm\"</span> <span class=\"token comment\"># e.g. 21:07</span>\n  <span class=\"token key atrule\">format</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"LLL\"</span></code></pre></div>\n</li>\n</ul>"}},{"node":{"frontmatter":{"title":"file","label":"File"},"html":"<p>The file widget allows editors to upload a file or select an existing one from the media library. The path to the file will be saved to the field as a string.</p>\n<ul>\n<li><strong>Name:</strong> <code>file</code></li>\n<li><strong>UI:</strong> file picker button opens media gallery</li>\n<li><strong>Data type:</strong> file path string</li>\n<li>\n<p><strong>Options:</strong></p>\n<ul>\n<li><code>default</code>: accepts a file path string; defaults to null</li>\n<li><code>media_library</code>: media library settings to apply when a media library is opened by the\ncurrent widget</li>\n<li><code>allow_multiple</code>: <em>(default: <code>true</code>)</em> when set to <code>false</code>, prevents multiple selection for any media library extension, but must be supported by the extension in use</li>\n<li><code>config</code>: a configuration object that will be passed directly to the media library being\nused - available options are determined by the library</li>\n</ul>\n</li>\n<li>\n<p><strong>Example:</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"yaml\"><pre class=\"language-yaml\"><code class=\"language-yaml\"><span class=\"token punctuation\">-</span> <span class=\"token key atrule\">label</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"Manual PDF\"</span>\n  <span class=\"token key atrule\">name</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"manual_pdf\"</span>\n  <span class=\"token key atrule\">widget</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"file\"</span>\n  <span class=\"token key atrule\">default</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"/uploads/general-manual.pdf\"</span>\n  <span class=\"token key atrule\">media_library</span><span class=\"token punctuation\">:</span>\n    <span class=\"token key atrule\">config</span><span class=\"token punctuation\">:</span>\n      <span class=\"token key atrule\">multiple</span><span class=\"token punctuation\">:</span> <span class=\"token boolean important\">true</span></code></pre></div>\n</li>\n</ul>"}},{"node":{"frontmatter":{"title":"hidden","label":"Hidden"},"html":"<p>Hidden widgets do not display in the UI. In folder collections that allow users to create new items, you will often want to set a default for hidden fields, so they will be set without requiring an input.</p>\n<ul>\n<li><strong>Name:</strong> <code>hidden</code></li>\n<li><strong>UI:</strong> none</li>\n<li><strong>Data type:</strong> any valid data type</li>\n<li>\n<p><strong>Options:</strong> </p>\n<ul>\n<li><code>default</code>: accepts any valid data type; recommended for collections that allow adding new items</li>\n</ul>\n</li>\n<li>\n<p><strong>Example:</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"yaml\"><pre class=\"language-yaml\"><code class=\"language-yaml\"><span class=\"token punctuation\">-</span> <span class=\"token punctuation\">{</span><span class=\"token key atrule\">label</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"Layout\"</span><span class=\"token punctuation\">,</span> <span class=\"token key atrule\">name</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"layout\"</span><span class=\"token punctuation\">,</span> <span class=\"token key atrule\">widget</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"hidden\"</span><span class=\"token punctuation\">,</span> <span class=\"token key atrule\">default</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"blog\"</span><span class=\"token punctuation\">}</span></code></pre></div>\n</li>\n</ul>"}},{"node":{"frontmatter":{"title":"image","label":"Image"},"html":"<p>The image widget allows editors to upload an image or select an existing one from the media library. The path to the image file will be saved to the field as a string.</p>\n<ul>\n<li><strong>Name:</strong> <code>image</code></li>\n<li><strong>UI:</strong> file picker button opens media gallery allowing image files (jpg, jpeg, webp, gif, png, bmp, tiff, svg) only; displays selected image thumbnail</li>\n<li><strong>Data type:</strong> file path string</li>\n<li>\n<p><strong>Options:</strong></p>\n<ul>\n<li><code>default</code>: accepts a file path string; defaults to null</li>\n<li><code>media_library</code>: media library settings to apply when a media library is opened by the\ncurrent widget</li>\n<li><code>allow_multiple</code>: <em>(default: <code>true</code>)</em> when set to <code>false</code>, prevents multiple selection for any media library extension, but must be supported by the extension in use</li>\n<li><code>config</code>: a configuration object that will be passed directly to the media library being\nused - available options are determined by the library</li>\n</ul>\n</li>\n<li>\n<p><strong>Example:</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"yaml\"><pre class=\"language-yaml\"><code class=\"language-yaml\"><span class=\"token punctuation\">-</span> <span class=\"token key atrule\">label</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"Featured Image\"</span>\n  <span class=\"token key atrule\">name</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"thumbnail\"</span>\n  <span class=\"token key atrule\">widget</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"image\"</span>\n  <span class=\"token key atrule\">default</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"/uploads/chocolate-dogecoin.jpg\"</span>\n  <span class=\"token key atrule\">media_library</span><span class=\"token punctuation\">:</span>\n    <span class=\"token key atrule\">config</span><span class=\"token punctuation\">:</span>\n      <span class=\"token key atrule\">multiple</span><span class=\"token punctuation\">:</span> <span class=\"token boolean important\">true</span></code></pre></div>\n</li>\n</ul>"}},{"node":{"frontmatter":{"title":"list","label":"List"},"html":"<p>The list widget allows you to create a repeatable item in the UI which saves as a list of widget values. map a user-provided string with a comma delimiter into a list. You can choose any widget as a child of a list widget—even other lists.</p>\n<ul>\n<li><strong>Name:</strong> <code>list</code></li>\n<li><strong>UI:</strong> if <code>fields</code> is specified, field containing a repeatable child widget, with controls for adding, deleting, and re-ordering the repeated widgets; if unspecified, a text input for entering comma-separated values</li>\n<li><strong>Data type:</strong> list of widget values</li>\n<li>\n<p><strong>Options:</strong></p>\n<ul>\n<li><code>default</code>: if <code>fields</code> is specified, declare defaults on the child widgets; if not, you may specify a list of strings to populate the text field</li>\n<li><code>allow_add</code>: if added and labeled <code>false</code>, button to add additional widgets disappears</li>\n<li><code>collapsed</code>: if added and labeled <code>false</code>, the list widget's content does not collapse by default</li>\n<li><code>field</code>: a single widget field to be repeated</li>\n<li><code>fields</code>: a nested list of multiple widget fields to be included in each repeatable iteration</li>\n</ul>\n</li>\n<li>\n<p><strong>Example</strong> (<code>field</code>/<code>fields</code> not specified):</p>\n<div class=\"gatsby-highlight\" data-language=\"yaml\"><pre class=\"language-yaml\"><code class=\"language-yaml\"><span class=\"token punctuation\">-</span> <span class=\"token key atrule\">label</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"Tags\"</span>\n  <span class=\"token key atrule\">name</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"tags\"</span>\n  <span class=\"token key atrule\">widget</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"list\"</span>\n  <span class=\"token key atrule\">default</span><span class=\"token punctuation\">:</span> <span class=\"token punctuation\">[</span><span class=\"token string\">\"news\"</span><span class=\"token punctuation\">]</span></code></pre></div>\n</li>\n<li>\n<p><strong>Example</strong> (<code>allow_add</code> marked <code>false</code>):</p>\n<div class=\"gatsby-highlight\" data-language=\"yaml\"><pre class=\"language-yaml\"><code class=\"language-yaml\"><span class=\"token punctuation\">-</span> <span class=\"token key atrule\">label</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"Tags\"</span>\n  <span class=\"token key atrule\">name</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"tags\"</span>\n  <span class=\"token key atrule\">widget</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"list\"</span>\n  <span class=\"token key atrule\">allow_add</span><span class=\"token punctuation\">:</span> <span class=\"token boolean important\">false</span>\n  <span class=\"token key atrule\">default</span><span class=\"token punctuation\">:</span> <span class=\"token punctuation\">[</span><span class=\"token string\">\"news\"</span><span class=\"token punctuation\">]</span></code></pre></div>\n</li>\n<li>\n<p><strong>Example</strong> (with <code>field</code>):</p>\n<div class=\"gatsby-highlight\" data-language=\"yaml\"><pre class=\"language-yaml\"><code class=\"language-yaml\"><span class=\"token punctuation\">-</span> <span class=\"token key atrule\">label</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"Gallery\"</span>\n  <span class=\"token key atrule\">name</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"galleryImages\"</span>\n  <span class=\"token key atrule\">widget</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"list\"</span>\n  <span class=\"token key atrule\">field</span><span class=\"token punctuation\">:</span> <span class=\"token punctuation\">{</span><span class=\"token key atrule\">label</span><span class=\"token punctuation\">:</span> Image<span class=\"token punctuation\">,</span> <span class=\"token key atrule\">name</span><span class=\"token punctuation\">:</span> image<span class=\"token punctuation\">,</span> <span class=\"token key atrule\">widget</span><span class=\"token punctuation\">:</span> image<span class=\"token punctuation\">}</span></code></pre></div>\n</li>\n<li>\n<p><strong>Example</strong> (with <code>fields</code>):</p>\n<div class=\"gatsby-highlight\" data-language=\"yaml\"><pre class=\"language-yaml\"><code class=\"language-yaml\"><span class=\"token punctuation\">-</span> <span class=\"token key atrule\">label</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"Testimonials\"</span>\n  <span class=\"token key atrule\">name</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"testimonials\"</span>\n  <span class=\"token key atrule\">widget</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"list\"</span>\n  <span class=\"token key atrule\">fields</span><span class=\"token punctuation\">:</span>\n    <span class=\"token punctuation\">-</span> <span class=\"token punctuation\">{</span><span class=\"token key atrule\">label</span><span class=\"token punctuation\">:</span> Quote<span class=\"token punctuation\">,</span> <span class=\"token key atrule\">name</span><span class=\"token punctuation\">:</span> quote<span class=\"token punctuation\">,</span> <span class=\"token key atrule\">widget</span><span class=\"token punctuation\">:</span> string<span class=\"token punctuation\">,</span> <span class=\"token key atrule\">default</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"Everything is awesome!\"</span><span class=\"token punctuation\">}</span>\n    <span class=\"token punctuation\">-</span> <span class=\"token key atrule\">label</span><span class=\"token punctuation\">:</span> Author\n      <span class=\"token key atrule\">name</span><span class=\"token punctuation\">:</span> author\n      <span class=\"token key atrule\">widget</span><span class=\"token punctuation\">:</span> object\n      <span class=\"token key atrule\">fields</span><span class=\"token punctuation\">:</span>\n        <span class=\"token punctuation\">-</span> <span class=\"token punctuation\">{</span><span class=\"token key atrule\">label</span><span class=\"token punctuation\">:</span> Name<span class=\"token punctuation\">,</span> <span class=\"token key atrule\">name</span><span class=\"token punctuation\">:</span> name<span class=\"token punctuation\">,</span> <span class=\"token key atrule\">widget</span><span class=\"token punctuation\">:</span> string<span class=\"token punctuation\">,</span> <span class=\"token key atrule\">default</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"Emmet\"</span><span class=\"token punctuation\">}</span>\n        <span class=\"token punctuation\">-</span> <span class=\"token punctuation\">{</span><span class=\"token key atrule\">label</span><span class=\"token punctuation\">:</span> Avatar<span class=\"token punctuation\">,</span> <span class=\"token key atrule\">name</span><span class=\"token punctuation\">:</span> avatar<span class=\"token punctuation\">,</span> <span class=\"token key atrule\">widget</span><span class=\"token punctuation\">:</span> image<span class=\"token punctuation\">,</span> <span class=\"token key atrule\">default</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"/img/emmet.jpg\"</span><span class=\"token punctuation\">}</span></code></pre></div>\n</li>\n<li>\n<p><strong>Example</strong> (<code>collapsed</code> marked <code>false</code>):</p>\n<div class=\"gatsby-highlight\" data-language=\"yaml\"><pre class=\"language-yaml\"><code class=\"language-yaml\"><span class=\"token punctuation\">-</span> <span class=\"token key atrule\">label</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"Testimonials\"</span>\n  <span class=\"token key atrule\">name</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"testimonials\"</span>\n  <span class=\"token key atrule\">collapsed</span><span class=\"token punctuation\">:</span> <span class=\"token boolean important\">false</span>\n  <span class=\"token key atrule\">widget</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"list\"</span>\n  <span class=\"token key atrule\">fields</span><span class=\"token punctuation\">:</span>\n    <span class=\"token punctuation\">-</span> <span class=\"token punctuation\">{</span><span class=\"token key atrule\">label</span><span class=\"token punctuation\">:</span> Quote<span class=\"token punctuation\">,</span> <span class=\"token key atrule\">name</span><span class=\"token punctuation\">:</span> quote<span class=\"token punctuation\">,</span> <span class=\"token key atrule\">widget</span><span class=\"token punctuation\">:</span> string<span class=\"token punctuation\">,</span> <span class=\"token key atrule\">default</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"Everything is awesome!\"</span><span class=\"token punctuation\">}</span>\n    <span class=\"token punctuation\">-</span> <span class=\"token punctuation\">{</span><span class=\"token key atrule\">label</span><span class=\"token punctuation\">:</span> Author<span class=\"token punctuation\">,</span> <span class=\"token key atrule\">name</span><span class=\"token punctuation\">:</span> author<span class=\"token punctuation\">,</span> <span class=\"token key atrule\">widget</span><span class=\"token punctuation\">:</span> string <span class=\"token punctuation\">}</span></code></pre></div>\n</li>\n</ul>"}},{"node":{"frontmatter":{"title":"map","label":"Map"},"html":"<p>The map widget allows you to edit spatial data using an interactive map. Spatial data is saved as a GeoJSON string in WGS84 projection and is limited to a single geometry.</p>\n<ul>\n<li><strong>Name:</strong> <code>map</code></li>\n<li><strong>UI:</strong> interactive map</li>\n<li><strong>Data type:</strong> GeoJSON string</li>\n<li>\n<p><strong>Options:</strong></p>\n<ul>\n<li><code>decimals</code>: accepts a number to specify precision of saved coordinates; defaults to 7 decimals</li>\n<li><code>default</code>: accepts a GeoJSON string containing a single geometry; defaults to an empty string</li>\n<li><code>type</code>: accepts one string value of <code>Point</code>, <code>LineString</code> or <code>Polygon</code>; defaults to <code>Point</code></li>\n</ul>\n</li>\n<li>\n<p><strong>Example:</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"yaml\"><pre class=\"language-yaml\"><code class=\"language-yaml\"><span class=\"token punctuation\">-</span> <span class=\"token punctuation\">{</span><span class=\"token key atrule\">label</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"Location\"</span><span class=\"token punctuation\">,</span> <span class=\"token key atrule\">name</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"location\"</span><span class=\"token punctuation\">,</span> <span class=\"token key atrule\">widget</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"map\"</span> <span class=\"token punctuation\">}</span></code></pre></div>\n</li>\n</ul>"}},{"node":{"frontmatter":{"title":"markdown","label":"Markdown"},"html":"<p>The markdown widget provides a full fledged text editor - which is based on <a href=\"https://github.com/ianstormtaylor/slate\" target=\"_blank\" rel=\"noopener noreferrer\">slate</a> - that allows users to format text with features such as headings and blockquotes. Users are also allowed to write in markdown by simply flipping a switch.</p>\n<p><em>Please note:</em> If you want to use your markdown editor to fill a markdown file contents after its frontmatter, you'll have to name the field <code>body</code> so the CMS recognizes it and saves the file accordingly.</p>\n<ul>\n<li><strong>Name:</strong> <code>markdown</code></li>\n<li><strong>UI:</strong> full text editor</li>\n<li><strong>Data type:</strong> markdown</li>\n<li>\n<p><strong>Options:</strong></p>\n<ul>\n<li><code>default</code>: accepts markdown content</li>\n<li><code>minimal</code>: accepts a boolean value, <code>false</code> by default. Sets the widget height to minimum possible.</li>\n<li><code>buttons</code>: an array of strings representing the formatting buttons to display (all shown by default). Buttons include: <code>bold</code>, <code>italic</code>, <code>code</code>, <code>link</code>, <code>heading-one</code>, <code>heading-two</code>, <code>heading-three</code>, <code>heading-four</code>, <code>heading-five</code>, <code>heading-six</code>, <code>quote</code>, <code>bulleted-list</code>, and <code>numbered-list</code>.</li>\n<li><code>editorComponents</code>: an array of strings representing the names of editor components to display (all shown by default). The <code>image</code> and <code>code-block</code> editor components are included with Netlify CMS by default, but others may be <a href=\"/docs/custom-widgets/#registereditorcomponent\">created and registered</a>.</li>\n</ul>\n</li>\n<li>\n<p><strong>Example:</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"yaml\"><pre class=\"language-yaml\"><code class=\"language-yaml\"><span class=\"token punctuation\">-</span> <span class=\"token punctuation\">{</span> <span class=\"token key atrule\">label</span><span class=\"token punctuation\">:</span> <span class=\"token string\">'Blog post content'</span><span class=\"token punctuation\">,</span> <span class=\"token key atrule\">name</span><span class=\"token punctuation\">:</span> <span class=\"token string\">'body'</span><span class=\"token punctuation\">,</span> <span class=\"token key atrule\">widget</span><span class=\"token punctuation\">:</span> <span class=\"token string\">'markdown'</span> <span class=\"token punctuation\">}</span></code></pre></div>\n</li>\n</ul>\n<p>This would render as:</p>\n<p><img src=\"/img/widgets-markdown.png\" alt=\"Markdown widget example\"></p>\n<p><em>Please note:</em> The markdown widget outputs a raw markdown string. Your static site generator may or may not render the markdown to HTML automatically. Consult with your static site generator's documentation for more information about rendering markdown.</p>"}},{"node":{"frontmatter":{"title":"number","label":"Number"},"html":"<p>The number widget uses an HTML number input, saving the value as a string, integer, or floating point number.</p>\n<ul>\n<li><strong>Name:</strong> <code>number</code></li>\n<li><strong>UI:</strong> HTML <a href=\"https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/number\" target=\"_blank\" rel=\"noopener noreferrer\">number input</a></li>\n<li><strong>Data type:</strong> string by default; configured by <code>valueType</code> option</li>\n<li>\n<p><strong>Options:</strong></p>\n<ul>\n<li><code>default</code>: accepts string or number value; defaults to empty string</li>\n<li><code>valueType</code>: accepts <code>int</code> or <code>float</code>; any other value results in saving as a string</li>\n<li><code>min</code>: accepts a number for minimum value accepted; unset by default</li>\n<li><code>max</code>: accepts a number for maximum value accepted; unset by default</li>\n<li><code>step</code>: accepts a number for stepping up/down values in the input; 1 by default</li>\n</ul>\n</li>\n<li>\n<p><strong>Example:</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"yaml\"><pre class=\"language-yaml\"><code class=\"language-yaml\"><span class=\"token punctuation\">-</span> <span class=\"token key atrule\">label</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"Puppy Count\"</span>\n  <span class=\"token key atrule\">name</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"puppies\"</span>\n  <span class=\"token key atrule\">widget</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"number\"</span>\n  <span class=\"token key atrule\">default</span><span class=\"token punctuation\">:</span> <span class=\"token number\">2</span>\n  <span class=\"token key atrule\">valueType</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"int\"</span>\n  <span class=\"token key atrule\">min</span><span class=\"token punctuation\">:</span> <span class=\"token number\">1</span>\n  <span class=\"token key atrule\">max</span><span class=\"token punctuation\">:</span> <span class=\"token number\">101</span>\n  <span class=\"token key atrule\">step</span><span class=\"token punctuation\">:</span> <span class=\"token number\">2</span></code></pre></div>\n</li>\n</ul>"}},{"node":{"frontmatter":{"title":"object","label":"Object"},"html":"<p>The object widget allows you to group multiple widgets together, nested under a single field. You can choose any widget as a child of an object widget—even other objects.</p>\n<ul>\n<li><strong>Name:</strong> <code>object</code></li>\n<li><strong>UI:</strong> a field containing one or more child widgets</li>\n<li><strong>Data type:</strong> list of child widget values</li>\n<li>\n<p><strong>Options:</strong></p>\n<ul>\n<li><code>default</code>: you can set defaults within each sub-field's configuration</li>\n<li><code>fields</code>: (<strong>required</strong>) a nested list of widget fields to include in your widget</li>\n</ul>\n</li>\n<li>\n<p><strong>Example:</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"yaml\"><pre class=\"language-yaml\"><code class=\"language-yaml\"><span class=\"token punctuation\">-</span> <span class=\"token key atrule\">label</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"Profile\"</span>\n  <span class=\"token key atrule\">name</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"profile\"</span>\n  <span class=\"token key atrule\">widget</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"object\"</span>\n  <span class=\"token key atrule\">fields</span><span class=\"token punctuation\">:</span>\n    <span class=\"token punctuation\">-</span> <span class=\"token punctuation\">{</span><span class=\"token key atrule\">label</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"Public\"</span><span class=\"token punctuation\">,</span> <span class=\"token key atrule\">name</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"public\"</span><span class=\"token punctuation\">,</span> <span class=\"token key atrule\">widget</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"boolean\"</span><span class=\"token punctuation\">,</span> <span class=\"token key atrule\">default</span><span class=\"token punctuation\">:</span> <span class=\"token boolean important\">true</span><span class=\"token punctuation\">}</span>\n    <span class=\"token punctuation\">-</span> <span class=\"token punctuation\">{</span><span class=\"token key atrule\">label</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"Name\"</span><span class=\"token punctuation\">,</span> <span class=\"token key atrule\">name</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"name\"</span><span class=\"token punctuation\">,</span> <span class=\"token key atrule\">widget</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"string\"</span><span class=\"token punctuation\">}</span>\n    <span class=\"token punctuation\">-</span> <span class=\"token key atrule\">label</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"Birthdate\"</span>\n      <span class=\"token key atrule\">name</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"birthdate\"</span>\n      <span class=\"token key atrule\">widget</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"date\"</span>\n      <span class=\"token key atrule\">default</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"\"</span>\n      <span class=\"token key atrule\">format</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"MM/DD/YYYY\"</span>\n    <span class=\"token punctuation\">-</span> <span class=\"token key atrule\">label</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"Address\"</span>\n      <span class=\"token key atrule\">name</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"address\"</span>\n      <span class=\"token key atrule\">widget</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"object\"</span>\n      <span class=\"token key atrule\">fields</span><span class=\"token punctuation\">:</span> \n        <span class=\"token punctuation\">-</span> <span class=\"token punctuation\">{</span><span class=\"token key atrule\">label</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"Street Address\"</span><span class=\"token punctuation\">,</span> <span class=\"token key atrule\">name</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"street\"</span><span class=\"token punctuation\">,</span> <span class=\"token key atrule\">widget</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"string\"</span><span class=\"token punctuation\">}</span>\n        <span class=\"token punctuation\">-</span> <span class=\"token punctuation\">{</span><span class=\"token key atrule\">label</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"City\"</span><span class=\"token punctuation\">,</span> <span class=\"token key atrule\">name</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"city\"</span><span class=\"token punctuation\">,</span> <span class=\"token key atrule\">widget</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"string\"</span><span class=\"token punctuation\">}</span>\n        <span class=\"token punctuation\">-</span> <span class=\"token punctuation\">{</span><span class=\"token key atrule\">label</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"Postal Code\"</span><span class=\"token punctuation\">,</span> <span class=\"token key atrule\">name</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"post-code\"</span><span class=\"token punctuation\">,</span> <span class=\"token key atrule\">widget</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"string\"</span><span class=\"token punctuation\">}</span></code></pre></div>\n</li>\n</ul>"}},{"node":{"frontmatter":{"title":"relation","label":"Relation"},"html":"<p>The relation widget allows you to reference items from another collection. It provides a search input with a list of entries from the collection you're referencing, and the list automatically updates with matched entries based on what you've typed.</p>\n<ul>\n<li><strong>Name:</strong> <code>relation</code></li>\n<li><strong>UI:</strong> text input with search result dropdown</li>\n<li><strong>Data type:</strong> data type of the value pulled from the related collection item</li>\n<li>\n<p><strong>Options:</strong></p>\n<ul>\n<li><code>default</code>: accepts any widget data type; defaults to an empty string</li>\n<li><code>collection</code>: (<strong>required</strong>) name of the collection being referenced (string)</li>\n<li><code>displayFields</code>: list of one or more names of fields in the referenced collection that will render in the autocomplete menu of the control. Defaults to <code>valueField</code>. For nested fields, separate each subfield with a <code>.</code> (E.g. <code>name.first</code>).</li>\n<li><code>searchFields</code>: (<strong>required</strong>) list of one or more names of fields in the referenced collection to search for the typed value. Syntax to reference nested fields is similar to that of <em>displayFields</em>.</li>\n<li><code>valueField</code>: (<strong>required</strong>) name of the field from the referenced collection whose value will be stored for the relation. Syntax to reference nested fields is similar to that of <em>displayFields</em> and <em>searchFields</em>. As <code>valueField</code> only allows for a single field, this parameter only accepts a string.</li>\n<li><code>multiple</code> : accepts a boolean, defaults to <code>false</code></li>\n<li><code>optionsLength</code>: accepts integer to override number of options presented to user. Defaults to <code>20</code>.</li>\n</ul>\n</li>\n<li>\n<p><strong>Example</strong> (assuming a separate \"authors\" collection with \"name\" and \"twitterHandle\" fields with subfields \"first\" and \"last\" for the \"name\" field):</p>\n<div class=\"gatsby-highlight\" data-language=\"yaml\"><pre class=\"language-yaml\"><code class=\"language-yaml\"><span class=\"token punctuation\">-</span> <span class=\"token key atrule\">label</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"Post Author\"</span>\n  <span class=\"token key atrule\">name</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"author\"</span>\n  <span class=\"token key atrule\">widget</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"relation\"</span>\n  <span class=\"token key atrule\">collection</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"authors\"</span>\n  <span class=\"token key atrule\">searchFields</span><span class=\"token punctuation\">:</span> <span class=\"token punctuation\">[</span><span class=\"token string\">\"name.first\"</span><span class=\"token punctuation\">,</span> <span class=\"token string\">\"twitterHandle\"</span><span class=\"token punctuation\">]</span>\n  <span class=\"token key atrule\">valueField</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"name.first\"</span>\n  <span class=\"token key atrule\">displayFields</span><span class=\"token punctuation\">:</span> <span class=\"token punctuation\">[</span><span class=\"token string\">\"twitterHandle\"</span><span class=\"token punctuation\">,</span> <span class=\"token string\">\"followerCount\"</span><span class=\"token punctuation\">]</span></code></pre></div>\n<p>The generated UI input will search the authors collection by name and twitterHandle, and display each author's handle and follower count. On selection, the author name will be saved for the field.</p>\n</li>\n</ul>"}},{"node":{"frontmatter":{"title":"select","label":"Select"},"html":"<p>The select widget allows you to pick a string value from a dropdown menu.</p>\n<ul>\n<li><strong>Name:</strong> <code>select</code></li>\n<li><strong>UI:</strong> select input</li>\n<li><strong>Data type:</strong> string or array</li>\n<li>\n<p><strong>Options:</strong></p>\n<ul>\n<li>\n<p><code>default</code>: default values must be contained in <code>options</code> and are ignored otherwise</p>\n<ul>\n<li>string values: accepts a string; defaults to an empty string. Accepts an array of strings and defaults to an empty array  with <code>multiple: true</code> enabled.</li>\n<li>object with <code>label</code> and <code>value</code> fields: accepts an object with <code>label</code> and <code>value</code> field or an array of such objects when <code>multiple: true</code> is enable. Defaults to no value</li>\n</ul>\n</li>\n<li>\n<p><code>options</code>: (<strong>required</strong>) a list of options for the dropdown menu; can be listed in two ways:</p>\n<ul>\n<li>string values: the label displayed in the dropdown is the value saved in the file</li>\n<li>object with <code>label</code> and <code>value</code> fields: the label displays in the dropdown; the value is saved in the file</li>\n</ul>\n</li>\n<li><code>multiple</code>: accepts a boolean; defaults to <code>false</code></li>\n<li><code>min</code>: minimum number of items; ignored if <strong>multiple</strong> is not <code>true</code></li>\n<li><code>max</code>: maximum number of items; ignored if <strong>multiple</strong> is not <code>true</code></li>\n</ul>\n</li>\n<li>\n<p><strong>Example</strong> (options as strings):</p>\n<div class=\"gatsby-highlight\" data-language=\"yaml\"><pre class=\"language-yaml\"><code class=\"language-yaml\"><span class=\"token punctuation\">-</span> <span class=\"token key atrule\">label</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"Align Content\"</span>\n  <span class=\"token key atrule\">name</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"align\"</span>\n  <span class=\"token key atrule\">widget</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"select\"</span>\n  <span class=\"token key atrule\">options</span><span class=\"token punctuation\">:</span> <span class=\"token punctuation\">[</span><span class=\"token string\">\"left\"</span><span class=\"token punctuation\">,</span> <span class=\"token string\">\"center\"</span><span class=\"token punctuation\">,</span> <span class=\"token string\">\"right\"</span><span class=\"token punctuation\">]</span></code></pre></div>\n</li>\n<li>\n<p><strong>Example</strong> (options as objects):</p>\n<div class=\"gatsby-highlight\" data-language=\"yaml\"><pre class=\"language-yaml\"><code class=\"language-yaml\"><span class=\"token punctuation\">-</span> <span class=\"token key atrule\">label</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"City\"</span>\n  <span class=\"token key atrule\">name</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"airport-code\"</span>\n  <span class=\"token key atrule\">widget</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"select\"</span>\n  <span class=\"token key atrule\">options</span><span class=\"token punctuation\">:</span>\n    <span class=\"token punctuation\">-</span> <span class=\"token punctuation\">{</span> <span class=\"token key atrule\">label</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"Chicago\"</span><span class=\"token punctuation\">,</span> <span class=\"token key atrule\">value</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"ORD\"</span> <span class=\"token punctuation\">}</span>\n    <span class=\"token punctuation\">-</span> <span class=\"token punctuation\">{</span> <span class=\"token key atrule\">label</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"Paris\"</span><span class=\"token punctuation\">,</span> <span class=\"token key atrule\">value</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"CDG\"</span> <span class=\"token punctuation\">}</span>\n    <span class=\"token punctuation\">-</span> <span class=\"token punctuation\">{</span> <span class=\"token key atrule\">label</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"Tokyo\"</span><span class=\"token punctuation\">,</span> <span class=\"token key atrule\">value</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"HND\"</span> <span class=\"token punctuation\">}</span></code></pre></div>\n</li>\n<li>\n<p><strong>Example</strong> (multiple):</p>\n<div class=\"gatsby-highlight\" data-language=\"yaml\"><pre class=\"language-yaml\"><code class=\"language-yaml\"><span class=\"token punctuation\">-</span> <span class=\"token key atrule\">label</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"Tags\"</span>\n  <span class=\"token key atrule\">name</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"tags\"</span>\n  <span class=\"token key atrule\">widget</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"select\"</span>\n  <span class=\"token key atrule\">multiple</span><span class=\"token punctuation\">:</span> <span class=\"token boolean important\">true</span>\n  <span class=\"token key atrule\">options</span><span class=\"token punctuation\">:</span> <span class=\"token punctuation\">[</span><span class=\"token string\">\"Design\"</span><span class=\"token punctuation\">,</span> <span class=\"token string\">\"UX\"</span><span class=\"token punctuation\">,</span> <span class=\"token string\">\"Dev\"</span><span class=\"token punctuation\">]</span>\n  <span class=\"token key atrule\">default</span><span class=\"token punctuation\">:</span> <span class=\"token punctuation\">[</span><span class=\"token string\">\"Design\"</span><span class=\"token punctuation\">]</span></code></pre></div>\n</li>\n<li>\n<p><strong>Example</strong> (min/max):</p>\n<div class=\"gatsby-highlight\" data-language=\"yaml\"><pre class=\"language-yaml\"><code class=\"language-yaml\"><span class=\"token punctuation\">-</span> <span class=\"token key atrule\">label</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"Tags\"</span>\n  <span class=\"token key atrule\">name</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"tags\"</span>\n  <span class=\"token key atrule\">widget</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"select\"</span>\n  <span class=\"token key atrule\">multiple</span><span class=\"token punctuation\">:</span> <span class=\"token boolean important\">true</span>\n  <span class=\"token key atrule\">min</span><span class=\"token punctuation\">:</span> <span class=\"token number\">1</span>\n  <span class=\"token key atrule\">max</span><span class=\"token punctuation\">:</span> <span class=\"token number\">3</span>\n  <span class=\"token key atrule\">options</span><span class=\"token punctuation\">:</span> <span class=\"token punctuation\">[</span><span class=\"token string\">\"Design\"</span><span class=\"token punctuation\">,</span> <span class=\"token string\">\"UX\"</span><span class=\"token punctuation\">,</span> <span class=\"token string\">\"Dev\"</span><span class=\"token punctuation\">]</span>\n  <span class=\"token key atrule\">default</span><span class=\"token punctuation\">:</span> <span class=\"token punctuation\">[</span><span class=\"token string\">\"Design\"</span><span class=\"token punctuation\">]</span></code></pre></div>\n</li>\n</ul>"}},{"node":{"frontmatter":{"title":"string","label":"String"},"html":"<p>The string widget translates a basic text input to a string value. For larger textarea inputs, use the text widget.</p>\n<ul>\n<li><strong>Name:</strong> <code>string</code></li>\n<li><strong>UI:</strong> text input</li>\n<li><strong>Data type:</strong> string</li>\n<li>\n<p><strong>Options:</strong></p>\n<ul>\n<li><code>default</code>: accepts a string; defaults to an empty string</li>\n</ul>\n</li>\n<li>\n<p><strong>Example:</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"yaml\"><pre class=\"language-yaml\"><code class=\"language-yaml\"><span class=\"token punctuation\">-</span> <span class=\"token punctuation\">{</span><span class=\"token key atrule\">label</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"Title\"</span><span class=\"token punctuation\">,</span> <span class=\"token key atrule\">name</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"title\"</span><span class=\"token punctuation\">,</span> <span class=\"token key atrule\">widget</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"string\"</span><span class=\"token punctuation\">}</span></code></pre></div>\n</li>\n</ul>"}},{"node":{"frontmatter":{"title":"text","label":"Text"},"html":"<p>The text widget takes a multiline text field and saves it as a string. For shorter text inputs, use the string widget.</p>\n<ul>\n<li><strong>Name:</strong> <code>text</code></li>\n<li><strong>UI:</strong> HTML textarea</li>\n<li><strong>Data type:</strong> string</li>\n<li>\n<p><strong>Options:</strong></p>\n<ul>\n<li><code>default</code>: accepts a string; defaults to an empty string</li>\n</ul>\n</li>\n<li>\n<p><strong>Example:</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"yaml\"><pre class=\"language-yaml\"><code class=\"language-yaml\"><span class=\"token punctuation\">-</span> <span class=\"token punctuation\">{</span><span class=\"token key atrule\">label</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"Description\"</span><span class=\"token punctuation\">,</span> <span class=\"token key atrule\">name</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"description\"</span><span class=\"token punctuation\">,</span> <span class=\"token key atrule\">widget</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"text\"</span><span class=\"token punctuation\">}</span></code></pre></div>\n</li>\n</ul>"}}]}},"pageContext":{"slug":"/docs/beta-features/"}}}