Skip to main content
The Single Select form field allows users to choose from a dropdown list of predefined options. Each option consists of a label (displayed to users) and a corresponding value (stored in the process data). This component supports static data, enumerations, and dynamic process data sources with advanced features like search filtering and conditional option enabling.
Single Select demonstration
Example: Consider a dropdown with “Sports” (value: “S”) and “Music” (value: “M”). When a user selects “Sports”, the value “S” is stored in the process instance under the Select element’s data key.

Configuration overview

Configure your single select component using these main sections:

Basic Settings

Process data binding, labels, and properties

Data Source

Static options, enumerations, or dynamic data

Behavior

Hide/disable conditions and UI actions

Styling

Visual appearance and platform overrides

Basic configuration

Process data key

The process data key establishes the binding between the select element and process data, enabling its later use in:

Core Properties

Label: The visible text displayed above the select element
  • Supports Markdown syntax for rich formatting
  • Can include links, emphasis, and other formatting
  • Responsive across all platforms
Placeholder: Text shown when no option is selected
  • Provides guidance on what to select
  • Should be clear and actionable
  • Example: “Choose your preferred option…”
Empty Message: Custom text for no results scenarios
  • Displayed when search yields no matches
  • Helpful for dynamic data sources
  • Example: “No matching options found”
Search for Options: Enable filtering functionality
  • Improves usability for long option lists
  • Real-time filtering as users type
  • Case-insensitive search capabilities
  • Particularly useful for large datasets
Has Clear: Add option to clear selection
  • Provides users with reset functionality
  • Useful for optional fields
  • Improves user control and flexibility
Helper Text: Additional context or instructions
  • Can be displayed as regular text
  • Can be hidden within an expandable info point
  • Supports Markdown formatting

Data source configuration

Default value setup

Configure the initial selected option: Default Value: Specify which option should be pre-selected
  • Must match a value from your data source
  • Improves user experience by reducing required interactions
  • Consider user context and common selections
Default value configuration

Source types

Choose the appropriate data source for your select options:
Purpose: Fixed list of options defined at design timeConfiguration:
  • Add Option: Define label/value pairs manually
  • Label: User-friendly display text
  • Value: Internal identifier stored in process data
  • Enabled: Control option availability (see below)
Best For:
  • Fixed categories (Yes/No, Active/Inactive)
  • Configuration options
  • Simple selection lists

Enhanced option control

Individual option enabling/disabling is available for Process Data source types only.
When using Process Data, you can control which options are selectable using the enabled property: How It Works:
  • enabled: true or missing: Option is selectable (default)
  • enabled: false: Option appears but is disabled
Example:
{
  "options": [
    {
      "value": "available", 
      "label": "Available Option",
      "enabled": true
    },
    {
      "value": "disabled",
      "label": "Disabled Option", 
      "enabled": false
    }
  ]
}
Common Use Cases: Conditional availability based on permissions, progressive disclosure, status indication (e.g., “Out of Stock”), or guided selection flows.
Disabled options support theming for both disabled unselected and disabled selected states. An option can be both selected and disabled simultaneously.

Validation

Apply validators to ensure data quality and completeness: Available Validators:
  • Required: Ensures a selection is made
  • Custom: Complex business logic validation
  • Conditional: Validation based on other field values
For comprehensive validation options, refer to our Validators Guide.

Behavior configuration

Hide/disable expressions

Control the select element’s visibility and interaction using JavaScript expressions:

UI Actions

Configure interactive behaviors for your select element:
EventDescriptionCommon Use Cases
CHANGETriggered when selection changesUpdate dependent fields, trigger calculations, show/hide related content
Action Types Available:
  • Process Actions: Advance workflow based on selection
  • Data Operations: Update related form fields
  • UI Updates: Show/hide dependent elements
  • External Calls: Fetch related data from APIs
For detailed UI action configuration, see our UI Actions Guide.

Platform customization

Settings overrides

Customize your select element differently across platforms:
Override Options:
  • Label: Desktop-optimized terminology
  • Helper: Extended descriptions with more context
  • Placeholder: Detailed guidance text
Web-Specific Features:
  • Enhanced search with keyboard shortcuts
  • Hover states and advanced animations
  • Larger option lists with scrolling
Platform override import/export
Override settings can be imported and pushed between platforms, saving configuration time and ensuring consistency.

Visual styling

Layout options

Left Icon: Visual cue for the select purpose
  • Category icons (📂, 🏢, 👤)
  • Functional indicators (🔍, ⚙️, 📊)
  • Status symbols (✓, ⚠️, 🔒)
Icon Configuration:
  • Icon Key: Select from Media Library
  • Platform-specific optimization
  • Consistent with design system
Icon configuration example
OptionBehaviorBest For
FillExpands to use available spaceFull-width forms
FixedMaintains specified widthConsistent layouts
AutoAdjusts based on contentDynamic layouts

Theme customization

Override default styling for complete visual control:
Theme override interface
Layout & Structure:
  • Border radius for rounded corners
  • Border width for outline definition
  • Text style for typography consistency
Common properties styling
Default State:
  • Text color customization
  • Font family and size options
Disabled State:
  • Dimmed appearance
  • Consistent with disabled styling
Label styling options
Standard Helper:
  • Text color and font options
Tooltip Helper:
  • Background color customization
  • Icon color options
  • Typography controls
Helper text styling
When no option is selected:
  • Border and background colors
  • Icon color customization
  • Placeholder text styling
Empty state styling
Time-Saving Tip: Export your styling configuration from one platform and import it to others to maintain consistency without manual reconfiguration.
Style import/export workflow

Advanced example: Dynamic dropdowns

Create sophisticated dropdown interactions with dependent selections using process data and business rules.

Scenario overview

Build a customer contract selection system where available contracts depend on the selected customer:
Dynamic dropdowns demonstration

Process structure

Required Elements:
  1. Task Node: Populates dropdown data using business rules
  2. User Task Node: Contains the select elements and form interface

Implementation steps

  1. Open FlowX.AI DesignerProcessesDefinitions
  2. Click New Process to open Process Designer
  3. Add the required nodes:
    • Task node (for data preparation)
    • User task node (for user interface)
Process structure
Task Node Configuration:
  • Action Type: Business Rule
  • Execution: Automatic, Mandatory
  • Language: MVEL (or your preferred scripting language)
Sample MVEL Script:
output.put("application",
{
    "client": {
        "identity": [
        {
            "value": "001",
            "label": "Eddard Stark"
        },
        {
            "value": "002", 
            "label": "Sansa Stark"
        },
        {
            "value": "003",
            "label": "Catelyn Stark"
        }
    ]},
    "contracts": {
        "001": [
            {
                "value": "c001",
                "label": "Eddard Contract 1"
            },
            {
                "value": "c007", 
                "label": "Eddard Contract 2"
            }
        ],
        "003": [
            {
                "value": "c002",
                "label": "Catelyn Contract 1"
            },
            {
                "value": "c003",
                "label": "Catelyn Contract 2"
            },
            {
                "value": "c004",
                "label": "Catelyn Contract 3"
            }
        ],
        "002": [
            {
                "value": "c005",
                "label": "Sansa Contract 1"
            }
        ]
    }
});
Business rule configuration
User Task Node Configuration:
  • Action Type: Save Data
  • Execution: Manual, Mandatory
  • Data to Send: application
UI Structure:
  1. Card Element (root component):
    • Custom UI Payload: {"application": ${application}}
    • Title: “Customer Contract”
  2. Form Element (container for selects)
  3. First Select (Customer Name):
    • Process Data Key: application.client.selectedClient
    • Label: Customer Name
    • Source Type: Process Data
    • Name: application.client.identity
  4. Second Select (Contract ID):
    • Process Data Key: application.client.selectedContract
    • Label: Contract ID
    • Source Type: Process Data
    • Name: application.contracts
    • Parent: SELECT (first dropdown)
Select configuration
Test Process:
  1. Click Start Process in the designer
  2. Select a customer from the first dropdown
  3. Verify that the second dropdown populates with relevant contracts
  4. Submit the form to validate data storage
Expected Behavior:
  • Customer selection triggers contract list update
  • Only contracts associated with selected customer appear
  • Form submission stores both selected values
Dynamic example in action

Enhanced dynamic example with disabled options

Extend the previous example to include conditional option disabling:
{
  "application": {
    "client": {
      "identity": [
        {
          "value": "001",
          "label": "Eddard Stark",
          "enabled": true
        },
        {
          "value": "002",
          "label": "Sansa Stark", 
          "enabled": false  // Disabled due to account status
        },
        {
          "value": "003",
          "label": "Catelyn Stark",
          "enabled": true
        }
      ]
    },
    "contracts": {
      "001": [
        {
          "value": "c001",
          "label": "Eddard Contract 1",
          "enabled": true
        },
        {
          "value": "c007",
          "label": "Eddard Contract 2 (Expired)",
          "enabled": false  // Disabled due to expiration
        }
      ]
    }
  }
}

Best practices

User Experience

  • Keep option lists manageable (under 10 items when possible)
  • Use search functionality for longer lists
  • Provide clear visual feedback for disabled options
  • Consider default selections for common use cases
  • Group related options logically
  • Show loading states for dynamic data

Data Management

  • Use meaningful keys for integration purposes
  • Plan for data validation and error handling
  • Consider performance impact of large option sets
  • Document business rules for option availability
  • Test with realistic data volumes
  • Implement proper error handling for external data sources

Performance

  • Cache frequently used option lists
  • Implement lazy loading for large datasets
  • Optimize search algorithms for responsiveness
  • Consider pagination for very large lists
  • Monitor performance with real-world data
  • Test on various devices and network conditions

Common use cases

ScenarioConfigurationFeatures Used
Country SelectionEnumeration sourceSearch, large option list
Department SelectionStatic options with rolesConditional enabling based on user role
Product CategoriesProcess data with availabilityDynamic options, disabled out-of-stock items
Status SelectionStatic with validationRequired validation, status-dependent actions
Dynamic FilteringDependent dropdownsParent-child relationships, real-time updates
Last modified on February 27, 2026