Flower Docs
  • OpenFlower overview
    • The "Hello World" tutorial
  • Videos
    • OpenFlower in 100 seconds
  • 🆕Setup and run
    • Cloud & Private Cloud
    • Self-hosting
      • Access local database or API
      • Google Cloud Platform
      • Heroku
      • Migration from Openblocks
      • Update MongoDB Versions
      • OpenFlower Version Update
      • Traefik loadbalancer
      • SMTP Server
    • Security
  • 🏨Workspaces & Teamwork
    • Workspaces
    • Members and Groups
    • Permissions for Resources
    • OAuth
      • KeyCloak
      • Google
      • GitHub
      • Generic OAuth Provider
    • Query library
    • OpenFlower Marketplace
  • ✨Build Applications
    • Create a new App
      • Modules
      • Version and Release Management
    • App Editor
      • Visual Components
        • Common Component Settings
        • File upload
        • Charts and graphs
        • Image
        • Option lists
        • List View
        • Drawer
        • Google Maps
        • Table
        • Messages / Toast
        • Calendar
      • Date handling
      • Bulk Editing
      • Layers
      • Data selection & Javascript
      • Use Markdown
      • Keyboard shortcuts
    • App Navigation
    • App Interaction
      • Event handlers
    • Themes & Styling
      • Design an efficient and user-friendly form
      • Customize Styles
      • Component Styling Possibilities
  • 🚀Connect your Data
    • Data source basics
    • Data sources in OpenFlower
      • APIs as Datasource
        • REST API
        • GraphQL
        • Google Sheets
      • SQL Databases
        • MySQL
        • MariaDB
        • PostgreSQL
        • Microsoft SQL Server
        • Oracle
      • NoSQL Databases
        • MongoDB
        • CouchDB
        • DynamoDB
      • InMemory Databases
        • Redis
      • File Storages
        • S3 File Storage
      • BigData & OLAP
        • Big Query
        • Snowflake
        • ClickHouse
        • Elasticsearch
      • Websocket Datasource
    • Query basics
      • Bind Query Data to Components
      • Query library
  • 🪄Workflows
    • n8n Integration
  • 💫Business Logic in Apps
    • Write JavaScript
      • JavaScript query
      • Temporary state
      • Transformers
      • Data responder
      • Built-in JS functions
  • 🙌Publish Apps
    • Share an App
    • Publish an App
    • Embedd an App
      • Embed Apps in React
      • Native embed SDK
        • Build the SDK from Source
  • 🔥OpenFlower Extension
    • Opensource Contribution
      • Develop UI components for Apps
      • Develop Data Source Plugins
    • Use third-party libraries in Apps
      • Day.js Date handling
      • Import your own JavaScript Library
    • Custom component
    • OpenFlower Open REST API
Powered by GitBook
On this page
  • Component Name
  • Label
  • Layout
  • Disable & hide
  • Event handlers
  • Style
  1. Build Applications
  2. App Editor
  3. Visual Components

Common Component Settings

PreviousVisual ComponentsNextFile upload

Last updated 7 months ago

The visual Components of OpenFlower share some general Settings and Configurations. You may find nevertheless Components, for which these or that Setting may not apply - and so it's not shown in the Application Editor.

Component Name

The component Name is important as it is the same time the identifier to address a visual Component via Javascript or in any dynamic way.

Label

Many Components have the possibility to show Labels for the user, so it is clealy communicated what for example an input field is meant for.

Orientation

Tooltip

Internationalization

Based on the language information of the browser, one can translate text in OpenFlower on the fly.

// reading the User Language from Browser 
{{navigator.language || navigator.userLanguage}}
// a Translation Register as JSON
{
	"product_price": [{
		"en-US": "Price"
	}, {
		"de-DE": "Preis"
	}, {
		"fr-FR": "Prix"
	}],
	"product_name": [{
		"en-US": "Product Name"
	}, {
		"de-DE": "Produktname"
	}, {
		"fr-FR": "Nom de produit"
	}]
}
// dynamically reading from the Translation Register JSON for the label
{{translations.value.product_price.find(item => item.hasOwnProperty(userLanguage.value))[userLanguage.value]}}

Layout

The Layout Settings section can display different settings, based on the selected Component. I most of the cases here you find Settings for the placement of a Component.

  • Orientation (left center right justify) (where applicable)

  • Vertical space (fixed, automatic) (where applicable)

  • Prefix and Suffix Icons (where applicable)

Disable & hide

Disable Components

Hide Components

Nearly every Component can get "hidden and shown" dynamically. This is useful to switch dynamically between Application elements upon user input or interaction.

Vertical space of hidden Components

When Components are hidden, they do not consume vertical space. This is a special ability, which comes with a small challenge in the Application Editor. The advantage is, that multiple Components could get dynamically switched (shown or hidden), so you can dynamically react to user inputs or interactions.

As soon as a Component is hidden, a "small closed eye icon" indicates this state in the App Editor. The component can still get dragged and selected. As soon as selected, it will show as long as selected its true height.

You can now place other components in the same vertical place as the hidden Component. This can lead to a small challenge in the App Editor to drag and place Components that overlap. It is suggested to work then with static true/false setting for the attribute "Hidden", so you can find the desired Component displayed with its height when you need it.

In OpenFlower v2.0.0 the fields "Hidden" and "Disabled" are unfortunately at different places in the Properties Panel across the components. We will fix and order this in a future version.

Event handlers

One of the powerful concepts of OpenFlower are the Event handlers. Based on User interaction almost every Component can release Events, on which you can react with different actions.

User Interaction Event Types

  • Change (when user input data changes)

  • Focus (when the user points to the component

  • Blur (when the user left the Component)

  • Submit (when the user submits a Form, where the Component belongs to)

  • Click (when a button like Component is clicked)

  • Open / Close (for collapsible Components)

  • Switch Tab (for Tabbed containers)

You can find a list of Event Handlers here: [TODO list of event handlers)

When a Component supports User interaction Events, you can have one or multiple actions based on a single Event type or different Event types.

Actions for Events

Each Event handler has an Action out of a list of possible Actions. Each action has individual Settings.

  • Run Query

  • Control Component

  • Run Javascript

  • Set temporary State

  • Go to App

  • Show Notification

  • Go to URL

  • Copy to Clipboard

  • Export Data

Order of Event Actions

In a future version of OpenFlower, we will make sure it is possible to change the order of the Event Handlers. As for now, it is not possible and you would need to plan the order of Event Actions if your App needs multiple Event Handlers for a single Component.

Style

It makes sense to decide in general between . Kebab case is not suggested, as the "-" between words can be interpreted in Javascript as minus-operation in edge cases.

For Labels and Tooltips, a can get used to reading from a translation register (JSON).

Most of the Components can be hidden and/or disabled dynamically by a .

.

Components support a variety of like colors, borders, and backgrounds.

✨
Snake- and Camel-Case
Handlebar Javascript expression
Handlebar Javascript expression
More about the Event Handlers you can find here
Styling settings
Click on any Component opens the Properties panel to show all Settings & Configurations.
Make sure you give every component a self-speaking name
The component name is a selector for example in ui based Event handlers
Also in Javascript you use the same name to address the Object, its Attributes and Functions.
Labels helps the users of Apps to understand interaction.
Labels can have different orientations.
Labels can be oriented left or top of a component. The text itself can additionally be oriented left-side or right side.
Additionally it can be helpful for users to use Tooltips for descriptions and suggestions.
get the User-Language from the Browser
Use a Translation Register as JSON
Many components can set in "disabled" State to not hide Components - but indicate that User cannot enter Data right now.
Components can get hidden by static or dynamic Setting
hidden Components does not consume vertical space, but can get selected.
As soon as selected or dragged, a Component shows it height.
Components that are hidden can pe placed vertically at the same position.
For each components a set of possible User interaction Events is accessible
Each Component which supports Events can have multiple Handlers (Actions) for Event Types.
Different Components have different support for styleable Attributes