We are using 'Redux-form' throughout our application. This has made it simple to apply proper validation (inclu async), two-way data binding (initialize from store), and write cleaner, more reusable code (pre-defined input types & validation etc..).
We are currently exporting two pre-defined constants for the following field types:
Please see: 'Frontend/src/client/common/forms/input-types/index.js'
Please ensure you export new constants from this file if you require any new field types. It is important to be aware that the styles for these inputs can be found within 'src/assets/scss/base/_forms.scss' and that each have multiple variations in terms of both functionality and design determined by the presence of additional classes.
Be careful when manipulating the mark-up of these constants, as these field types are used throughout the application.
Please see existing forms within the Frontend web application for implementation examples.