KeystoneJS contains a set of primitive fields types that can be imported from @keystonejs/fields
. These include:
- CalendarDay
- Checkbox
- CloudinaryImage
- Color
- Content
- DateTime
- Decimal
- File
- Float
- Integer
- Location
- OEmbed
- Password
- Relationship
- Select
- Slug
- Text
- Unsplash
- Url
- Uuid
In addition to these are some other complex types that have their own package such as Markdown
and Wysiwyg
.
Need more? See our guide on Custom field types.
Fields definitions are provided when creating a list. Field definitions should be an object where the key is the field name and the value is an object containing the fields config:
keystone.createList('Post', {
fields: {
title: { type: Text },
},
});
Fields share some standard configuration options.
Option | Type | Default | Description |
---|---|---|---|
type |
FieldType |
(required) | |
schemaDoc |
String |
false |
A description for the field used in the AdminUI. |
defaultValue |
Boolean | Function |
undefined |
A default value of the field. |
isUnique |
Boolean |
false |
Whether or not the field should be unique. |
isRequired |
Boolean |
false |
Whether or not the field should be mandatory. |
access |
Boolean | Function | Object |
true |
See: Access control options for fields. |
label |
String |
Label for the field. |
Note: Many field types have additional config options. See the documentation for individual field types for more detail.
A valid Keystone
field type.
Sets the label for the field in the AdminUI
A description of the field used in the AdminUI.
Sets the value when no data is provided.
keystone.createList('Post', {
fields: {
title: {
type: Text,
defaultValue: ({ existingItem, context, originalInput, actions }) => {
/**/
},
},
description: { type: Text, defaultValue: 'Lorem ipsum...' },
},
});
For a 'nullable' field, set defaultValue: null
.
The defaultValue
can be a String
or Function
. Functions should returns the value, or a Promise for the value.
Specifies whether the value should be unique or not. Will return an error is a user tries to create a field with a non-unique value.
Specifies whether the field is required or not. Will return an error if mutations do not contain data.
Access control options for fields.
Options for create
, read
, update
and delete
- can be a function or Boolean. See the access control API documentation for more details.
Note: Field level access control does not accept graphQL where clauses.
HTTP cache hint for field.
Only static hints are supported for fields.