diff --git a/.changeset/blue-ways-work.md b/.changeset/blue-ways-work.md new file mode 100644 index 00000000000..c5f9b61887a --- /dev/null +++ b/.changeset/blue-ways-work.md @@ -0,0 +1,28 @@ +--- +'@keystonejs/app-admin-ui': minor +'@keystonejs/field-content': minor +'@keystonejs/fields-markdown': minor +'@keystonejs/fields-wysiwyg-tinymce': minor +'@keystonejs/fields': minor +'@keystonejs/cypress-project-access-control': patch +--- + +* Added `isReadOnly` option on field's `adminConfig`. Fields with this option set will be excluded from the `create` form, and set as disabled in the `update` form in the Admin UI. +* Updated the item detail page to include fields with access `{ update: false }` in a disabled state, rather than excluded the form. + +Example: + +```js +keystone.createList('Todo', { + fields: { + name: { type: Text, isRequired: true }, + someReadOnlyField: { + type: Text, + adminConfig: { + isReadOnly: true, + }, + defaultValue: 'Some default value', + }, + }, +}); +``` diff --git a/packages/app-admin-ui/client/components/CreateItemModal.js b/packages/app-admin-ui/client/components/CreateItemModal.js index b034affa450..cba8e0e7875 100644 --- a/packages/app-admin-ui/client/components/CreateItemModal.js +++ b/packages/app-admin-ui/client/components/CreateItemModal.js @@ -192,6 +192,7 @@ const CreateItemModal = ({ prefillData = {}, onClose, onCreate }) => { {() => { const creatable = list.fields .filter(({ isPrimaryKey }) => !isPrimaryKey) + .filter(({ isReadOnly }) => !isReadOnly) .filter(({ maybeAccess }) => !!maybeAccess.create); captureSuspensePromises(creatable.map(field => () => field.initFieldView())); diff --git a/packages/app-admin-ui/client/pages/Item/index.js b/packages/app-admin-ui/client/pages/Item/index.js index 01e219d6853..5dae6e73366 100644 --- a/packages/app-admin-ui/client/pages/Item/index.js +++ b/packages/app-admin-ui/client/pages/Item/index.js @@ -44,6 +44,8 @@ const Form = props =>