FM BetterForms
BF Editorfmbetterforms.com
1.0 dont use
1.0 dont use
  • Introduction
  • Features Summary
  • Getting Started
    • System Overview
    • Integration
      • 1. Configure FileMaker Server
      • 2. Add your Server to BetterForms
      • 3. Introduction to Hooks
      • 4. Create your first Site
      • 5. Create your first Page
      • 6. Configure your FileMaker File(s)
      • 7. Run your first Hook
      • Next Steps
    • Common Customizations
      • Introduction to Actions
      • Introduction to Buttons
      • Page Navigation
      • Displaying Data in a Table
    • Support
      • Hacking a Webpage
      • Learning JSON
  • Reference
    • Site Settings
      • Navigation
      • Slots / Code Injection
      • App Model
      • Site-wide Named Actions
    • Page Settings
      • Data Model
      • Card / Window Modals
      • Validation
        • Custom Validators
      • Misc Page Settings
    • Page Elements
      • Common
        • Button
        • Data Table
        • HTML
      • Grouping Elements
        • Tabs
        • panel
        • accordion
        • listrows
      • Uploading Files
        • dropzone
        • dropzone to S3
        • uploadCare
      • Misc Elements
        • Plain Text / Code Editor
        • signature
        • fullCalendar
        • rangeSlider
      • Payment Gateways
        • Authorize.net
        • PayPal
        • Stripe
      • Adding Custom Page Elements
    • Actions Processor
      • Named Actions
      • Actions
        • runUtilityHook
        • path
        • debounce
        • throttle
        • showAlert
        • showModal / hideModal
        • function
        • clipboard
        • cookie
        • setFocus
        • wait
        • emit
        • validate
        • channelJoinAnon
        • channelLeaveAnon
        • messageSend
        • messageSendAnonChannel
      • 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
    • Advanced Configuration
      • Custom Domains
    • BF Utility Functions
    • BF Error Codes
    • Messaging
      • Adding users to channels
      • Removing users from channels
      • Sending messages
      • Get connected users
      • Get active channels
  • Usage Tips
    • Troubleshooting
      • Debugging
      • Frozen Actions Queue
    • JavaScript Tips
      • Calling Named Actions from HTML Vue Events
      • Calculations
    • System Overview
    • Forms Processor
      • Form Types
      • HTML & VueJS
      • Styling and Design
      • JS Caclulations and Functions
    • Customizing and Styling
      • Custom Components
      • Custom CSS
      • Custom Components
      • Page Pre-loaders
      • Favicon
    • Design Patterns and Best Practices
      • Working with environments
      • Handling Data
      • Saving Data
      • Optimization
      • Business Logic
      • UI / UX
  • Security
    • Authentication
    • Security White Paper
    • Firewalls
    • Technology Stack
  • Compatibility
Powered by GitBook
On this page
  • Common Options
  • form.type: Wizard
  • Form Design
  • Form Types
  • type
  • visible_calc - Boolean or string expression
  • Bootstrap Columns
  • Field Validation
  • Sample Wizard JSON

Was this helpful?

  1. Usage Tips
  2. Forms Processor

Form Types

Common Options

Key
Description

form.title

form.subtitle

form.type: Wizard

Key
Description

form.color

HTML color Color of form

form.shape

form.validateOnBack

Applies to wizard only

form.errorColor

form.backButtonText

form.nextButtonText

form.finishButtonText

form.transition

CSS transition used when changing tabs

form.shape

Used for wizard wizard for type

state.startIndex

0 based index of the tab the form will have selected

page[ {pageNumber} ].visible

set to `false` to hide this page, default is `true`

Form Design

Form Types

type

This is the object type for this field, e.g. input, radio, dropdown etc.

visible_calc - Boolean or string expression

Field components can be shown or hidden programatically. The equation of the visible_calc key is evaluated when it's referenced parameters change and the boolean Boolean result will control the field visibility.

When a visible_calc parameter is supplied, the visible key is ignored.

// example - show occupation when employed is 'yes'

//data model
{
    "isEmployed" : ""
}
//formSchema
... "fields" : 
  {
    "label" : "Are you employed?",
    "type": "input",
    "model" : "isEmployed"
  },
  {
    "inputType": "text",
    "label": "What's your occupation?",
    "model": "occupation",
    "type": "input",
    "visible_calc": "this.model.isEmployed == 'yes'"
  }

Accordions, v-Tabs and rowLists:

These component types have their own sub data model so this.model will reference the object within the rows array.To see the entire data model you can reverence this.options.fullModel This allows you to look outside of your row or tab.

JSONPath Library

You can also take advantage of the jsonPath library and quickly search arrays for matches. This is a very powerful function and worth reading the documentation.

Bootstrap Columns

Add custom CSS classes to styleClasses

omit periods

// e.g.:

"styleClasses": "col-md-offset-2 col-md-6"

Field Validation

Sample Wizard JSON

{
  "form": {
    "formType": "formwizard",
    "title": "Camp Green Acres 2018 Application For Enrollment",
    "text": "<br /><h2>This is an example of a multiple page form.</h2>  Disrupt jean shorts viral hella meh, plaid cupidatat magna art party. Echo Park adipisicing literally narwhal. Williamsburg leggings church-key, craft beer forage cornhole jean shorts blue bottle pariatur.  <br /> <br /> <h2>Officia sapiente </h2>Bespoke, locavore plaid cray voluptate deep v ex vinyl tote bag chillwave swag occaecat. \n\nSed banh mi 3 wolf moon single-origin coffee quis tempor. Hoodie pitchfork pork belly aliqua, shabby chic elit consequat freegan ethical try-hard mixtape. Schlitz banjo deep v ullamco blog, umami nulla sint elit skateboard Godard odio.  ",
    "color": "grey",
    "shape": "circle",
    "errorcolor": "#a94442",
    "showPannelHeader": false,
    "panelHeaderText": "Your Dating Profile",
    "wizardTitle": "Register your child ",
    "panelIsCollapsible": false,
    "validateOnBack" : false,
    "cssObject": {
      "col-md-12": true,
      "text-danger": false
    },
    "styleObject": {}
  },
  "pages": [
    {
      "title": "Start",
      "description": "Overview Information",
      "icon": "fa fa-car",
      "validateOnServer": true,
      "schema": {
        "fields": [
          {
            "type": "switch",
            "label": "Status",
            "model": "status",
            "multi": true,
            "readonly": false,
            "featured": false,
            "disabled": true,
            "default": true,
            "textOn": "Active",
            "textOff": "Inactive"
          },
          {
            "type": "select",
            "label": "Prefix",
            "model": "prefix",
            "values": [
              "Mr.",
              "Mr. & Mrs.",
              "Mrs.",
              "Ms."
            ],
            "styleClasses": "col-md-2"
          },
          {
            "type": "input",
            "inputType": "text",
            "label": "Family Name",
            "model": "familyName",
            "readonly": false,
            "disabled": false,
            "styleClasses": "col-md-5"
          },
          {
            "type": "input",
            "inputType": "text",
            "label": "Referred By",
            "model": "reffered",
            "readonly": false,
            "disabled": false,
            "styleClasses": "col-md-5"
          }
        ]
      }
    },
    {
      "title": "Parent Info",
      "description": "Contact Info",
      "icon": "fa fa-user ",
      "schema": {
        "fields": [
          {
            "type": "input",
            "inputType": "text",
            "label": "First Name",
            "model": "nameFirst",
            "placeholder": "",
            "featured": true,
            "required": true,
            "styleClasses": "col-md-4"
          },
          {
            "type": "googleAddress",
            "inputType": "text",
            "label": "Address",
            "model": "address",
            "placeholder": "start typ",
            "featured": true,
            "required": true,
            "styleClasses": "col-md-4"
          },
          {
            "type": "input",
            "inputType": "email",
            "label": "E-mail",
            "model": "email",
            "validator": "email",
            "placeholder": "User's e-mail address",
            "styleClasses": "col-md-4"
          },
          {
            "type": "input",
            "inputType": "text",
            "label": "First Name",
            "model": "nameFirst2",
            "placeholder": "",
            "featured": true,
            "required": true,
            "styleClasses": "col-md-4"
          },
          {
            "type": "input",
            "inputType": "text",
            "label": "Last Name",
            "model": "nameLast2",
            "placeholder": "",
            "featured": true,
            "required": true,
            "styleClasses": "col-md-4"
          },
          {
            "type": "input",
            "inputType": "email",
            "label": "E-mail",
            "model": "email2",
            "validator": "email",
            "placeholder": "User's e-mail address",
            "styleClasses": "col-md-4"
          }
        ]
      }
    },
    {
      "title": "Camper Info",
      "description": "Camper Information & Program Selections",
      "icon": "fa fa-home",
      "schema": {
        "fields": [
          {
            "type": "input",
            "inputType": "text",
            "label": "Campers First Name",
            "model": "campFirstName",
            "placeholder": "",
            "featured": true,
            "required": true,
            "styleClasses": "col-md-6"
          },
          {
            "type": "input",
            "inputType": "text",
            "label": "Campers Last Name",
            "model": "camplast",
            "placeholder": "",
            "featured": true,
            "required": true,
            "styleClasses": "col-md-6"
          },
          {
            "type": "radios",
            "label": "Gender",
            "model": "gender",
            "values": [
              " Male",
              " Female"
            ],
            "styleClasses": "col-md-4"
          },
          {
            "type": "dateTime",
            "label": "DOB",
            "model": "dob",
            "required": true,
            "placeholder": "User's birth of date",
            "min": "",
            "max": "",
            "validator": "date",
            "dateTimePickerOptions": {
              "format": "YYYY-MM-DD"
            },
            "onChanged": "",
            "styleClasses": "col-md-4"
          }
        ]
      }
    },
    {
      "title": "Payment",
      "description": "Visa, Paypal",
      "icon": "fa fa-credit-card",
      "schema": {
        "fields": [
          {
            "type": "input",
            "inputType": "text",
            "label": "Card Type",
            "model": "cardType",
            "placeholder": "visa / MC / Amex",
            "featured": false,
            "required": false
          },
          {
            "type": "input",
            "inputType": "text",
            "label": "Full Name On Card",
            "model": "cardName",
            "placeholder": "john J. Smith",
            "featured": false,
            "required": false
          },
          {
            "type": "input",
            "inputType": "input",
            "label": "Number",
            "model": "cardNumber",
            "placeholder": "xxx-xxx-xxx"
          }
        ]
      }
    }
  ],
  "model": {
    "id": 1,
    "prefix": "Mr.",
    "nameFirst": "John",
    "nameLast": "Smith",
    "password": "J0hnD03!x4",
    "skills": [
      "Javascript",
      "VueJS"
    ],
    "email": "cdelfs@delfsengineering.ca",
    "status": true
  },
  "options": {
    "validateAfterLoad": true,
    "validateAfterChanged": true
  },
  "state": {
    "startIndex": 0
  }
}
PreviousForms ProcessorNextHTML & VueJS

Last updated 3 years ago

Was this helpful?

Shape of wizard tabs see

see:

Documentation :

Form Wizard Git
https://icebob.gitbooks.io/vueformgenerator/content/fields/core-fields.html
https://github.com/json-path/JsonPath
https://www.w3schools.com/bootstrap/bootstrap_grid_examples.asp
Validation
Form Wizard Git