Jessica Parsons 155f40e5e4
Migrate netlify-cms-www site into this repo (#860)
* Add frontmatter to docs files (prep to move)

* Move docs into position for website migration

* Migrate website from netlify-cms-www

Some modifications, including most of the changes in https://github.com/netlify/netlify-cms-www/pull/58 (previously reverted).

Also updated the readme and added hugo-bin for quicker onboarding of new docs contributors.

* Remove netlify.toml

This allows separate build commands for cms-demo and netlifycms.org.

* Remove website/netlify.toml

May re-add later, but it's not doing anything for now.

* Remove unused content file
2017-12-04 16:42:20 -08:00

5.5 KiB
Raw Blame History

title position
Widgets 30

Widgets

Widgets define the data type and interface for entry fields. Netlify CMS comes with several built-in widgets, including:

Name UI Data Type
string text input string
boolean toggle switch boolean
text textarea input string (multiline)
number number input number
markdown rich text editor string (markdown)
datetime date picker string (ISO date)
select select input (dropdown) string
image file picker w/ drag-and-drop image file
file file picker w/ drag-and-drop file
hidden none string
object group of other widgets Immutable Map containing field values
list repeatable group of other widgets Immutable List of objects containing field values
relation text input w/ suggestions dropdown value of valueField in related entry (see below)

Were always adding new widgets, and you can also create your own!

Select Widget

The select widget allows you to pick a string value from a drop down menu

collections:
  - name: posts
    label: Post
    folder: "_posts"
    slug: "{{year}}-{{month}}-{{day}}-{{slug}}"
    create: true
    fields:
      - {label: Title, name: title, widget: string, tagname: h1}
      - {label: Body, name: body, widget: markdown}
      - {label: Align Content, name: align, widget: select, options: ['left', 'center', 'right']}

List Widget

The list widget allows you to map a user-provided string with a comma delimiter into a list. Consider the following example that also demonstrates how to set default values:

collections:
  - name: posts
    label: Post
    folder: "_posts"
    slug: "{{year}}-{{month}}-{{day}}-{{slug}}"
    create: true
    fields:
      - {label: Title, name: title, widget: string, tagname: h1}
      - {label: Body, name: body, widget: markdown}
      - {label: Categories, name: categories, widget: list}
      - {label: Tags, name: tags, widget: list, default: ['term_1', 'term_2']}

Lists of objects are supported as well and require a nested field list.

collections:
  - name: posts
    label: Post
    folder: "_posts"
    slug: "{{year}}-{{month}}-{{day}}-{{slug}}"
    create: true
    fields:
      - {label: Title, name: title, widget: string, tagname: h1}
      - {label: Body, name: body, widget: markdown}
      - name: authors
        label: Authors
        widget: list
        fields:
          - {label: Name, name: name, widget: string}
          - {label: Description, name: description, widget: markdown}

Relation Widget

The relation widget allows you to reference an existing entry from within the entry you're editing. 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.

The following field configuration properties are specific to fields using the relation widget:

Property Accepted Values Description
collection string name of the collection being referenced
searchFields list one or more names of fields in the referenced colleciton to search for the typed value
valueField string name a field from the referenced collection whose value will be stored for the relation
name text input string

Let's say we have a "posts" collection and an "authors" collection, and we want to select an author for each post - our config might look something like this:

collections:
  - name: authors
    label: Authors
    folder: "authors"
    create: true
    fields:
      - {name: name, label: Name}
      - {name: twitterHandle, label: "Twitter Handle"}
      - {name: bio, label: Bio, widget: text}
  - name: posts
    label: Posts
    folder: "posts"
    create: true
    fields:
      - {name: title, label: Title}
      - {name: body, label: Body, widget: markdown}
      - name: author
        label: Author
        widget: relation
        collection: authors
        searchFields: [name, twitterHandle]
        valueField: name

Date Widget / DateTime Widget

The date and datetime widgets provide date or datetime pickers when the widget is active. The resulting date string can be formatted (uses Moment.js), and accepts a default value. The initial value will be the current date unless false or an empty string are provided as the default value.

The following field configuration properties are specific to fields using the date or datetime widget:

Property Accepted Values Description
format string format string uses Moment.js tokens
default boolean, string can be a date string, or else an empty string - defaults to current date