FM BetterForms
BF Editorfmbetterforms.com
master
master
  • Introduction
  • 🏆Features
  • Getting Started
    • Welcome to FM BetterForms!
    • System Overview
    • Quick Tour of the BetterForms IDE
    • Phase 1: Setting Up Your Foundation
      • 1.1 Configure FileMaker Server
      • 1.2 Install BetterForms Helper File
      • 1.3 Add Your Server to BetterForms (IDE)
    • Phase 2: Building Your First Application
      • 2.1 Create an App (Site) in the IDE
      • 2.2 Create Your First Page (Intro to Page Builder)
      • 2.3 Understanding & Managing Environments (IDE)
      • 2.4 Adding Elements to Your Page
      • 2.5 Understanding Validation
      • 2.6 Adding Actions to Your Page
      • 2.7 Creating Your First List View
      • 2.8 Understanding Page Data Flow
      • 2.9 Creating Your First Hook
      • 2.10 Working with Data Tables (Coming Soon)
    • Phase 3: Understanding Core BetterForms Concepts
      • 3.1 Introduction to Hooks (and where to find them in the IDE)
      • 3.2 Running Your First Hook (Practical Example)
      • 3.3 Introduction to Actions & Action Scripts (IDE Context)
      • 3.4 Understanding the Data Model (and Page Data Model UI)
    • Phase 4: Common Customizations & Expanding Your App
      • 4.1 Adding & Configuring Buttons (Page Builder)
      • 4.2 Implementing Page Navigation (Actions & Site Navigation UI)
      • 4.3 Displaying Data in Tables (Page Builder & Element Config)
      • 4.4 Basic App Styling (Site Styling UI)
    • Phase 5: Mastering the BetterForms Environment & Advancing Your Skills
      • 5.1 Understanding & Managing Environments (In-Depth)
      • 5.2 Deep Dive: Page Configuration & Settings
        • Navigating the Page Builder Interface
        • Working with Page-Level Action Scripts
        • Configuring the Page Data Model
        • Page Integration Settings Explained
        • Managing Page Info & Other Settings
      • 5.3 Working with Global Scripts
      • 5.4 Managing App (Site) Settings & Navigation
      • 5.5 Exploring Further: What to Learn Next
    • Support & Resources
      • Getting Help
      • Learning JSON
  • Reference
    • Site Settings
      • Navigation
      • App Model
      • DOM Header Insertions
      • Global Named Actions
      • Site Structure
      • Slots / Code Injection
    • Page Settings
      • Data Model
      • Card / Window Modals
      • Validation
        • Custom Validators
      • Misc Page Settings
    • Page Elements
      • Copy of Site Structure
      • BetterForms Elements
        • Checkbox
        • Checklist
        • Cleave.js Input Masking
        • DateTime Picker
        • Google Address Autocomplete
        • Image Display Element
        • Input
        • Masked Input
        • Range Slider (noUiSlider)
        • Radios
        • Select
        • Advanced Select (selectEx)
        • TextArea
      • Common
        • Input
        • Button
        • Data Table
        • HTML
      • Grouping Elements
        • Tabs
        • Panel
        • accordion
        • accordion2
        • listrows
      • Uploading Files
        • dropzone
        • dropzone to S3
        • uploadCare
        • 🏗️Uppy File Upload Widget Integration with AWS S3
      • Misc Elements
        • Plain Text / Code Editor
        • signature
        • fullCalendar
        • rangeSlider
      • Payment Gateways
        • Authorize.net
        • PayPal
        • Stripe
      • Adding Custom Page Elements
    • Actions Processor
      • Named Actions (Action Scripts)
      • Actions
        • runUtilityHook
        • path
        • debounce
        • throttle
        • showAlert
        • showModal / hideModal
        • function
        • clipboard
        • cookie
        • setFocus
        • scrollTo
        • wait
        • emit
        • validate
        • channelJoinAnon
        • channelLeaveAnon
        • messageSend
        • messageSendAnonChannel
        • consoleError
        • showStripeCheckout
      • Authentication Actions
    • Script Hooks
      • Globals Variables
        • $$BF_Model
        • $$BF_App
        • $$BF_State
      • Keeping Keys Private
      • Reducing Payload Size
      • API Callback Endpoint
      • Common Hooks
      • Scoped Hooks
    • Users & Authentication
      • Managing User Accounts
      • Custom Login Pages
      • OAuth
    • Advanced Configuration
      • Custom Domains
    • BF Utility Functions
      • Example Usage
        • BF.i18n()
    • BF Error Codes
    • Messaging
      • Adding users to channels
      • Removing users from channels
      • Sending messages
      • Get connected users
      • Get active channels
    • Practices for File Downloads
    • BF Streaming Proxy
    • Updating the Helper File
    • Connection Trouble Shooting Guide
    • Software Testing Overview
    • JavaScript Libraries
    • FM BetterForms - Quality Assurance
    • Rollbacks and Version Control
    • BF Server Proxy
    • Setting up Auth0
    • Create an S3 Bucket on AWS
    • ApexCharts - Getting started
    • BF Enterprise Documentation
    • BetterForms Error Pages API
    • BF Streaming API
    • Creating a PWA
  • Usage Tips
    • Troubleshooting
      • Debugging
      • Frozen Actions Queue
      • Vue Variables
    • JavaScript Tips
      • Calling Named Actions from HTML Vue Events
      • Calculations
    • Hacking a Webpage
    • System Overview
    • Forms Processor
      • Form Types
      • HTML & VueJS
      • Styling and Design
    • Customizing and Styling
      • Custom CSS
      • Custom Components
        • Components Editor
        • Component Best Practices
      • Page Pre-loaders
      • Favicon
    • Design Patterns and Best Practices
      • Working with environments
      • Handling Data
      • Saving Data
      • Data Optimization
      • Business Logic
      • UI / UX
      • Debugging
      • Script Engine Optimization
    • Getting Started
    • Installation
  • Security
    • Authentication
    • Security White Paper
    • Firewalls
    • Technology Stack
  • Compatibility
Powered by GitBook
On this page
  • Understanding the Page Schema for Elements
  • Using Snippets to Add Elements
  • Organizing Elements with Groups
  • Common Element Properties
  • Basic Input Field Validation
  • Tools for Managing the JSON Schema
  • Editing HTML Content Within Elements
  • Next Steps

Was this helpful?

  1. Getting Started
  2. Phase 2: Building Your First Application

2.4 Adding Elements to Your Page

Previous2.3 Understanding & Managing Environments (IDE)Next2.5 Understanding Validation

Last updated 2 days ago

Was this helpful?

You've successfully and even added a "Data Model Inspector" to see some raw data. Now, let's explore how to add more structured and interactive elements to your page using the Page Schema editor.

The "Page Builder" or Schema Editor in BetterForms is your primary tool for this. It allows you to define, configure, and organize all the components that make up your user interface.

Understanding the Page Schema for Elements

As you learned, the Page Schema is a JSON structure that defines everything on your page. The fields array within the schema is where you'll list the individual elements.

{
    "schema": {
        "fields": [
            // Elements like inputs, buttons, HTML blocks, etc., go here
        ]
    },
    // ... other page settings ...
}

Each object you add to the fields array represents a distinct element on your page.

Using Snippets to Add Elements

The easiest way to add common pre-configured elements is by using the Snippet Library in the Schema Editor.

  1. Locate Snippets: In the Schema Editor interface, you should find a section or search bar for "Snippets."

  2. Find an Element: Search for the type of element you want to add (e.g., "button," "input," "HTML").

  3. Copy and Paste: Select the desired snippet and copy it. Then, paste this JSON snippet into the fields array in your Page Schema. Remember to add a comma (,) after the preceding element if you're adding to an existing list.

This is how you added the "HTML - Data Model Inspector" in the previous step. You can use the same process to add input fields, buttons, and more.

Organizing Elements with Groups

For more complex pages, you can organize your fields into logical groups. This helps in structuring your schema and can sometimes influence layout.

{
    "schema": {
        "groups": [
            {
                "title": "User Information", // An optional title for the group
                "_note": "Section for user details", // A note for schema organization
                "fields": [
                    { "type": "input", "model": "nameFirst", "label": "First Name" },
                    { "type": "input", "model": "nameLast", "label": "Last Name" }
                ]
            },
            {
                "title": "Actions",
                "fields": [
                    { "type": "button", "label": "Save", "action": "submitData" }
                ]
            }
        ]
    },
    // ...
}
  • _note: This property is purely for your organizational purposes within the schema and doesn't render on the page.

Common Element Properties

Each element you add will have various properties to configure its behavior and appearance:

  • type: Specifies the kind of element (e.g., "input", "button", "html"). This is fundamental.

  • label: Text displayed as the label for an element (e.g., for an input field).

  • styleClasses: Allows you to apply CSS classes (e.g., Bootstrap classes like col-md-6 for layout, or custom classes) to style the element.

  • visible: Can be set to false to hide an element statically.

  • visible_calc: For dynamic visibility, you can use a calculation based on your data model, e.g., "visible_calc": "model.isUserAdmin".

Basic Input Field Validation

For input fields, you can add validation rules:

  • validator: Specify a validator type (e.g., "string", "number", "email").

  • validator_calc: For dynamic validation conditions.

  • errorMsg: A custom message to display if validation fails.

Example:

{
    "type": "input",
    "model": "email",
    "label": "Email Address",
    "validator": "email",
    "errorMsg": "Please enter a valid email address."
}

Validation can also be triggered by actions, like a button click.

Tools for Managing the JSON Schema

The Schema Editor provides tools to help you work with the JSON structure, especially for complex pages:

  • Folding/Unfolding: Look for controls (often in a toolbar or near line numbers) to collapse or expand different levels of your JSON schema. This is very helpful for navigating large schemas.

  • Formatting: There's usually an option to automatically format your JSON, keeping it neat and readable.

Editing HTML Content Within Elements

If you add an "html" type element (or other elements that embed HTML), the Schema Editor often provides a dedicated HTML editor:

  • Accessing the Editor: Typically, clicking on the line number of an HTML field in the schema will open up a more user-friendly HTML editing interface.

  • Features: This editor might offer features like syntax highlighting, and sometimes even direct data model editing or an AI assistant for HTML generation.

  • Saving: Remember to save changes within the HTML editor, and then save the overall page schema.

Next Steps

You now have a basic understanding of how to add and configure elements on your BetterForms page using the Page Schema editor. The key is to:

  1. Use snippets to add elements quickly.

  2. Understand the basic properties like type, model, and label.

  3. Refer to the detailed documentation for each specific element type.

model: For input fields, this links the element to a specific key in your .

You'll find many more properties specific to each element type in the .

Explore the to see the wide variety of available elements and their specific configuration options. As you build out your first application, you'll become more familiar with these tools and properties.

created your first page
BetterForms Elements reference documentation
BetterForms Elements reference
Page Data Model