25.0.0 • Published 3 years ago

@keystone-next/fields-legacy v25.0.0

Weekly downloads
-
License
MIT
Repository
github
Last release
3 years ago

Fields

Keystone contains a set of primitive fields types that can be imported from the @keystone-next/fields-legacy package:

Field typeDescription
CheckboxA single Boolean value
DateTimeUtcRepresents points in time, stored in UTC
DecimalExact, numeric values in base-10; useful for currency, etc.
FileFiles backed various storage mediums: local filesystem, cloud based hosting, etc.
FloatAn imprecise numeric value, stored as a floating point
IntegerA whole number
PasswordA bcrypt hash of the value supplied;
RelationshipA link between the current list and others, often paired with a field on the other list
SelectOne of several predefined string values, presented as a dropdown
TextA basic but versatile text field of arbitrary length
VirtualRead-only field with a developer-defined resolver, executed on read

In addition to these, some complex types are packaged separately:

Field typeDescription
AutoIncrementAn automatically incrementing integer; the default type for id fields when using the Prisma DB adapter
CloudinaryImageAllows uploading images to the Cloudinary image hosting service

Tip: Need something else? Keystone lets you create custom field types to support almost any use case.

Usage

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:

const { Text } = require('@keystone-next/fields-legacy');

keystone.createList('Post', {
  fields: {
    title: { type: Text },
  },
});

Config

Fields share some standard configuration options.

OptionTypeDefaultDescription
typeFieldType(required)
schemaDocStringfalseA description for the field used in the GraphQL schema.
defaultValueAny | FunctionundefinedA valid default value for the field type. Functions must return a valid value. Use undefined to set no default, and null to set an empty default.
isUniqueBooleanfalseWhether or not the field should be unique.
isRequiredBooleanfalseWhether or not the field should be mandatory.
accessBoolean | Function | ObjecttrueSee: Access control options for fields.
labelStringLabel for the field.

Note: Many field types have additional config options. See the documentation for individual field types for more detail.

type

A valid Keystone field type.

label

Sets the label for the field in the AdminUI

schemaDoc

A description of the field used used in the GraphQL schema.

defaultValue

Sets the value when no data is provided.

keystone.createList('Post', {
  fields: {
    title: {
      type: Text,
      defaultValue: ({ context, originalInput }) => {
        /**/
      },
    },
    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.

isUnique

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.

isRequired

Specifies whether the field is required or not. Will return an error if mutations do not contain data.

access

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.

cacheHint

HTTP cache hint for field.

Only static hints are supported for fields.