The YAML Form module provides an intuitive form builder based upon Drupal 8’s best practices for user interface and user experience. The form builder allows non-technical users to easily build and maintain forms.
Form builder features include:
- Drag-n-drop form element management
- Generation of test submissions
- Duplication of existing forms, templates, and elements
Form submission handling, messaging, and confirmations are completely customizable using global settings and/or form-specific settings.
Form settings that can be customized include:
- Messages and button labels
- Confirmation page, messages, and redirects
- Confidential submissions
- Prepopulating a form’s elements using query string parameters
- Limiting number of submission per user, per form, and/or per node
The YAML Form module is built directly on top of Drupal 8’s Form API. Every form element available in Drupal 8 is supported by the YAML Form module.
Form elements include:
- HTML: Textfield, Textareas, Checkboxes, Radios, Select menu, Password, and more…
- HTML5: Email, Url, Number, Telephone), Date, Number, Range, and more…
- Drupal specific File uploads, Entity References, Table select, Date list, and more…
- Custom: Likert scale, Star rating, Toggle, Credit card number, Select/Checkboxes/Radios with other, and more…
- Composite elements: Address, Contact, and Credit Card
All of Drupal 8’s default form element properties and behaviors are supported. There are also several custom form element properties and settings available to enhance a form element’s behavior.
Standard and custom properties allow for:
- Conditional logic using FAPI States API
- Input masks (using jquery.inputmask)
- Select2 replacement of select boxes
- Private elements, visible only to administrators
- Unique values per element
At the heart of a YAML Form module’s form elements is a Drupal render array, which can be edited and managed by developers. The Drupal render array gives developers complete control over a form’s elements, layout, and look-and-feel by allowing developers to make bulk updates to a form’s label, descriptions, and behaviors.
Drupal’s State API can be used by developers to provide conditional logic to hide and show form elements.
Drupal’s State API supports:
Forms can be broken up into multiple pages using a progress bar. Authenticated users can save drafts and/or have their changes automatically saved as they progress through a long form.
Multistep form features include:
- Customizable progress bar
- Customizable previous and next button labels
- Saving drafts between steps
Upon form submission, customizable email notifications and confirmations can be sent to users and administrators.
An extendable plugin that allows developers to push submitted data to external or internal systems and/or applications is provided.
Email support features include:
- Previewing and resending emails
- Sending HTML emails
- File attachments (requires the Mail System and Swift Mailer module.)
- HTML and plain-text email-friendly Twig templates
- Customizable display formats for individual form elements
Form submissions can optionally be stored in the database, reviewed, and downloaded.
Submissions can also be flagged with administrative notes.
Results management features include:
- Administrative notes
- Viewing submissions as HTML, plain text, and YAML
- Customizable reports
- Downloading results as a CSV to Google Sheets or MS Excel
- Saving of download preferences per form
The YAML Form module provides full access controls for managing who can create
forms, post submissions, and access a form’s results.
Access controls can be applied to roles and/or specific users.
Access controls allow users to:
- Create new forms
- Update forms
- Delete forms
- View submissions
- Update submissions
- Delete submissions
The YAML Form module provides a few starter templates and multiple example forms which form administrators can update or use to create new reusable templates for their organization.
Starter templates include:
- Contact Us form
- Registration form
- Job Application form
- Subscribe form
Example forms include:
- Basic layout
- Flexbox layout
Administrators can define reusable global options for select menus, checkboxes, and radio buttons. The YAML Form module includes default options for states, countries, likert answers, and more.
Reusable options include:
- Country codes & names
- State/province codes & names
- State codes & names
- Likert agreement, comparison, importance, quality, satisfaction, ten scale, and would you
Forms and configuration can be translated into multiple languages using Drupal’s configuration translation system.
Forms can be attached to nodes or displayed as blocks. Forms can also have dedicated SEO-friendly URLs. Form elements are simply render arrays that can easily be altered using custom hooks and/or plugins.
Drush commands are provided to:
- Generate multiple form submissions
- Export form submissions
- Purge form submissions
- Download and manage third party libraries
- Tidy YAML configuration files