799c7e6936
Co-authored-by: Denys Konovalov <kontakt@denyskon.de> Co-authored-by: Mathieu COSYNS <64072917+Mathieu-COSYNS@users.noreply.github.com>
1552 lines
45 KiB
YAML
1552 lines
45 KiB
YAML
backend:
|
|
name: test-repo
|
|
site_url: 'https://example.com'
|
|
media_folder: /assets/uploads
|
|
media_library:
|
|
folder_support: true
|
|
locale: en
|
|
publish_mode: editorial_workflow
|
|
i18n:
|
|
# Required and can be one of multiple_folders, multiple_files or single_file
|
|
# multiple_folders - persists files in `<folder>/<locale>/<slug>.<extension>`
|
|
# multiple_files - persists files in `<folder>/<slug>.<locale>.<extension>`
|
|
# single_file - persists a single file in `<folder>/<slug>.<extension>`
|
|
structure: multiple_files
|
|
|
|
# Required - a list of locales to show in the editor UI
|
|
locales: [en, de, fr]
|
|
|
|
# Optional, defaults to the first item in locales.
|
|
# The locale to be used for fields validation and as a baseline for the entry.
|
|
default_locale: en
|
|
collections:
|
|
- name: posts
|
|
label: Posts
|
|
label_singular: Post
|
|
description: >
|
|
The description is a great place for tone setting, high level information,
|
|
and editing guidelines that are specific to a collection.
|
|
folder: _posts
|
|
slug: '{{year}}-{{month}}-{{day}}-{{slug}}'
|
|
summary_fields:
|
|
- title
|
|
- date
|
|
sortable_fields:
|
|
fields:
|
|
- title
|
|
- date
|
|
default:
|
|
field: title
|
|
create: true
|
|
view_filters:
|
|
filters:
|
|
- name: posts-with-index
|
|
label: Posts With Index
|
|
field: title
|
|
pattern: 'This is post #'
|
|
- name: posts-without-index
|
|
label: Posts Without Index
|
|
field: title
|
|
pattern: front matter post
|
|
view_groups:
|
|
groups:
|
|
- name: by-year
|
|
label: Year
|
|
field: date
|
|
pattern: '\d{4}'
|
|
fields:
|
|
- label: Title
|
|
name: title
|
|
widget: string
|
|
- label: Publish Date
|
|
name: date
|
|
widget: datetime
|
|
date_format: yyyy-MM-dd
|
|
time_format: 'HH:mm'
|
|
format: "yyyy-MM-dd'T'HH:mm:ss.SSSXXX"
|
|
- label: Cover Image
|
|
name: image
|
|
widget: image
|
|
required: false
|
|
- label: Body
|
|
name: body
|
|
widget: markdown
|
|
hint: "*Main* __content__ __*goes*__ [here](https://example.com/)."
|
|
- name: faq
|
|
label: FAQ
|
|
folder: _faqs
|
|
create: true
|
|
editor:
|
|
frame: false
|
|
size: half
|
|
fields:
|
|
- label: Question
|
|
name: title
|
|
widget: string
|
|
- label: Type
|
|
name: type
|
|
widget: select
|
|
default: internal
|
|
options:
|
|
- label: Internal
|
|
value: internal
|
|
- label: External
|
|
value: external
|
|
- label: URL
|
|
name: url
|
|
widget: string
|
|
condition:
|
|
field: type
|
|
value: external
|
|
- label: Answer
|
|
name: body
|
|
widget: markdown
|
|
condition:
|
|
field: type
|
|
value: internal
|
|
- name: posts
|
|
label: Posts
|
|
label_singular: Post
|
|
widget: list
|
|
summary: "{{fields.post | split('|', '$1')}}"
|
|
condition:
|
|
field: type
|
|
value: internal
|
|
fields:
|
|
- label: Related Post
|
|
name: post
|
|
widget: relationKitchenSinkPost
|
|
collection: posts
|
|
display_fields:
|
|
- title
|
|
- date
|
|
search_fields:
|
|
- title
|
|
- body
|
|
value_field: '{{title}}|{{date}}'
|
|
- name: widgets
|
|
label: Widgets
|
|
delete: false
|
|
files:
|
|
- name: boolean
|
|
label: Boolean
|
|
file: _widgets/boolean.json
|
|
description: Boolean widget
|
|
fields:
|
|
- name: required
|
|
label: Required Validation
|
|
widget: boolean
|
|
- name: with_default
|
|
label: Required With Default
|
|
widget: boolean
|
|
default: true
|
|
- name: pattern
|
|
label: Pattern Validation
|
|
widget: boolean
|
|
pattern: ['true', 'Must be true']
|
|
required: false
|
|
- name: prefix
|
|
label: With Prefix
|
|
widget: boolean
|
|
prefix: "I'm a prefix"
|
|
- name: suffix
|
|
label: With Suffix
|
|
widget: boolean
|
|
suffix: "I'm a suffix"
|
|
- name: prefix_and_suffix
|
|
label: With Prefix and Suffix
|
|
widget: boolean
|
|
prefix: "I'm a prefix"
|
|
suffix: "I'm a suffix"
|
|
- name: code
|
|
label: Code
|
|
file: _widgets/code.json
|
|
description: Code widget
|
|
fields:
|
|
- name: required
|
|
label: Required Validation
|
|
widget: code
|
|
- name: with_default
|
|
label: Required With Default
|
|
widget: code
|
|
default: '<div>Some html!</div>'
|
|
- name: pattern
|
|
label: Pattern Validation
|
|
widget: code
|
|
pattern: ['.{12,}', 'Must have at least 12 characters']
|
|
allow_input: true
|
|
required: false
|
|
- name: language
|
|
label: Language Selection
|
|
widget: code
|
|
allow_language_selection: true
|
|
required: false
|
|
- name: language_with_default
|
|
label: Language Selection With Default Language
|
|
widget: code
|
|
allow_language_selection: true
|
|
required: false
|
|
default_language: html
|
|
- name: language_with_default_language_and_value
|
|
label: Language Selection With Default Language and Value
|
|
widget: code
|
|
allow_language_selection: true
|
|
required: false
|
|
default:
|
|
lang: html
|
|
code: '<div>Some html!</div>'
|
|
- name: language_with_default_language_and_value_string_default
|
|
label: Language Selection With Default Language and Value (String Default)
|
|
widget: code
|
|
allow_language_selection: true
|
|
required: false
|
|
default_language: html
|
|
default: '<div>Some html!</div>'
|
|
- name: color
|
|
label: Color
|
|
file: _widgets/color.json
|
|
description: Color widget
|
|
fields:
|
|
- name: required
|
|
label: Required Validation
|
|
widget: color
|
|
- name: allow_input
|
|
label: Allow Input
|
|
widget: color
|
|
allow_input: true
|
|
- name: with_default
|
|
label: Required With Default
|
|
widget: color
|
|
default: '#2121c5'
|
|
- name: pattern
|
|
label: Pattern Validation
|
|
widget: color
|
|
pattern:
|
|
['^#[a-fA-F0-9]{3}$|^[a-fA-F0-9]{4}$|^[a-fA-F0-9]{6}$', 'Must be a valid hex code']
|
|
allow_input: true
|
|
required: false
|
|
- name: alpha
|
|
label: Alpha
|
|
widget: color
|
|
enable_alpha: true
|
|
required: false
|
|
- name: alpha_with_default
|
|
label: Alpha With Default
|
|
widget: color
|
|
enable_alpha: true
|
|
required: false
|
|
default: 'rgba(175, 28, 28, 0.65)'
|
|
- name: datetime
|
|
label: DateTime
|
|
file: _widgets/datetime.json
|
|
description: DateTime widget
|
|
fields:
|
|
- name: required
|
|
label: 'Required Validation'
|
|
widget: datetime
|
|
- name: pattern
|
|
label: 'Pattern Validation'
|
|
widget: datetime
|
|
format: 'MMM d, yyyy h:mm aaa'
|
|
date_format: 'MMM d, yyyy'
|
|
time_format: 'h:mm aaa'
|
|
pattern: ['pm', 'Must be in the afternoon']
|
|
required: false
|
|
- name: date_and_time
|
|
label: Date and Time
|
|
widget: datetime
|
|
format: 'MMM d, yyyy h:mm aaa'
|
|
date_format: 'MMM d, yyyy'
|
|
time_format: 'h:mm aaa'
|
|
required: false
|
|
- name: date_and_time_with_default
|
|
label: Date and Time With Default
|
|
widget: datetime
|
|
format: 'MMM d, yyyy h:mm aaa'
|
|
date_format: 'MMM d, yyyy'
|
|
time_format: 'h:mm aaa'
|
|
required: false
|
|
default: 'Jan 12, 2023 12:00 am'
|
|
- name: date
|
|
label: Date
|
|
widget: datetime
|
|
format: 'MMM d, yyyy'
|
|
time_format: false
|
|
required: false
|
|
- name: date_with_default
|
|
label: Date With Default
|
|
widget: datetime
|
|
format: 'MMM d, yyyy'
|
|
date_format: 'MMM d, yyyy'
|
|
time_format: false
|
|
required: false
|
|
default: 'Jan 12, 2023'
|
|
- name: time
|
|
label: Time
|
|
widget: datetime
|
|
format: 'h:mm aaa'
|
|
date_format: false
|
|
time_format: 'h:mm aaa'
|
|
required: false
|
|
- name: time_with_default
|
|
label: Time With Default
|
|
widget: datetime
|
|
format: 'h:mm aaa'
|
|
date_format: false
|
|
time_format: 'h:mm aaa'
|
|
required: false
|
|
default: '12:00 am'
|
|
- name: file
|
|
label: File
|
|
file: _widgets/file.json
|
|
description: File widget
|
|
media_library:
|
|
folder_support: false
|
|
fields:
|
|
- name: required
|
|
label: Required Validation
|
|
widget: file
|
|
- name: with_default
|
|
label: Required With Default
|
|
widget: file
|
|
default: /assets/uploads/moby-dick.jpg
|
|
- name: pattern
|
|
label: Pattern Validation
|
|
widget: file
|
|
pattern: ['\.pdf', 'Must be a pdf']
|
|
required: false
|
|
- name: choose_url
|
|
label: Choose URL
|
|
widget: file
|
|
required: false
|
|
choose_url: true
|
|
- name: multiple
|
|
label: Multiple Files
|
|
widget: file
|
|
required: false
|
|
multiple: true
|
|
- name: multiple_choose_url
|
|
label: Multiple Files, Choose URL
|
|
widget: file
|
|
required: false
|
|
multiple: true
|
|
choose_url: true
|
|
- name: folder_support
|
|
label: Folder Support
|
|
widget: file
|
|
media_library:
|
|
folder_support: true
|
|
- name: image
|
|
label: Image
|
|
file: _widgets/image.json
|
|
description: Image widget
|
|
media_library:
|
|
folder_support: false
|
|
fields:
|
|
- name: required
|
|
label: Required Validation
|
|
widget: image
|
|
- name: with_default
|
|
label: Required With Default
|
|
widget: image
|
|
default: /assets/uploads/moby-dick.jpg
|
|
- name: pattern
|
|
label: Pattern Validation
|
|
widget: image
|
|
pattern: ['\.png', 'Must be a png']
|
|
required: false
|
|
- name: choose_url
|
|
label: Choose URL
|
|
widget: image
|
|
required: false
|
|
choose_url: true
|
|
- name: multiple
|
|
label: Multiple Images
|
|
widget: image
|
|
required: false
|
|
multiple: true
|
|
- name: multiple_choose_url
|
|
label: Multiple Images, Choose URL
|
|
widget: image
|
|
required: false
|
|
multiple: true
|
|
choose_url: true
|
|
- name: folder_support
|
|
label: Folder Support
|
|
widget: image
|
|
media_library:
|
|
folder_support: true
|
|
- name: keyvalue
|
|
label: Key Value
|
|
file: _widgets/keyvalue.yml
|
|
description: Key Value widget
|
|
fields:
|
|
- name: keyvalue
|
|
label: Required
|
|
widget: keyvalue
|
|
- name: with_default
|
|
label: Required With Default
|
|
widget: keyvalue
|
|
default:
|
|
key1: value1
|
|
key2: value2
|
|
key3: value3
|
|
- name: with_min
|
|
label: Required With Min (2)
|
|
widget: keyvalue
|
|
min: 2
|
|
- name: with_max
|
|
label: Required With Max (4)
|
|
widget: keyvalue
|
|
max: 4
|
|
- name: with_min_and_max
|
|
label: Required With Min (2) and Max (4)
|
|
widget: keyvalue
|
|
min: 2
|
|
max: 4
|
|
- name: list
|
|
label: List
|
|
file: _widgets/list.yml
|
|
description: List widget
|
|
fields:
|
|
- name: list
|
|
label: Required List
|
|
widget: list
|
|
fields:
|
|
- label: Name
|
|
name: name
|
|
widget: string
|
|
hint: First and Last
|
|
- label: Description
|
|
name: description
|
|
widget: text
|
|
- name: with_default
|
|
label: Required With Default
|
|
widget: list
|
|
default:
|
|
- name: Bob Billy
|
|
description: Some text about bob
|
|
fields:
|
|
- label: Name
|
|
name: name
|
|
widget: string
|
|
hint: First and Last
|
|
- label: Description
|
|
name: description
|
|
widget: text
|
|
- name: optional
|
|
label: Optional List
|
|
widget: list
|
|
required: false
|
|
fields:
|
|
- label: Name
|
|
name: name
|
|
widget: string
|
|
hint: First and Last
|
|
- label: Description
|
|
name: description
|
|
widget: text
|
|
- name: list_with_object_child
|
|
label: List With Object Child
|
|
widget: list
|
|
fields:
|
|
- label: Name
|
|
name: name
|
|
widget: string
|
|
hint: First and Last
|
|
- label: Description
|
|
name: description
|
|
widget: text
|
|
- label: Object
|
|
name: object
|
|
widget: object
|
|
fields:
|
|
- label: Name
|
|
name: name
|
|
widget: string
|
|
hint: First and Last
|
|
- label: Description
|
|
name: description
|
|
widget: text
|
|
- name: comma_separated_list
|
|
label: Comma Separated List
|
|
widget: list
|
|
- name: delimiter_separated_list
|
|
label: Custom Delimiter (Semicolon) Separated List
|
|
widget: list
|
|
delimiter: ';'
|
|
default:
|
|
- 'tag-1'
|
|
- 'tag-2'
|
|
- name: string_list
|
|
label: String List
|
|
widget: list
|
|
fields:
|
|
- label: Tag
|
|
name: tag
|
|
widget: string
|
|
- name: number_list
|
|
label: Number List
|
|
widget: list
|
|
default:
|
|
- 5
|
|
- 13
|
|
- 2
|
|
fields:
|
|
- label: Value
|
|
name: value
|
|
widget: number
|
|
- name: boolean_list
|
|
label: Boolean List
|
|
widget: list
|
|
default:
|
|
- false
|
|
- true
|
|
fields:
|
|
- label: Active
|
|
name: active
|
|
widget: boolean
|
|
- name: typed_list
|
|
label: Typed List
|
|
widget: list
|
|
types:
|
|
- label: Type 1 Object
|
|
name: type_1_object
|
|
widget: object
|
|
fields:
|
|
- label: String
|
|
name: string
|
|
widget: string
|
|
- label: Boolean
|
|
name: boolean
|
|
widget: boolean
|
|
- label: Text
|
|
name: text
|
|
widget: text
|
|
- label: Type 2 Object
|
|
name: type_2_object
|
|
widget: object
|
|
fields:
|
|
- label: Number
|
|
name: number
|
|
widget: number
|
|
- label: Select
|
|
name: select
|
|
widget: select
|
|
options:
|
|
- a
|
|
- b
|
|
- c
|
|
- label: Datetime
|
|
name: datetime
|
|
widget: datetime
|
|
- label: Markdown
|
|
name: markdown
|
|
widget: markdown
|
|
- label: Type 3 Object
|
|
name: type_3_object
|
|
widget: object
|
|
fields:
|
|
- label: Image
|
|
name: image
|
|
widget: image
|
|
- label: File
|
|
name: file
|
|
widget: file
|
|
- name: typed_list_with_default
|
|
label: Typed List With Default
|
|
widget: list
|
|
default:
|
|
- type: type_2_object
|
|
number: 5
|
|
select: c
|
|
datetime: '2022-12-05T20:22:52+0000'
|
|
markdown: Some ***Markdown*** ~content~ text
|
|
types:
|
|
- label: Type 1 Object
|
|
name: type_1_object
|
|
widget: object
|
|
fields:
|
|
- label: String
|
|
name: string
|
|
widget: string
|
|
- label: Boolean
|
|
name: boolean
|
|
widget: boolean
|
|
- label: Text
|
|
name: text
|
|
widget: text
|
|
- label: Type 2 Object
|
|
name: type_2_object
|
|
widget: object
|
|
summary: "{{datetime | date('yyyy-MM-dd')}}"
|
|
fields:
|
|
- label: Number
|
|
name: number
|
|
widget: number
|
|
- label: Select
|
|
name: select
|
|
widget: select
|
|
options:
|
|
- a
|
|
- b
|
|
- c
|
|
- label: Datetime
|
|
name: datetime
|
|
widget: datetime
|
|
- label: Markdown
|
|
name: markdown
|
|
widget: markdown
|
|
- label: Type 3 Object
|
|
name: type_3_object
|
|
widget: object
|
|
fields:
|
|
- label: Image
|
|
name: image
|
|
widget: image
|
|
- label: File
|
|
name: file
|
|
widget: file
|
|
- name: typed_list_with_condition
|
|
label: Typed List With Condition
|
|
widget: list
|
|
types:
|
|
- label: Type 1 Object
|
|
name: type_1_object
|
|
widget: object
|
|
fields:
|
|
- name: template
|
|
label: template
|
|
widget: select
|
|
options:
|
|
- column
|
|
- row
|
|
- banner
|
|
default: column
|
|
- label: String
|
|
name: string
|
|
widget: string
|
|
- label: Boolean
|
|
name: boolean
|
|
widget: boolean
|
|
condition:
|
|
field: template
|
|
value: banner
|
|
- label: Text
|
|
name: text
|
|
widget: text
|
|
- label: Type 2 Object
|
|
name: type_2_object
|
|
widget: object
|
|
fields:
|
|
- label: Number
|
|
name: number
|
|
widget: number
|
|
- label: Select
|
|
name: select
|
|
widget: select
|
|
options:
|
|
- a
|
|
- b
|
|
- c
|
|
- label: Datetime
|
|
name: datetime
|
|
widget: datetime
|
|
- label: Markdown
|
|
name: markdown
|
|
widget: markdown
|
|
- label: Type 3 Object
|
|
name: type_3_object
|
|
widget: object
|
|
fields:
|
|
- label: Image
|
|
name: image
|
|
widget: image
|
|
- label: File
|
|
name: file
|
|
widget: file
|
|
- name: map
|
|
label: Map
|
|
file: _widgets/map.json
|
|
description: Map widget
|
|
fields:
|
|
- name: required
|
|
label: Required Validation
|
|
widget: map
|
|
- name: with_default
|
|
label: Required With Default
|
|
widget: map
|
|
default: '{ "type": "Point", "coordinates": [-73.9852661, 40.7478738] }'
|
|
- name: pattern
|
|
label: Pattern Validation
|
|
widget: map
|
|
pattern: ['\[-([7-9][0-9]|1[0-2][0-9])\.', 'Must be between latitude -70 and -129']
|
|
required: false
|
|
- name: line_string
|
|
label: Line String
|
|
type: LineString
|
|
widget: map
|
|
required: false
|
|
- name: polygon
|
|
label: Polygon
|
|
type: Polygon
|
|
widget: map
|
|
required: false
|
|
- name: markdown
|
|
label: Markdown
|
|
file: _widgets/markdown.json
|
|
description: Markdown widget
|
|
fields:
|
|
- name: required
|
|
label: Required Validation
|
|
widget: markdown
|
|
- name: with_default
|
|
label: Required With Default
|
|
widget: markdown
|
|
default: Default **markdown** value
|
|
- name: raw
|
|
label: Raw Editor
|
|
widget: markdown
|
|
show_raw: true
|
|
- name: pattern
|
|
label: Pattern Validation
|
|
widget: markdown
|
|
pattern: ['# [a-zA-Z0-9]+', 'Must have a header']
|
|
required: false
|
|
- name: folder_support
|
|
label: Folder Support
|
|
widget: markdown
|
|
media_library:
|
|
folder_support: true
|
|
- name: customized_buttons
|
|
label: Customized Buttons
|
|
widget: markdown
|
|
toolbar_buttons:
|
|
main:
|
|
- bold
|
|
- italic
|
|
- font
|
|
- shortcode
|
|
- label: Insert
|
|
groups:
|
|
- items: ['image', 'file-link']
|
|
- items: ['insert-table']
|
|
empty:
|
|
- bold
|
|
- italic
|
|
- font
|
|
- label: Insert
|
|
groups:
|
|
- items: ['image', 'file-link']
|
|
- items: ['blockquote', 'code-block']
|
|
selection:
|
|
- bold
|
|
- italic
|
|
- font
|
|
- file-link
|
|
table_empty:
|
|
- insert-row
|
|
- insert-column
|
|
- delete-row
|
|
- delete-column
|
|
- delete-table
|
|
table_selection:
|
|
- bold
|
|
- italic
|
|
- font
|
|
- name: number
|
|
label: Number
|
|
file: _widgets/number.json
|
|
description: Number widget
|
|
fields:
|
|
- name: required
|
|
label: Required Validation
|
|
widget: number
|
|
- name: with_default
|
|
label: Required With Default
|
|
widget: number
|
|
default: 5
|
|
- name: min
|
|
label: Min Validation
|
|
widget: number
|
|
min: 5
|
|
required: false
|
|
- name: max
|
|
label: Max Validation
|
|
widget: number
|
|
max: 10
|
|
required: false
|
|
- name: min_and_max
|
|
label: Min and Max Validation
|
|
widget: number
|
|
min: 5
|
|
max: 10
|
|
required: false
|
|
- name: pattern
|
|
label: Pattern Validation
|
|
widget: number
|
|
pattern: ['[0-9]{3,}', 'Must be at least 3 digits']
|
|
required: false
|
|
- name: prefix
|
|
label: With Prefix
|
|
widget: number
|
|
prefix: '$'
|
|
- name: suffix
|
|
label: With Suffix
|
|
widget: number
|
|
suffix: '%'
|
|
- name: prefix_and_suffix
|
|
label: With Prefix and Suffix
|
|
widget: number
|
|
prefix: '$'
|
|
suffix: '%'
|
|
- name: object
|
|
label: Object
|
|
file: _widgets/object.json
|
|
description: Object widget
|
|
fields:
|
|
- label: Required Validation
|
|
name: required
|
|
widget: object
|
|
fields:
|
|
- label: Number of posts on frontpage
|
|
name: front_limit
|
|
widget: number
|
|
- label: Author
|
|
name: author
|
|
widget: string
|
|
- label: Thumbnail
|
|
name: thumb
|
|
widget: image
|
|
- label: Required With Defaults
|
|
name: with_defaults
|
|
widget: object
|
|
fields:
|
|
- label: Number of posts on frontpage
|
|
name: front_limit
|
|
widget: number
|
|
default: 5
|
|
- label: Author
|
|
name: author
|
|
widget: string
|
|
default: Bob
|
|
- label: Thumbnail
|
|
name: thumb
|
|
widget: image
|
|
default: /assets/uploads/moby-dick.jpg
|
|
- label: Optional Validation
|
|
name: optional
|
|
widget: object
|
|
required: false
|
|
fields:
|
|
- label: Number of posts on frontpage
|
|
name: front_limit
|
|
widget: number
|
|
required: false
|
|
- label: Author
|
|
name: author
|
|
widget: string
|
|
required: false
|
|
- label: Thumbnail
|
|
name: thumb
|
|
widget: image
|
|
required: false
|
|
- label: With Hidden Field
|
|
name: hidden_field
|
|
widget: object
|
|
required: false
|
|
fields:
|
|
- name: layout
|
|
widget: hidden
|
|
default: post
|
|
- label: Number of posts on frontpage
|
|
name: front_limit
|
|
widget: number
|
|
required: false
|
|
- label: Author
|
|
name: author
|
|
widget: string
|
|
required: false
|
|
- label: Thumbnail
|
|
name: thumb
|
|
widget: image
|
|
required: false
|
|
- label: Collapsed, optional with required children
|
|
name: collapsed_optional_with_required_children
|
|
widget: object
|
|
required: false
|
|
collapsed: true
|
|
fields:
|
|
- name: layout
|
|
widget: hidden
|
|
default: post
|
|
- label: Number of posts on frontpage
|
|
name: front_limit
|
|
widget: number
|
|
required: true
|
|
- label: Author
|
|
name: author
|
|
widget: string
|
|
required: true
|
|
- label: Thumbnail
|
|
name: thumb
|
|
widget: image
|
|
required: true
|
|
- name: relation
|
|
label: Relation
|
|
file: _widgets/relation.json
|
|
description: Relation widget
|
|
fields:
|
|
- label: Required Validation
|
|
name: required
|
|
widget: relation
|
|
collection: posts
|
|
display_fields:
|
|
- title
|
|
- date
|
|
search_fields:
|
|
- title
|
|
- date
|
|
value_field: title
|
|
- label: Required With Default
|
|
name: with_default
|
|
widget: relation
|
|
collection: posts
|
|
display_fields:
|
|
- title
|
|
- date
|
|
search_fields:
|
|
- title
|
|
- date
|
|
value_field: title
|
|
default: This is a YAML front matter post
|
|
- label: Optional Validation
|
|
name: optional
|
|
widget: relation
|
|
required: false
|
|
collection: posts
|
|
display_fields:
|
|
- title
|
|
- date
|
|
search_fields:
|
|
- title
|
|
- date
|
|
value_field: title
|
|
- label: Multiple
|
|
name: multiple
|
|
widget: relation
|
|
multiple: true
|
|
required: false
|
|
collection: posts
|
|
display_fields:
|
|
- title
|
|
- date
|
|
search_fields:
|
|
- title
|
|
- date
|
|
value_field: title
|
|
- label: Multiple With Default
|
|
name: multiple_with_default
|
|
widget: relation
|
|
multiple: true
|
|
required: false
|
|
collection: posts
|
|
default:
|
|
- This is a JSON front matter post
|
|
- This is a YAML front matter post
|
|
display_fields:
|
|
- title
|
|
- date
|
|
search_fields:
|
|
- title
|
|
- date
|
|
value_field: title
|
|
- name: select
|
|
label: Select
|
|
file: _widgets/select.json
|
|
description: Select widget
|
|
fields:
|
|
- label: Required Validation
|
|
name: required
|
|
widget: select
|
|
options:
|
|
- a
|
|
- b
|
|
- c
|
|
- label: Required With Default
|
|
name: with_default
|
|
widget: select
|
|
default: b
|
|
options:
|
|
- a
|
|
- b
|
|
- c
|
|
- label: Pattern Validation
|
|
name: pattern
|
|
widget: select
|
|
options:
|
|
- a
|
|
- b
|
|
- c
|
|
pattern: ['[a-b]', 'Must be a or b']
|
|
required: false
|
|
- label: Number Value
|
|
name: number
|
|
widget: select
|
|
options:
|
|
- 1
|
|
- 2
|
|
- 3
|
|
- label: Number With Default
|
|
name: number_with_default
|
|
widget: select
|
|
default: 3
|
|
options:
|
|
- 1
|
|
- 2
|
|
- 3
|
|
- label: Value and Label
|
|
name: value_and_label
|
|
widget: select
|
|
options:
|
|
- value: a
|
|
label: A fancy label
|
|
- value: 2
|
|
label: Another fancy label
|
|
- value: c
|
|
label: And one more fancy label
|
|
- label: Value and Label With Default
|
|
name: value_and_label_with_default
|
|
widget: select
|
|
default: 2
|
|
options:
|
|
- value: a
|
|
label: A fancy label
|
|
- value: 2
|
|
label: Another fancy label
|
|
- value: c
|
|
label: And one more fancy label
|
|
- label: Multiple
|
|
name: multiple
|
|
widget: select
|
|
options:
|
|
- a
|
|
- b
|
|
- c
|
|
pattern: ['[a-b]', 'Must be a or b']
|
|
multiple: true
|
|
required: false
|
|
- label: Multiple With Default
|
|
name: multiple_with_default
|
|
widget: select
|
|
default:
|
|
- b
|
|
- c
|
|
options:
|
|
- a
|
|
- b
|
|
- c
|
|
pattern: ['[a-b]', 'Must be a or b']
|
|
multiple: true
|
|
required: false
|
|
- label: Value and Label Multiple
|
|
name: value_and_label_multiple
|
|
widget: select
|
|
multiple: true
|
|
options:
|
|
- value: a
|
|
label: A fancy label
|
|
- value: b
|
|
label: Another fancy label
|
|
- value: c
|
|
label: And one more fancy label
|
|
- name: string
|
|
label: String
|
|
file: _widgets/string.json
|
|
description: String widget
|
|
fields:
|
|
- name: required
|
|
label: Required Validation
|
|
widget: string
|
|
- name: with_default
|
|
label: Required With Default
|
|
widget: string
|
|
default: Default value
|
|
- name: pattern
|
|
label: Pattern Validation
|
|
widget: string
|
|
pattern: ['.{12,}', 'Must have at least 12 characters']
|
|
required: false
|
|
- name: prefix
|
|
label: With Prefix
|
|
widget: string
|
|
prefix: '$'
|
|
- name: suffix
|
|
label: With Suffix
|
|
widget: string
|
|
suffix: '%'
|
|
- name: prefix_and_suffix
|
|
label: With Prefix and Suffix
|
|
widget: string
|
|
prefix: '$'
|
|
suffix: '%'
|
|
- name: text
|
|
label: Text
|
|
file: _widgets/text.json
|
|
description: Text widget
|
|
fields:
|
|
- name: required
|
|
label: 'Required Validation'
|
|
widget: text
|
|
- name: with_default
|
|
label: Required With Default
|
|
widget: text
|
|
default: Default value
|
|
- name: pattern
|
|
label: 'Pattern Validation'
|
|
widget: text
|
|
pattern: ['.{12,}', 'Must have at least 12 characters']
|
|
required: false
|
|
- name: uuid
|
|
label: UUID
|
|
file: _widgets/uuid.json
|
|
description: UUID widget
|
|
fields:
|
|
- name: uuid
|
|
label: UUID
|
|
widget: uuid
|
|
- name: no_regenerate
|
|
label: Does not allow regeneration
|
|
widget: uuid
|
|
allow_regenerate: false
|
|
- name: with_prefix
|
|
label: With Prefix
|
|
widget: uuid
|
|
prefix: 'book/'
|
|
- name: settings
|
|
label: Settings
|
|
delete: false
|
|
editor:
|
|
preview: false
|
|
files:
|
|
- name: general
|
|
label: Site Settings
|
|
file: _data/settings.json
|
|
description: General Site Settings
|
|
fields:
|
|
- label: Global title
|
|
name: site_title
|
|
widget: string
|
|
- label: Post Settings
|
|
name: posts
|
|
widget: object
|
|
fields:
|
|
- label: Number of posts on frontpage
|
|
name: front_limit
|
|
widget: number
|
|
min: 1
|
|
max: 10
|
|
- label: Default Author
|
|
name: author
|
|
widget: string
|
|
- label: Default Thumbnail
|
|
name: thumb
|
|
widget: image
|
|
required: false
|
|
- name: authors
|
|
label: Authors
|
|
file: _data/authors.yml
|
|
description: Author descriptions
|
|
editor:
|
|
preview: true
|
|
fields:
|
|
- name: authors
|
|
label: Authors
|
|
label_singular: Author
|
|
widget: list
|
|
fields:
|
|
- label: Name
|
|
name: name
|
|
widget: string
|
|
hint: First and Last
|
|
- label: Description
|
|
name: description
|
|
widget: text
|
|
- name: kitchenSink
|
|
label: Kitchen Sink
|
|
folder: _sink
|
|
create: true
|
|
fields:
|
|
- label: Related Post
|
|
name: post
|
|
widget: relationKitchenSinkPost
|
|
collection: posts
|
|
display_fields:
|
|
- title
|
|
- date
|
|
search_fields:
|
|
- title
|
|
- body
|
|
value_field: title
|
|
- label: Title
|
|
name: title
|
|
widget: string
|
|
- label: Boolean
|
|
name: boolean
|
|
widget: boolean
|
|
default: true
|
|
- label: Map
|
|
name: map
|
|
widget: map
|
|
- label: Text
|
|
name: text
|
|
widget: text
|
|
hint: 'Plain text, not markdown'
|
|
- label: Number
|
|
name: number
|
|
widget: number
|
|
hint: To infinity and beyond!
|
|
- label: Markdown
|
|
name: markdown
|
|
widget: markdown
|
|
- label: Datetime
|
|
name: datetime
|
|
widget: datetime
|
|
- label: Color
|
|
name: color
|
|
widget: color
|
|
- label: Color string editable and alpha enabled
|
|
name: colorEditable
|
|
widget: color
|
|
enable_alpha: true
|
|
allow_input: true
|
|
- label: Image
|
|
name: image
|
|
widget: image
|
|
- label: File
|
|
name: file
|
|
widget: file
|
|
- label: Select
|
|
name: select
|
|
widget: select
|
|
options:
|
|
- a
|
|
- b
|
|
- c
|
|
- label: Select multiple
|
|
name: select_multiple
|
|
widget: select
|
|
options:
|
|
- a
|
|
- b
|
|
- c
|
|
multiple: true
|
|
- label: Select numeric
|
|
name: select_numeric
|
|
widget: select
|
|
options:
|
|
- label: One
|
|
value: 1
|
|
- label: Two
|
|
value: 2
|
|
- label: Three
|
|
value: 3
|
|
- label: Select mixed string and numeric
|
|
name: select_mixed_string_numeric
|
|
widget: select
|
|
options:
|
|
- label: One
|
|
value: 'One'
|
|
- label: Two
|
|
value: 2
|
|
- label: Three
|
|
value: 3
|
|
- label: Hidden
|
|
name: hidden
|
|
widget: hidden
|
|
default: hidden
|
|
- label: Object
|
|
name: object
|
|
widget: object
|
|
collapsed: true
|
|
fields:
|
|
- label: Related Post
|
|
name: post
|
|
widget: relationKitchenSinkPost
|
|
collection: posts
|
|
search_fields:
|
|
- title
|
|
- body
|
|
value_field: title
|
|
- label: String
|
|
name: string
|
|
widget: string
|
|
- label: Boolean
|
|
name: boolean
|
|
widget: boolean
|
|
default: false
|
|
- label: Text
|
|
name: text
|
|
widget: text
|
|
- label: Number
|
|
name: number
|
|
widget: number
|
|
- label: Markdown
|
|
name: markdown
|
|
widget: markdown
|
|
- label: Datetime
|
|
name: datetime
|
|
widget: datetime
|
|
- label: Image
|
|
name: image
|
|
widget: image
|
|
- label: File
|
|
name: file
|
|
widget: file
|
|
- label: Select
|
|
name: select
|
|
widget: select
|
|
options:
|
|
- a
|
|
- b
|
|
- c
|
|
- label: List
|
|
name: list
|
|
widget: list
|
|
fields:
|
|
- label: String
|
|
name: string
|
|
widget: string
|
|
- label: Boolean
|
|
name: boolean
|
|
widget: boolean
|
|
- label: Text
|
|
name: text
|
|
widget: text
|
|
- label: Number
|
|
name: number
|
|
widget: number
|
|
- label: Markdown
|
|
name: markdown
|
|
widget: markdown
|
|
- label: Datetime
|
|
name: datetime
|
|
widget: datetime
|
|
- label: Image
|
|
name: image
|
|
widget: image
|
|
- label: File
|
|
name: file
|
|
widget: file
|
|
- label: Select
|
|
name: select
|
|
widget: select
|
|
options:
|
|
- a
|
|
- b
|
|
- c
|
|
- label: Object
|
|
name: object
|
|
widget: object
|
|
fields:
|
|
- label: String
|
|
name: string
|
|
widget: string
|
|
- label: Boolean
|
|
name: boolean
|
|
widget: boolean
|
|
- label: Text
|
|
name: text
|
|
widget: text
|
|
- label: Number
|
|
name: number
|
|
widget: number
|
|
- label: Markdown
|
|
name: markdown
|
|
widget: markdown
|
|
- label: Datetime
|
|
name: datetime
|
|
widget: datetime
|
|
- label: Image
|
|
name: image
|
|
widget: image
|
|
- label: File
|
|
name: file
|
|
widget: file
|
|
- label: Select
|
|
name: select
|
|
widget: select
|
|
options:
|
|
- a
|
|
- b
|
|
- c
|
|
- label: List
|
|
name: list
|
|
widget: list
|
|
fields:
|
|
- label: Related Post
|
|
name: post
|
|
widget: relationKitchenSinkPost
|
|
collection: posts
|
|
search_fields:
|
|
- title
|
|
- body
|
|
value_field: title
|
|
- label: String
|
|
name: string
|
|
widget: string
|
|
- label: Boolean
|
|
name: boolean
|
|
widget: boolean
|
|
- label: Text
|
|
name: text
|
|
widget: text
|
|
- label: Number
|
|
name: number
|
|
widget: number
|
|
- label: Markdown
|
|
name: markdown
|
|
widget: markdown
|
|
- label: Datetime
|
|
name: datetime
|
|
widget: datetime
|
|
- label: Image
|
|
name: image
|
|
widget: image
|
|
- label: File
|
|
name: file
|
|
widget: file
|
|
- label: Select
|
|
name: select
|
|
widget: select
|
|
options:
|
|
- a
|
|
- b
|
|
- c
|
|
- label: Hidden
|
|
name: hidden
|
|
widget: hidden
|
|
default: hidden
|
|
- label: Object
|
|
name: object
|
|
widget: object
|
|
fields:
|
|
- label: String
|
|
name: string
|
|
widget: string
|
|
- label: Boolean
|
|
name: boolean
|
|
widget: boolean
|
|
- label: Text
|
|
name: text
|
|
widget: text
|
|
- label: Number
|
|
name: number
|
|
widget: number
|
|
- label: Markdown
|
|
name: markdown
|
|
widget: markdown
|
|
- label: Datetime
|
|
name: datetime
|
|
widget: datetime
|
|
- label: Image
|
|
name: image
|
|
widget: image
|
|
- label: File
|
|
name: file
|
|
widget: file
|
|
- label: Select
|
|
name: select
|
|
widget: select
|
|
options:
|
|
- a
|
|
- b
|
|
- c
|
|
- label: Typed List
|
|
name: typed_list
|
|
widget: list
|
|
types:
|
|
- label: Type 1 Object
|
|
name: type_1_object
|
|
widget: object
|
|
fields:
|
|
- label: String
|
|
name: string
|
|
widget: string
|
|
- label: Boolean
|
|
name: boolean
|
|
widget: boolean
|
|
- label: Text
|
|
name: text
|
|
widget: text
|
|
- label: Type 2 Object
|
|
name: type_2_object
|
|
widget: object
|
|
fields:
|
|
- label: Number
|
|
name: number
|
|
widget: number
|
|
- label: Select
|
|
name: select
|
|
widget: select
|
|
options:
|
|
- a
|
|
- b
|
|
- c
|
|
- label: Datetime
|
|
name: datetime
|
|
widget: datetime
|
|
- label: Markdown
|
|
name: markdown
|
|
widget: markdown
|
|
- label: Type 3 Object
|
|
name: type_3_object
|
|
widget: object
|
|
fields:
|
|
- label: Image
|
|
name: image
|
|
widget: image
|
|
- label: File
|
|
name: file
|
|
widget: file
|
|
- name: i18n_playground
|
|
label: i18n Playground
|
|
i18n: true
|
|
folder: _i18n_playground
|
|
identifier_field: slug
|
|
create: true
|
|
fields:
|
|
# The slug field will be omitted from the translation.
|
|
- name: slug
|
|
label: Slug
|
|
widget: string
|
|
# same as 'i18n: translate'. Allows translation of the description field
|
|
- name: description
|
|
label: Description
|
|
widget: text
|
|
i18n: true
|
|
# The date field will be duplicated from the default locale.
|
|
- name: date
|
|
label: Date
|
|
widget: datetime
|
|
i18n: duplicate
|
|
- name: pages
|
|
label: Nested Pages
|
|
label_singular: 'Page'
|
|
folder: _nested_pages
|
|
create: true
|
|
# adding a nested object will show the collection folder structure
|
|
nested:
|
|
depth: 100 # max depth to show in the collection tree
|
|
summary: '{{title}}' # optional summary for a tree node, defaults to the inferred title field
|
|
# adding a path object allows editing the path of entries
|
|
# moving an existing entry will move the entire sub tree of the entry to the new location
|
|
path: { label: 'Path', index_file: 'index' }
|
|
fields:
|
|
- label: Title
|
|
name: title
|
|
widget: string
|
|
- label: Body
|
|
name: body
|
|
widget: markdown
|