Field editors
React components and extensions for building Contentful entry editor
This is the monorepo for all field editors and apps by [Contentful][contentful]. The project is written primarily in TypeScript, distributed under the MIT License license, first published in 2019. Key topics include: contentful, contentful-ui-extension, field-editor, monorepo, react.
@contentful/field-editors
This is the monorepo for all field editors and apps by Contentful.
Since these are developed using the App SDK, this will allow you to understand how each editor works, fork existing apps or create your own apps based on existing Contentful components' source rather than starting from scratch.
It uses Typescript, React, Forma36 (a design system & component library by Contentful) and is managed using Lerna. It supports translations with linguiJs. Code is automatically formatted with Prettier and checked with ESLint on every commit using Git hooks.
Available field editors
Playground with all components: http://contentful-field-editors.colorfuldemo.com/
This repository has all editorial components that you can find in the Contentful Web application.
You can run each of these component as a custom field app or compose them into a custom entry app.
You could also use these components as the basis for a custom Contentful App
- Single line editor
- Multi line editor
- Dropdown
- Tags
- List
- Checkbox
- Radio
- Boolean
- Rating
- Number
- Url
- JSON
- Location
- Date
- Markdown
- Slug
- Entry reference / Media
- Rich Text
Also this repository contains shared packages that simplify development and testing of field and entry apps.
Feel free to reach out to us with the ones that'd be the most useful to have
here by filing a Github issue!
Styles
To achieve the same field editor look as in the Contentful UI, you need to render GlobalStyled component.
jsximport { GlobalStyles } from '@contentful/f36-components'; function Root() { return ( <> <GlobalStyles /> <MyApp /> </> ); }
Getting started & contributing
Requirements
- Node.js:
>=20 - Yarn:
>=1.21.1
To install all dependencies and build all packages run the following commands from the root of the project.
yarn
yarn build
See CONTRIBUTING.md for more information on how to get started.
We'd love to have your helping hand on @contentful/field-editors!
Creating a canary release
Canary releases allow you to test changes before they are merged to the main branch.
Steps
- Create a pull request targeting the
canarybranch (instead ofmaster) - Once the PR is merged to
canary, CircleCI will automatically:- Build all packages
- Run tests
- Create a canary version (e.g.,
1.2.3-canary.123.abc1234) - Publish to npm with the
canarytag
- You can install the canary version in your project:
bash
yarn add @contentful/field-editor-reference@canaryversion
Notes
- Canary releases are temporary and intended for testing only
- Each merge to the
canarybranch will create a new canary version - Canary versions follow the format:
{version}-canary.{prNumber}.{shortSha}
Links & related repositories
Code of Conduct
We want to provide a safe, inclusive, welcoming, and harassment-free space and experience for all participants, regardless of gender identity and expression, sexual orientation, disability, physical appearance, socioeconomic status, body size, ethnicity, nationality, level of experience, age, religion (or lack thereof), or other identity markers.
Read our full Code of Conduct.
License
All field editor packages are open source software licensed as MIT.
Internationalization
The latest versions of field editors are internationalized with lingui. Any app using the latest field editors needs to include the @lingui/core and @lingui/message-utils packages and initialize lingui like this before rendering field editors:
javascriptimport { i18n } from '@lingui/core'; import { compileMessage } from '@lingui/message-utils/compileMessage'; ... i18n.setMessagesCompiler(compileMessage); i18n.activate('en-US'); // use desired locale code const App = () => { ... };
Contributors
Showing top 12 contributors by commit count.
