Element Reference
Element Reference
Detailed reference documentation for each Workflow Element type and the contents of its opts object. Element-level properties that apply to every Element type are documented in the User Guide under “Common Element Properties” and are not repeated here.
Contents:
DataTable: datatable
The datatable Element displays arbitrary record data as a sortable, optionally selectable table.
Rows are streamed in by a storm Action firing $lib.fire() messages with type optic:datatable:row. Each column
declares a label (header text) and a key that derefs the corresponding field from the row record. Columns can be
configured statically up-front, or replaced at runtime: a storm Action may fire an optic:datatable:init message
whose opts dict patches the Element’s opts and triggers a refresh before any row messages are processed.
Element Opts
The opts object on a datatable Element accepts the following properties:
Property |
Type |
Required |
Default |
Description |
|---|---|---|---|---|
|
The columns to be displayed in the table in order. |
|||
|
|
|
Enable a menu option to export the table as CSV for immediate download. |
|
|
|
|
Disable normal single selection. |
|
|
|
Provide a message to be displayed when the table is empty. |
||
|
Table row menu configuration. |
|||
|
|
|
Enable multiselect. |
|
|
|
Actions to be run when the node selection has changed. |
||
|
|
|
If Row selection style should have a foreground or background highlight. |
Static columns, rows streamed from a `storm` Action:
type: datatable
opts:
columns:
- iden: name
key: name
label: Name
- iden: kind
key: kind
label: Kind
multiselect: true
csvexport: true
oninit:
- type: storm
opts:
query: |
for $row in $rows {
$lib.fire('optic:datatable:row', row=$row)
}
Columns reconfigured at runtime via `optic:datatable:init`:
type: datatable
opts:
csvexport: true
oninit:
- type: storm
opts:
query: |
$cols = ([
({"iden": "name", "key": "name", "label": "Name"}),
({"iden": "score", "key": "score", "label": "Score"})
])
$lib.fire('optic:datatable:init', opts=({"columns": $cols}))
for $row in $rows {
$lib.fire('optic:datatable:row', row=$row)
}
DataTableColumn
Column configuration for a datatable Element.
Property |
Type |
Required |
Default |
Description |
|---|---|---|---|---|
|
|
- |
The |
|
|
|
The default value to display if the row data has no value for |
||
|
|
|
Set |
|
|
|
Key to lookup in |
||
|
|
The label to be used in the column header. |
||
|
|
|
If the column should be sortable. |
|
|
|
|
Display a tooltip for when a cell’s content overflows the available width or height. |
|
|
|
Optional Synapse type to repr the data as. |
||
|
|
A string or object to configure a fixed width or min and/or max width for the column. |
ImageViewer: imageviewer
The imageviewer Element renders a single image in the Workflow grid. The image source may be an HTTP URL or a
Synapse file:bytes SHA-256 (loaded from the active Cortex axon). The runtime detects URLs by attempting to parse
the value as one; anything else is fetched as a SHA-256 from the axon, with an optional sha256: prefix that is
stripped before lookup.
URL-style images must be supplied through imgvar or a callstorm Action so the value passes through URL detection
- the static img opt only resolves through the axon.
Element Opts
The opts object on a imageviewer Element accepts the following properties:
Property |
Type |
Required |
Default |
Description |
|---|---|---|---|---|
|
|
A static image source. |
||
|
|
A |
Static SHA-256 (axon-resolved):
type: imageviewer
opts:
img: 1d4f3a02a33c...d7
Var-driven URL or SHA-256:
type: imageviewer
opts:
imgvar: imgsrc
oninit:
- type: updatevars
opts:
operations:
- type: set
name: imgsrc
value: https://example.com/logo.png
- type: refresh
Populated from a `callstorm` Action (returns a SHA-256 or URL):
type: imageviewer
oninit:
- type: callstorm
opts:
query: |
ps:contact:photo
return($node.props.photo)
Label: label
The label Element displays a single string of plain text, sourced statically or from a $var. A callstorm Action
replaces the displayed text with the query’s return value.
Element Opts
The opts object on a label Element accepts the following properties:
Property |
Type |
Required |
Default |
Description |
|---|---|---|---|---|
|
|
Optional static value to be displayed in the Element. |
||
|
|
Optional var to resolve to a string to display in the Element. |
Static text:
type: label
opts:
text: Welcome to the workflow
Var-driven text:
type: label
opts:
textvar: greeting
oninit:
- type: updatevars
opts:
operations:
- type: set
name: greeting
value: Hello, world!
Markdown: markdown
The markdown Element renders markdown content sourced statically or from a $var. A callstorm Action whose query
returns a string replaces the rendered markdown.
Element Opts
The opts object on a markdown Element accepts the following properties:
Property |
Type |
Required |
Default |
Description |
|---|---|---|---|---|
|
|
Optional static markdown to be displayed in the Element. |
||
|
|
Optional var to resolve to markdown to display in the Element. |
Static markdown:
type: markdown
opts:
markdown: |
## Hello
This is a **markdown** Element.
Var-driven markdown:
type: markdown
opts:
markdownvar: details
Markdown returned by a `callstorm` Action (replaces the rendered content):
type: markdown
oninit:
- type: callstorm
opts:
query: |
return($lib.str.format("## {n}\n{d}", n=$name, d=$desc))
MarkdownEditor: markdown-editor
The markdown-editor Element provides a WYSIWYG markdown editor. Edits flow back out via outvar; if outvar is
set, edits also trigger any onchange Actions.
Element Opts
The opts object on a markdown-editor Element accepts the following properties:
Property |
Type |
Required |
Default |
Description |
|---|---|---|---|---|
|
|
The $var to resolve to a value to be loaded into the editor. |
||
|
|
Actions to take after the markdown text has been changed. |
||
|
|
The $var to set the value into when the editor text is changed. |
||
|
|
Optional placeholder for when the editor is empty. |
||
|
|
Optional static markdown to be loaded into the editor. |
Static initial value:
type: markdown-editor
opts:
value: |
# Notes
- Start writing here.
outvar: notes
Round-trip with a var:
type: markdown-editor
opts:
invar: notes
outvar: notes
placeholder: Enter notes...
NodeEditor: nodeeditor
The nodeeditor Element presents fields for creating or editing a Node.
Fields can be generated automatically from form (set autofields: true, optionally displayprimary: true to
include primary properties) or declared explicitly via fields. Field values are gathered into the $fields var;
submission is driven by entries in the top-level buttons opt whose onclick Actions invoke a Storm or callstorm
query against $fields.
Element Opts
The opts object on a nodeeditor Element accepts the following properties:
Property |
Type |
Required |
Default |
Description |
|---|---|---|---|---|
|
|
|
Automatically generate fields for the editor based on |
|
|
Button[] |
The buttons for the form, rendered at the bottom. |
||
|
|
|
If fields for primary properties should be auto generated. |
|
|
Optionally provide |
|||
|
|
The node form that will be rendered in the editor. |
||
|
Configure a submit button with a Storm query and post-submit actions. |
Example:
type: nodeeditor
opts:
form: ou:org
autofields: true
displayprimary: true
buttons:
- text: Save
onclick:
- type: storm
opts:
query: |
[ ou:org=$fields.name :type=$fields.type ]
NodeEditorContentField
Field configuration for a nodeeditor Element.
Property |
Type |
Required |
Default |
Description |
|---|---|---|---|---|
|
|
- |
The name of the field, used to identify the field and it’s value. |
|
|
|
The text to use in the add item button for |
||
|
|
|
If the field should be an array editor suitable for array props. |
|
|
|
Static autocomplete items for array editor fields. |
||
|
Configuration to dynamically fetch autocomplete items for array editor fields. |
|||
|
|
If the Field should be disabled. |
||
|
|
If the Field should be hidden. |
||
|
|
Optional label for the field. |
||
|
|
The number of lines to display by default in the textarea. |
||
|
|
Optional placeholder for the field input. |
||
|
|
value of input’s |
||
|
|
If the field should be a textarea for multiline text. |
||
|
|
|
If the field should be a toggle suitable for boolean props. |
|
|
|
A tooltip to display instead of the form doc |
||
|
|
Optional type for the value to be repr’d as into the field input. |
||
|
|
Optional value to prepopulate the field with. |
||
|
|
Optional var that will be used to populate the initial value for the field. |
NodeEditorContentField / arrayeditorvalues
Configuration to dynamically fetch autocomplete items for array editor fields.
Property |
Type |
Required |
Default |
Description |
|---|---|---|---|---|
|
- |
Options for the dynamic value provider. |
||
|
|
- |
The type of dynamic value provider. |
NodeEditorContentField / arrayeditorvalues / opts
Options for the dynamic value provider.
Property |
Type |
Required |
Default |
Description |
|---|---|---|---|---|
|
|
- |
The Storm query to execute. |
Submit Options
Configure a submit button with a Storm query and post-submit actions.
Property |
Type |
Required |
Default |
Description |
|---|---|---|---|---|
|
|
- |
The Storm query to execute on submit. |
|
|
|
Actions to execute after the submit query has completed. |
||
|
|
The text to display on the submit button. |
NodeViewer: nodeviewer
The nodeviewer Element displays the primary value, properties, embeds, tags, and tagprops of a single Node.
The Node is supplied by a loadnodes Action (using the first inbound Node) or by a storm Action whose first
emitted Node is rendered. The items list controls which fields appear and in what order; valid item type values
are valu, prop, tag, tagglob, tagprop, embed, and pathvar. The optional form opt is only required
when embed items would otherwise have no form context to resolve against.
Element Opts
The opts object on a nodeviewer Element accepts the following properties:
Property |
Type |
Required |
Default |
Description |
|---|---|---|---|---|
|
- |
The items configuring what will be displayed. |
||
|
|
Only really required when setting up |
||
|
|
If an image is displayed, control where it will appear. |
Example:
type: nodeviewer
opts:
form: ou:org
items:
- { type: prop, name: name }
- { type: prop, name: type }
- { type: tagglob, name: '#' }
imgpos: left
subs:
- src: my-stormtable
events: [ onnodes ]
events:
onnodes:
- type: loadnodes
NodeViewerItem
An item configuring what is displayed from a node in the viewer.
Property |
Type |
Required |
Default |
Description |
|---|---|---|---|---|
|
|
- |
The name of the prop, tag, embed, or path var to display. |
|
|
|
- |
The type of data to display from the node. |
|
|
|
An optional display label for the item. |
PowerupConfig: powerup-config
The powerup-config Element renders the configuration UI for the named Power-Up package, including any
package-defined vault configurations and a permissions matrix for the listed permission paths.
Element Opts
The opts object on a powerup-config Element accepts the following properties:
Property |
Type |
Required |
Default |
Description |
|---|---|---|---|---|
|
|
- |
The name of the Power-Up package to configure. |
|
|
- |
Declare the permissions to be managed for the Power-Up. |
Example:
type: powerup-config
opts:
package: synapse-workflow-examples
permissions:
- name: User Access
perm: [ synapse-workflow-examples, user ]
- name: Admin Access
perm: [ synapse-workflow-examples, admin ]
Permissions
Declare the permissions to be managed for the Power-Up.
Property |
Type |
Required |
Default |
Description |
|---|---|---|---|---|
|
|
- |
Friendly name for the permission to be managed. |
|
|
|
- |
Permission rule path, expressed as the segments of a Synapse permission (e.g. |
|
|
|
Optional human-readable description of the permission, displayed alongside |
QueryBar: querybar
The querybar Element provides a single-line input bar with a query-running spinner. Pressing Enter executes the
Actions defined in onrun. Use this for quick filter/search inputs; for multi-line authoring, prefer queryeditor
or stormeditor.
Element Opts
The opts object on a querybar Element accepts the following properties:
Property |
Type |
Required |
Default |
Description |
|---|---|---|---|---|
|
|
A variable to use as the value for the querybar input on initial render / refresh. |
||
|
Optional menu options to present in the query bar’s menu. |
|||
|
|
Actions to take after the value has been changed. |
||
|
|
Actions to take when the run button is pressed or the querybar receives Enter. |
||
|
|
Actions to take when a running query spinner is stopped. |
||
|
|
A variable to update whenever the querybar input value changes. |
||
|
|
Optional placeholder for when the input is empty. |
Example:
type: querybar
opts:
placeholder: Enter a Storm query...
outvar: query
onrun:
- type: storm
opts:
queryvar: query
Menu Options
Optional menu options to present in the query bar’s menu.
Property |
Type |
Required |
Default |
Description |
|---|---|---|---|---|
|
The menu items to display. |
QueryEditor: queryeditor
The queryeditor Element provides a multi-line syntax-highlighting query editor with an attached run button and
query-running spinner. Pressing Shift+Enter executes the Actions defined in onrun. Unlike stormeditor, the
syntax opt selects the highlighting language (e.g. storm, json, yaml) rather than always being Storm.
Element Opts
The opts object on a queryeditor Element accepts the following properties:
Property |
Type |
Required |
Default |
Description |
|---|---|---|---|---|
|
|
A variable to use as the value for the queryeditor input on initial render / refresh. |
||
|
|
|
Whether to display line numbers in a left-side gutter or not. |
|
|
|
|
Whether to wrap long lines or horizontally scroll. |
|
|
Optional menu options to present in the queryeditor’s menu. |
|||
|
|
Actions to take after the value has been changed. |
||
|
|
Actions to take when the run button is pressed or the queryeditor receives shift + enter. |
||
|
|
Actions to take when a running query spinner is stopped. |
||
|
|
A variable to update whenever the queryeditor input value changes. |
||
|
|
Optional placeholder for when the input is empty. |
||
|
The optional syntax highlighting mode to use. |
Example:
type: queryeditor
opts:
syntax: storm
outvar: query
linenumbers: true
onrun:
- type: storm
opts:
queryvar: query
Menu Options
Optional menu options to present in the queryeditor’s menu.
Property |
Type |
Required |
Default |
Description |
|---|---|---|---|---|
|
The menu items to display. |
Spinner: spinner
The spinner Element renders a standalone spinner that can be controlled by storm Actions in sibling Elements via
the spinners opt. size accepts any valid CSS length (e.g. 48px, 25%). The default fills the Element layout
cell with a 30px minimum.
Element Opts
The opts object on a spinner Element accepts the following properties:
Property |
Type |
Required |
Default |
Description |
|---|---|---|---|---|
|
|
How to justify the spinner inside the Element. |
||
|
|
Controls width and height of the spinner icon itself. |
Example:
type: spinner
opts:
size: 48px
justify: center
StormConsole: stormconsole
The stormconsole Element displays streaming print, warn, and err messages from storm Actions as a
console-style log. The console is typically fed by another Element’s storm Action via the Action’s
console: { iden: <stormconsole-iden> } opt; a storm Action targeted directly at the stormconsole is also
routed through it.
Element Opts
The opts object on a stormconsole Element accepts the following properties:
Property |
Type |
Required |
Default |
Description |
|---|---|---|---|---|
|
|
|
If the console should scroll automatically with output. |
Standalone console:
type: stormconsole
opts:
autoscroll: true
Fed by another Element’s `storm` Action:
type: queryeditor
opts:
syntax: storm
outvar: query
onrun:
- type: storm
opts:
queryvar: query
console:
iden: my-console
clear: true
mesgs: [ print, warn, err ]
StormEditor: stormeditor
The stormeditor Element provides a Storm-aware multi-line editor with full syntax highlighting, autocomplete, and
linting. Pressing Shift+Enter runs the Actions in onrun. A storm Action targeted at the stormeditor always
uses the editor’s current contents as the query, regardless of any query or queryvar opt on the Action.
Element Opts
The opts object on a stormeditor Element accepts the following properties:
Property |
Type |
Required |
Default |
Description |
|---|---|---|---|---|
|
|
A |
||
|
|
Actions to execute when the value changes. |
||
|
|
Actions to execute the when user presses shift + enter. |
||
|
|
A |
||
|
|
A storm query to prepopulate into the editor. |
Example:
type: stormeditor
spinner: true
opts:
storm: |
inet:fqdn | limit 10
onrun:
- type: storm
opts:
feed:
results-table: true
StormForm: stormform
The stormform Element displays a defined set of fields in a form. Fields can be of different types, including
input, dropdown, autocomplete, synforminput, toggle, datepicker, and more.
Each field is mapped to a var by name and is updated whenever the field’s value changes. onchange Actions on a
field run after every edit, and can propagate vars to other Elements or trigger an internal refresh to update
sibling fields. All current field values are also bundled into a $fields dict (keyed by field name) for
convenience.
Buttons can be provided via the top-level buttons opt. Their definitions match the buttons Element. A callstorm
Action that returns a dict updates the Element’s vars; if that dict contains fielderrs, it must map field name to
an error message and each error is displayed just below the corresponding field for inline validation feedback.
Element Opts
The opts object on a stormform Element accepts the following properties:
Property |
Type |
Required |
Default |
Description |
|---|---|---|---|---|
|
Field[] |
- |
The fields of the form. |
|
|
Button[] |
The buttons for the form, rendered at the bottom. |
||
|
Control the layout of the form. |
Basic form with a Submit button:
type: stormform
opts:
layout:
orientation: horizontal
justifybuttons: right
fields:
- name: myinput
type: input
label: My Input
opts:
placeholder: Enter a value...
buttons:
- text: Submit
onclick:
- type: eventfire
opts:
event: onvars
vars: [ fields ]
Validation via the `fielderrs` return dict:
type: stormform
opts:
fields:
- name: email
type: input
label: Email
buttons:
- text: Save
onclick:
- type: callstorm
opts:
query: |
if (not $email or not $email.find("@")) {
return(({"fielderrs": ({"email": "Enter a valid email."})}))
}
return(({"saved": (true)}))
Field Properties
Every field object has the following common properties:
Property |
Type |
Required |
Default |
Description |
|---|---|---|---|---|
|
|
- |
The name of the field, will be used to keep the var with this name in sync. |
|
|
arrayeditor | autocomplete | datepicker | dropdown | input | multiselect | nodeautocomplete | password | synforminput | tagautocomplete | textarea | toggle |
- |
The type of form field. |
|
|
|
|
If the Field should be appended to the previous row or column. |
|
|
|
|
If the Field should be disabled. |
|
|
|
|
If the Field should be hidden. |
|
|
|
An optional hint to display below the input |
||
|
|
Optional iden to be used for referencing the field e.g. |
||
|
|
A label for the field. |
||
|
|
Actions to execute when the field’s value changes. |
||
|
|
Actions to execute when the ‘Enter’ key is pressed inside the field. |
||
|
|
Opts for the field. See Field Types. |
||
|
|
The desired width of the field |
Field Types
input
A standard single-line text input. The password field type is a convenience alias that masks input and shares these
opts.
Property |
Type |
Required |
Default |
Description |
|---|---|---|---|---|
|
|
Maximum length of the input string. |
||
|
|
|
If the input should be treated as a password input. |
|
|
|
A placeholder to set on the input. |
||
|
|
|
If the input should be readonly. |
|
|
|
|
If the input should be treated as a secret input. |
Plain text input:
- name: username
type: input
label: Username
opts:
placeholder: Enter your username...
maxlength: 64
password
A convenience alias for input. Accepts the same opts as input.
Masked password input (alias):
- name: secret
type: password
label: Password
opts:
placeholder: Enter your password...
textarea
A multi-line text input.
Property |
Type |
Required |
Default |
Description |
|---|---|---|---|---|
|
|
Initial height to render with in pixels. |
||
|
|
Initial height to render with in lines. |
||
|
|
Maximum length of the input string. |
||
|
|
|
If the input should be treated as a password input. |
|
|
|
A placeholder to set on the input. |
||
|
|
|
If the input should be readonly. |
|
|
|
|
If the input should be treated as a secret input. |
Example:
- name: description
type: textarea
label: Description
opts:
placeholder: Enter a description...
lines: 4
dropdown
A dropdown select menu. Choices come from a static options list or are fetched dynamically through a values
callstorm query.
Property |
Type |
Required |
Default |
Description |
|---|---|---|---|---|
|
|
|
Alignment of the dropdown relative to the trigger element. |
|
|
|
|
If the dropdown should display a search/filter input. |
|
|
|
An optional ID to set on the dropdown element. |
||
|
Offset the dropdown position from the trigger element. |
|||
|
|
|
If the dropdown should open on left click. |
|
|
|
|
If the dropdown should open on right click. |
|
|
|
Static options for the dropdown. |
||
|
|
Placeholder text displayed when no option is selected. |
||
|
|
|
If the dropdown should be open immediately. |
|
|
Provide a config to dynamically fetch the options |
DropdownOption
An option for a stormform dropdown field.
Property |
Type |
Required |
Default |
Description |
|---|---|---|---|---|
|
|
- |
The text label for the option in the menu. |
|
|
|
Additional strings to use for matching when the user is searching. |
||
|
|
An optional hint displayed with a muted style. |
||
|
|
Text to use as a tooltip for the option. |
||
|
|
An Optional value of any type to catch in the onselect if desired. |
Dropdown / offset
Offset the dropdown position from the trigger element.
Property |
Type |
Required |
Default |
Description |
|---|---|---|---|---|
|
|
A function to calculate offset dynamically. |
||
|
|
Override the dropdown height. |
||
|
|
Override the dropdown width. |
||
|
|
Horizontal offset in pixels. |
||
|
|
Vertical offset in pixels. |
Dropdown / values
Provide a config to dynamically fetch the options
Property |
Type |
Required |
Default |
Description |
|---|---|---|---|---|
|
- |
Options for the dynamic value provider. |
||
|
|
- |
The type of dynamic value provider. |
Dropdown / values / opts
Options for the dynamic value provider.
Property |
Type |
Required |
Default |
Description |
|---|---|---|---|---|
|
|
|
If the query should be executed every time the dropdown is opened. |
|
|
|
When provided with type set to |
||
|
|
$vars to be included in the query opts. |
Static options:
- name: priority
type: dropdown
label: Priority
opts:
placeholder: Select a priority...
enableSearch: true
options:
- text: Low
value: low
- text: Medium
value: medium
- text: High
value: high
Dynamic options via callstorm (must return `({‘text’: ‘foo’, ‘value’: ‘val’})` items):
- name: priority
type: dropdown
label: Priority
opts:
placeholder: Select a priority...
enableSearch: true
values:
type: callstorm
opts:
query: |
return($priorities)
multiselect
A dropdown that allows selecting multiple options. Choices come from a static options list or are fetched
dynamically through a values callstorm query.
Property |
Type |
Required |
Default |
Description |
|---|---|---|---|---|
|
|
|
Alignment of the dropdown relative to the trigger element. |
|
|
|
|
If the dropdown should display a search/filter input. |
|
|
Optional icon to replace the chevron with. |
|||
|
|
An optional ID to set on the dropdown element. |
||
|
Offset the dropdown position from the trigger element. |
|||
|
|
|
If the dropdown should open on left click. |
|
|
|
|
If the dropdown should open on right click. |
|
|
|
Static options for the multi-select. |
||
|
|
Placeholder will always be visible if provided. |
||
|
|
|
If the dropdown should be open immediately. |
|
|
Provide a config to dynamically fetch the options |
MultiSelectOption
An option for a stormform multi-select field.
Property |
Type |
Required |
Default |
Description |
|---|---|---|---|---|
|
|
- |
The text label for the option in the menu. |
|
|
|
|
If the option is currently enabled/selected. |
|
|
|
Additional strings to use for matching when the user is searching. |
||
|
|
An optional hint displayed with a muted style. |
||
|
|
Text to use as a tooltip for the option. |
||
|
|
An Optional value of any type to catch in the onselect if desired. |
MultiSelect / offset
Offset the dropdown position from the trigger element.
Property |
Type |
Required |
Default |
Description |
|---|---|---|---|---|
|
|
A function to calculate offset dynamically. |
||
|
|
Override the dropdown height. |
||
|
|
Override the dropdown width. |
||
|
|
Horizontal offset in pixels. |
||
|
|
Vertical offset in pixels. |
MultiSelect / values
Provide a config to dynamically fetch the options
Property |
Type |
Required |
Default |
Description |
|---|---|---|---|---|
|
- |
Options for the dynamic value provider. |
||
|
|
- |
The type of dynamic value provider. |
MultiSelect / values / opts
Options for the dynamic value provider.
Property |
Type |
Required |
Default |
Description |
|---|---|---|---|---|
|
|
|
If the query should be executed every time the dropdown is opened. |
|
|
|
When provided with type set to |
||
|
|
$vars to be included in the query opts. |
Static options:
- name: tags
type: multiselect
label: Tags
opts:
placeholder: Select tags...
enableSearch: true
options:
- text: Alpha
value: alpha
- text: Beta
value: beta
Dynamic options via callstorm (must return `({‘text’: ‘foo’, ‘value’: ‘val’, ‘enabled’: true})` items):
- name: tags
type: multiselect
label: Tags
opts:
placeholder: Select tags...
values:
type: callstorm
opts:
query: |
return($availabletags)
autocomplete
A text input with autocomplete suggestions. Suggestions come from a static items list or are fetched dynamically
through a values callstorm query.
Dynamic items via callstorm (receives the user input as `$value`; must return strings or `({‘text’: ‘foo’, ‘value’: {…}})` items):
Property |
Type |
Required |
Default |
Description |
|---|---|---|---|---|
|
|
|
Set true to always use noMatchItemText/Func when the current input text does not have an exact match. |
|
|
|
|
If the input should be blurred after selection. |
|
|
|
|
If the input autocomplete dropdown should be closed on <Tab>. |
|
|
|
|
If the input should not allow the user to start with whitespace in the input. |
|
|
|
Static completion items. |
||
|
|
Maximum length of the input string. |
||
|
|
|
Set true to never display a no match item. |
|
|
|
|
If the input should be treated as a password input. |
|
|
|
A placeholder to set on the input. |
||
|
|
|
If the input should be readonly. |
|
|
|
|
If the input should be treated as a secret input. |
|
|
|
|
Run any specified |
|
|
|
|
Set to false to disable select+complete on exact match. |
|
|
|
|
Set true to automatically select a single matching autocomplete item regardless of input value or if it’s highlighted. |
|
|
|
|
Set to true to show all options on initial focus regardless of current value in input. |
|
|
|
|
Set to true to show the options list when the |
|
|
|
|
If the Tab key should be treated the same as ‘Enter’. |
|
|
Provide a config to dynamically fetch the autocomplete items. |
AutocompleteOpts / values
Provide a config to dynamically fetch the autocomplete items.
Property |
Type |
Required |
Default |
Description |
|---|---|---|---|---|
|
- |
Options for the dynamic value provider. |
||
|
|
- |
The type of dynamic value provider. |
AutocompleteOpts / values / opts
Options for the dynamic value provider.
Property |
Type |
Required |
Default |
Description |
|---|---|---|---|---|
|
|
When provided with the type set to |
Static items:
- name: fruit
type: autocomplete
label: Fruit
opts:
placeholder: Search for a fruit...
items:
- text: Apple
value: apple
- text: Banana
value: banana
selectOnExactMatch: true
Example:
- name: fruit
type: autocomplete
label: Fruit
opts:
placeholder: Search for a fruit...
values:
type: callstorm
opts:
query: |
return($lib.fruit.search($value))
selectOnExactMatch: true
synforminput
A text input with autocomplete powered by Synapse form awareness. Provides type-aware autocompletion based on Synapse data model types.
Property |
Type |
Required |
Default |
Description |
|---|---|---|---|---|
|
|
|
Set true to always use noMatchItemText/Func when the current input text does not have an exact match. |
|
|
|
|
If the input should be blurred after selection. |
|
|
|
|
If the input autocomplete dropdown should be closed on <Tab>. |
|
|
|
|
If the input should not allow the user to start with whitespace in the input. |
|
|
|
Maximum length of the input string. |
||
|
|
|
Set true to never display a no match item. |
|
|
|
A placeholder to set on the input. |
||
|
|
|
If the input should be readonly. |
|
|
|
|
Run any specified |
|
|
|
|
Set to false to disable select+complete on exact match. |
|
|
|
|
Set true to automatically select a single matching autocomplete item regardless of input value or if it’s highlighted. |
|
|
|
|
Set to true to show all options on initial focus regardless of current value in input. |
|
|
|
|
Set to true to show the options list when the |
|
|
|
|
If the Tab key should be treated the same as ‘Enter’. |
Example:
- name: ipaddr
type: synforminput
label: IP Address
opts:
placeholder: Enter an IP address...
nodeautocomplete
A text input with autocomplete that searches for Nodes of a specific form in the active Cortex. Suggestions are
produced by the form’s primary-property find logic and are capped at limit (default 20).
Property |
Type |
Required |
Default |
Description |
|---|---|---|---|---|
|
|
- |
The form of the node to search for. |
|
|
|
|
Set true to always use noMatchItemText/Func when the current input text does not have an exact match. |
|
|
|
|
If the input should be blurred after selection. |
|
|
|
|
If the input autocomplete dropdown should be closed on <Tab>. |
|
|
|
|
If the input should not allow the user to start with whitespace in the input. |
|
|
|
|
Limit the number of results returned. |
|
|
|
Maximum length of the input string. |
||
|
|
|
Set true to never display a no match item. |
|
|
|
A placeholder to set on the input. |
||
|
|
|
If the input should be readonly. |
|
|
|
|
Set to false to disable select+complete on exact match. |
|
|
|
|
Set true to automatically select a single matching autocomplete item regardless of input value or if it’s highlighted. |
|
|
|
|
Set to true to show all options on initial focus regardless of current value in input. |
|
|
|
|
Set to true to show the options list when the |
|
|
|
|
If the Tab key should be treated the same as ‘Enter’. |
Example:
- name: orgnode
type: nodeautocomplete
label: Organization
opts:
form: ou:org
placeholder: Search for an organization...
limit: 10
tagautocomplete
A text input with autocomplete that searches for tags in the active Cortex.
Property |
Type |
Required |
Default |
Description |
|---|---|---|---|---|
|
|
|
If this autocomplete input should accept (and indicate) tag globs. |
|
|
|
Maximum length of the input string. |
||
|
|
|
If this autocomplete input should accept and autocomplete multiple tags. |
|
|
|
A placeholder to set on the input. |
||
|
|
|
If the input should be readonly. |
Tag autocomplete:
- name: mytag
type: tagautocomplete
label: Tag
opts:
placeholder: Pick a tag...
Allow tagglob patterns (e.g. `cno.threat.*`):
- name: tagglob
type: tagautocomplete
label: Tag pattern
opts:
acceptGlobs: true
arrayeditor
An editor for managing an array of values. New items are added through an inline autocomplete; suggestions can come
from a static autocompleteitems list or be fetched dynamically through an autocompletevalues callstorm query.
Dynamic autocomplete via callstorm (receives the user input as `$value`; must return strings or `({‘text’: ‘foo’, ‘value’: {…}})` items):
Property |
Type |
Required |
Default |
Description |
|---|---|---|---|---|
|
|
Text for the button to add a new item to the array. |
||
|
|
Static completion items. |
||
|
Provide a config to dynamically fetch the autocomplete items for the array. |
|||
|
|
|
Disable editing the items’ values via double click. |
|
|
|
|
If |
|
|
|
|
Text to display in the confirmation modal when the user clicks to remove an item from the array. |
|
|
|
|
If |
|
|
|
|
Set to true to show all autocompletion options when a pill is double clicked for editing regardless of the current value. |
|
|
|
|
Set to true to show the matching autocompletion options when a pill is double clicked for editing. |
|
|
|
|
Optionally specify if the array should be sorted. |
|
|
|
Optional Synapse type to validate each item as. |
||
|
|
|
Optionally specify if the array should be only allowed to contain unique items. |
ArrayEditor / autocompletevalues
Provide a config to dynamically fetch the autocomplete items for the array.
Property |
Type |
Required |
Default |
Description |
|---|---|---|---|---|
|
- |
Options for the dynamic value provider. |
||
|
|
- |
The type of dynamic value provider. |
ArrayEditor / autocompletevalues / opts
Options for the dynamic value provider.
Property |
Type |
Required |
Default |
Description |
|---|---|---|---|---|
|
|
When provided with the type set to |
Static autocomplete items:
- name: myarray
type: arrayeditor
label: Items
opts:
sorted: true
uniq: true
autocompleteitems:
- alpha
- beta
- gamma
Example:
- name: tags
type: arrayeditor
label: Tags
opts:
uniq: true
autocompletevalues:
type: callstorm
opts:
query: |
return($lib.lift.tagsByPref($value))
toggle
A toggle switch for boolean values. activeText and inActiveText label the on/off positions; both default to
empty.
Property |
Type |
Required |
Default |
Description |
|---|---|---|---|---|
|
|
|
The text displayed inside the toggle when it is enabled. |
|
|
|
|
If the toggle should be disabled from changing. |
|
|
|
|
The text displayed inside the toggle when it is enabled. |
|
|
|
|
If the toggle should use the alternate theme that indicates toggling a ‘negative attribute’, e.g. |
|
|
|
The size of the toggle, to dictate styling. |
Example:
- name: enabled
type: toggle
label: Enabled
opts:
activeText: 'Yes'
inActiveText: 'No'
datepicker
A date picker input field. Inherits the common single-line input opts (placeholder, maxlength, readonly) from
the input field type but renders a calendar widget for selection.
Property |
Type |
Required |
Default |
Description |
|---|---|---|---|---|
|
|
Maximum length of the input string. |
||
|
|
A placeholder to set on the input. |
||
|
|
|
If the input should be readonly. |
Example:
- name: startdate
type: datepicker
label: Start Date
opts:
placeholder: Pick a start date...
Layout Options
Control the layout of the form.
Property |
Type |
Required |
Default |
Description |
|---|---|---|---|---|
|
|
How to align the buttons inside the form when using the ‘horizontal’ orientation. |
||
|
|
How to justify the buttons inside the form. |
||
|
|
Orientation of the form. |
StormTable: stormtable
The stormtable Element displays Nodes of a particular form. It behaves similarly to the Tabular display mode in the
Research tool: nodes inbound from a storm Action populate rows, and each column is configured by type (prop,
tag, tagglob, embed, pathvar) plus a column-type-specific opts block.
Element Opts
The opts object on a stormtable Element accepts the following properties:
Property |
Type |
Required |
Default |
Description |
|---|---|---|---|---|
|
Column[] |
- |
The columns to be displayed in the table in order. |
|
|
|
- |
The form of nodes that will be displayed in the table. |
|
|
|
|
Enable a menu option to export the table as CSV for immediate download. |
|
|
|
|
Disable multi-select via shift/ctrl+click. |
|
|
|
|
Disable normal single selection. |
|
|
|
|
If |
|
|
Table row menu configuration. |
|||
|
|
Actions to be run when the node selection has changed. |
||
|
Control the initial column sort and direction. |
Example:
type: stormtable
opts:
form: ou:org
columns:
- type: prop
opts:
prop: name
title: Name
- type: prop
opts:
prop: type
title: Type
- type: tag
opts:
tag: rep.trust
title: Trust
sort:
type: prop
prop: name
direction: asc
csvexport: true
oninit:
- type: storm
opts:
query: ou:org
Columns
The columns to be displayed in the table in order.
Property |
Type |
Required |
Default |
Description |
|---|---|---|---|---|
|
- |
|||
|
|
- |
StormTableColumnOpts
Column configuration for a stormtable Element.
Property |
Type |
Required |
Default |
Description |
|---|---|---|---|---|
|
|
|
If the ability to resize the column should be removed. |
|
|
|
The embed path to be displayed in an |
||
|
|
The index of the value to be displayed in an |
||
|
|
|
If the column’s cells should linewrap their data. |
|
|
Customize editing of cells in the Table by overriding the query and executing additional flow actions. |
|||
|
|
The path var to be displayed in a |
||
|
|
The optional type for repring the path var. |
||
|
|
The name of the prop to be displayed in a |
||
|
|
Set |
||
|
|
|
If the column value should be rendered as markdown when appropriate. |
|
|
|
The name of the tag to be displayed in a |
||
|
|
The tagglob to be displayed in a |
||
|
|
Optional title for the column. |
||
|
|
The width of the column. |
StormTableColumnOpts / onchange
Customize editing of cells in the Table by overriding the query and executing additional flow actions.
Property |
Type |
Required |
Default |
Description |
|---|---|---|---|---|
|
|
|
Override the default storm query used to update a node(s) prop. |
Menu Options
Table row menu configuration.
Property |
Type |
Required |
Default |
Description |
|---|---|---|---|---|
|
- |
Menu items to be be displayed. |
StormTableSort
Control the column being sorted on.
Set the type field on the sort opt to select one of the configurations below. Each configuration is a distinct shape; only the fields listed for the chosen type are accepted.
form
Property |
Type |
Required |
Default |
Description |
|---|---|---|---|---|
|
|
- |
||
|
|
- |
prop
Property |
Type |
Required |
Default |
Description |
|---|---|---|---|---|
|
|
- |
||
|
|
- |
||
|
|
- |
||
|
|
tag
Property |
Type |
Required |
Default |
Description |
|---|---|---|---|---|
|
|
- |
||
|
|
- |
||
|
|
- |
||
|
|
tagglob
Property |
Type |
Required |
Default |
Description |
|---|---|---|---|---|
|
|
- |
||
|
|
- |
||
|
|
- |
embed
Property |
Type |
Required |
Default |
Description |
|---|---|---|---|---|
|
|
- |
||
|
|
- |
||
|
|
- |
pathvar
Property |
Type |
Required |
Default |
Description |
|---|---|---|---|---|
|
|
- |
||
|
|
- |
||
|
|
- |
TabsLayout: tabs
The tabs Element provides a tabs layout. Each tab contains its own Element grid that is rendered when the tab
becomes selected. Element idens declared inside a tab are unique within the Workflow and can participate in cross-tab
Events/Actions normally.
Element Opts
The opts object on a tabs Element accepts the following properties:
Property |
Type |
Required |
Default |
Description |
|---|---|---|---|---|
|
- |
Configure the columns to be displayed (in order) and the elements inside. |
||
|
|
An initial tab to be selected by |
Example:
type: tabs
opts:
initialtab: overview
tabs:
- iden: overview
text: Overview
elements:
ovr-label:
type: label
layout: { w: 8, h: 2, x: 0, y: 0 }
opts:
text: Welcome
- iden: detail
text: Detail
elements:
det-md:
type: markdown
layout: { w: 8, h: 8, x: 0, y: 0 }
opts:
markdown: |
## Details
More info goes here.
TabsLayoutTab
A tab definition for a tabs Element.
Property |
Type |
Required |
Default |
Description |
|---|---|---|---|---|
|
|
- |
The Elements that should be displayed inside the tab. |
|
|
|
- |
The name the tab should be identified by e.g. |
|
|
Button[] |
Optional buttons that will be positioned on the right edge of the tabs list. |
||
|
|
Define the layout type and opts for this tab. |
||
|
Optional Actions to execute before and/or after the tab becomes selected. |
|||
|
|
The text that will be displayed on the tab label (in all uppercase) e.g. |
||
|
|
Optional tooltip to display when user hovers the tab. |
TabsLayoutTab / onselect
Optional Actions to execute before and/or after the tab becomes selected.
Property |
Type |
Required |
Default |
Description |
|---|---|---|---|---|
|
|
Actions to execute/complete after the tab becomes visible. |
||
|
|
Actions to execute/complete before the tab becomes visible. |
TextArea: textarea
The textarea Element provides a multi-line text editor powered by CodeMirror.
The displayed value can come from any of four sources, in priority order:
invar- resolves a$varon initial render.value- a static literal baked into the Element definition.A
callstormAction whose query returns the text or JSON to display.A
loadnodesAction paired withpropto deref a property from the inbound Node.
Edits flow back out via outvar (and trigger onchange Actions). readonly defaults to false when outvar is
set, otherwise true. Set type: json to handle JSON (de)serialization automatically; syntax controls
highlighting independently.
Element Opts
The opts object on a textarea Element accepts the following properties:
Property |
Type |
Required |
Default |
Description |
|---|---|---|---|---|
|
|
The $variable to resolve to a value to be loaded into the TextArea. |
||
|
|
|
Whether to wrap display line numbers in a left-side gutter or not. |
|
|
|
|
Whether to wrap long lines or horizontally scroll. |
|
|
|
Actions to take after the value has been changed. |
||
|
|
The $variable to set the value into when the TextArea is edited. |
||
|
|
Optional placeholder for when the TextArea is empty. |
||
|
|
A prop to deref from the inbound node to be loaded into the TextArea. |
||
|
|
Make the field readonly so it cannot be edited. |
||
|
Optional syntax highlighting. |
|||
|
|
|
Handle (de)serialization of structured data formats like JSON. |
|
|
|
Optional static value to be loaded into the TextArea. |
Static literal value:
type: textarea
opts:
value: |
# Notes
- Pre-populated content
syntax: markdown
readonly: true
Round-trip with a var (input and output bound to the same name):
type: textarea
opts:
syntax: yaml
invar: yamltext
outvar: yamltext
linenumbers: true
Populated from a Node prop via `loadnodes`:
type: textarea
opts:
prop: desc
readonly: true
subs:
- src: my-stormtable
events: [ onnodes ]
events:
onnodes:
- type: loadnodes
Populated from a `callstorm` result:
type: textarea
opts:
type: json
syntax: json
outvar: changedval
oninit:
- type: callstorm
opts:
query: |
inet:fqdn=$fqdn
return($node.data.get(foo))