Note. UF/BrowserUI is currently being upgraded to Vercengen. Please continue using that library until full migration.- To view all Documentation as a single-page, see the related page Vercengen (Full Documentation).
Main article(s): Vercengen TODO
Vercengen is a class-based frontend software engine that integrates both boostrap CSS + HTML/JS into a single coherent framework that requires coding in only JSON5/JSOL (Javascript Object Literals) for rapid prototyping. For more information, see Vercengen.
All interfaces are stored in main.vercengen
, though bindings are not. The default JS Object for all Vercengen functions is ve
, i.e. ve.addClass("<class_key>", { … });
. The default CSS identifier is [ve=true]
on the outermost parent. Additionally, all Vercengen Instances and attached Interfaces are given unique numeric IDs. Although code is salvaged from UF/BrowserUI, ve
is effectively a total overhaul of it with JSON5DSL support. Any missing boilerplate is auto-generated.
Note. JS-level function binding for constructing and modifying Vercengen UIs are still under construction. Parental boilerplate is always auto-generated; i.e. you should only use Classes if you intend on using multiple instances of it or have a good reason to do so.
main.vercengen.classes
: (Object)
arg0_options
.main
class instances should be saved as an Object dictionary.
Classes with a set .inherits
field inherit parental attributes via Object smart-merging. This means that lower Classes override the most nested objects only by default unless specified by an object-specific .override
flag, which prunes off inherited attributes at and beneath that level.
Inherits Effects from JSON5DSL.
(Object, Effect): ve.parseEffect(arg0_element, arg1_options)
Inherits Limits from JSON5DSL.
(Object, Limit): ve.parseLimit(arg0_element, arg1_options)
(Object, WindowDictionary)
calc
if a number is not provided.calc
if a number is not provided.calc
if a number is not provided.calc
if a number is not provided.
<pane_key>: (Object, Pane) - Note that there can be class-wide panes as well.
.tabs
if relevant from the preceding window.
.onload
returns a type (Object), it will be used to populate the Pane and replace current content.
(Object, Interface):
<row_key>
, which will turn into a Tab Row with nested Interfaces underneath. If it does not match a <row_key>
, a new Tab Row is created to house all folders with this .is_tab
field.
Port over Components from BrowserUI and turn Hierarchies/FileExplorer into a type of class-based Component.
Note. The Object, Component class is determined by the .type
annotation next to it, not by the PascalCased class name of that component. For the purposes of brevity, Component Documentation pages are linked and split off from main Documentation.
(Object, Component): All subsequent classes inherit these properties.
.type
(see 5. Components for more information)..onload
returns a type (Object), it will be used to populate the Component and replace current content.
(Object, Component<BIUF>): .type = ‘biuf’
(Object, Component<WYSIWYG>): .type = ‘wysiwyg’
(Object, Component<BasicColour>): .type = ‘basic_colour’
(Object, Component<Button>): .type = ‘button’
(Object, Component<Checkbox>): .type = ‘checkbox’
(Object, Component<Colour>): .type = ‘color’/'colour'
(Object, Component<Datalist>): .type = ‘datalist’
(Object, Component<Date>): .type = ‘date’
- Note: This also includes advanced Calendar optioning.
(Object, Component<DateLength>): .type = ‘date_length’
(Object, Component<Email>): .type = ‘email’
(Object, Component<File>): .type = ‘file'
(Object, Component<Hierarchy>): .type = ‘hierarchy’
(Object, Component<HTML>): .type = ‘html’
(Object, Component<Image>): .type = ‘image’
(Object, Component<Map>): .type = ‘map’
(Object, Component<MultiTag>): .type = ‘multi_tag’
(Object, Component<Number>): .type = ‘number’
(Object, Component<Password>): .type = ‘password’
(Object, Component<Radio>): .type = ‘radio’
(Object, Component<Range>): .type = ‘range’
(Object, Component<Reset>): .type = ‘reset’
(Object, Component<ScriptManager>): .type = ‘script_manager’
- Specification for ScriptManager Block/Node/Text editors are not yet complete.
(Object, Component<SearchSelect>): .type = ‘search_select’
(Object, Component<Select>): .type = ‘select’
(Object, Component<SortableList>): .type = ‘sortable_list’
(Object, Component<Submit>): .type = ‘submit’
(Object, Component<Table>): .type = ‘table’
(Object, Component<Telephone>): .type = ‘tel’/'telephone'
(Object, Component<Text>): .type = ‘text’
. Default Component if .type
is left unspecified.
(Object, Component<Time>): .type = ‘time'
(Object, Component<URL>): .type = ‘url’
(Object, Modal): All subsequent classes inherit these properties.
(Object, Modal<Alert>): .type = ‘alert’
(Object, Modal<Confirm>) .type = ‘confirm’
(Object, Modal<Prompt>) .type = ‘prompt’
(Object, Tooltip) - Used to express a nested tooltip.
If (Object):
If (String): Display as (String, Localisation)
Localisation and Variable Resolution are managed similarly to template strings; that is that they resolve all values inside of them with the arg0_options
parameter being accessible as options
. Variables may be passed down in curly braces like so: {<variable_key>}
.
In addition, HTML formatting will be resolved inline for localisation.
(String, Localisation):
£:en
- Delimits the current string as being in English, the default locale.£:<locale>
- Delimits the current locale. Used to additionally close the locale ending, i.e. £:enThis is a test.£:en£de:Dies ist ein Test.£:de
.£b
- Bolds text.£i
- Italicises text.£u
- Underlines text.£s
- Strikethrough text.£r
- Resets all text formatting.£w:<number>
- Changes the font weight. If no number is specified, i.e. £w
or £w:
, it defaults to 400
.£<colour_key>
- Picks a colour for localisation from a series of defaults. See below for options:£opacity:<number>
- Specifies opacity from 0 to 1. If it is above 1, opacity is assumed to range from 0-255.£rgb<number, number, number>
- Specifies a custom RGB number for colour.{<variable_key>}
- Delimits an expression/variable to resolve and embed inline. Creates an embedded JS Function behind the hood.defines
- Accesses any inherited defines from the Class/Window/Interface/Component.options
- Accesses the current inherited state from the Class/Window/Interface/Component.options.value
- Accesses the local value of the Component or its binding (if available).options.value_string
- Accesses the local value of the Component or its binding as rendered in String format (if available).{{<variable_key>}}
- Signals that the string the variable is attached to should be resolved as a (String, Localisation). Useful for minifying locales or nested resolution.
Special Functions are used nearly entirely for JS bindings - and are applied whereever you see (Function)
as a valid type in documentation. As such they have various e
and arg0_options
info passed along to them that contains all relevant information and state bindings.
e: (HTMLElement) - Same as arg0_options.element.
arg0_options: (Object)
.defines
as a reserved keyword..value
. Includes .defines
as a reserved keyword..defines
as a reserved keyword..class_state
or .instance_state
.
CSS styling principally depends on the root [ve=true] element's variables, which are inherited by its children. By default, .ve-light and .ve-dark are the main themes available for CSS styling, with the ability to define additional themes, and apply them via the use of .css_class
elsewhere. Note that most of the time, you will wish to target the .css_class
field in 2. Windows.