-
Notifications
You must be signed in to change notification settings - Fork 4
Changelog
This new major version of OGX.JS is a complete core rewrite, while keeping a fair backward compatibility.
- No engine dependency
- Typescript support
- Reduced size
- Faster rendering
- All components installable from CLI
1.52.x is the last version OGX.JS v1, as we have started rewriting the core. No new features are expected anymore for v1, only bug fixes. Some deprecations are however necessary for a smooth transition to v2.
- [DynamicList] fix updating
keyat runtime viakeymethod
- [FlipBook]
1.4.2: prevent flipping while batch flipping
- [Carousel] fix panel not focused after panel remove
- [DynamicList] fix
onRendercallback not called if list is filtered and length is 0 - [Point] fix
Pointnot init onsleepingUxi
- [FlipBook]
1.4.1: prevent z-index mess up - [FlexCells]
1.9.0: can now specify a custom class to target a cell viaconfig.target
- [OML] fix
*:Uxinot targeting proper element in rare complex cases when usinglookup - [OML] fix
focusalways called on non visibleUxiafter recursive creation
- [Carousel] fix wrong position after panel remove
- [OML] now supports custom selector when linking
OMLfiles
- [Router]
app.router.onpopstatefunction now only passed 1 argument which is therequest - [Data]
mergenow expectoverwrite,strict,copyparameters as an object{ overwrite: boolean, strict: boolean, copy: boolean } - [Data]
weldnow expectoverwrite,strict,copyparameters as an object{ overwrite: boolean, strict: boolean, copy: boolean } - [App]
config.theaterasbooleanis now deprecated, useconfig.theater: {enabled: boolean} - [App]
config.viewsas been deprecated with no replacement - [App]
config.popupsas been deprecated and moved toconfig.defaults.popup - [App]
config.overlaysas been deprecated and moved toconfig.defaults.overlay - [App]
config.stagesas been deprecated and moved toconfig.defaults.stage - [App]
config.windowsas been deprecated and moved toconfig.defaults.window
- [DynamicList] added
filter_remove_selectionflag, if set totrue, selected items that are filtered out are removed from selection. Defaults totrue. - [Roulette] can now be instantiated without
list(will skip rendering) - [Form] added
gatherflag in form config (viabindForm), iftrue,change_cbwill return found fields in the form element not defined infieldsattribute of the form config anyway, defaults tofalse - [Form] now treats
requiredfields of length0as invalid - [Router]
onpopstatecallback now passesurland route dataobject
- [OML] fix created children of Uxi focused when node is blurred when using
OGX.OML.render
- [FlipBook]
1.3.1: newFlipBookcomponent
- [CLI]
1.20.0:ogx deploy ftpandogx deploy localadded - [CLI]
1.19.0:ogx build release [password]now automatically uses the production version of OGX.JS,ogx build restore [password]uses the development version - [Theme]
1.2.5: fixeslighttheme image path
- [Media] added
toFilemethod to convert abase64encoded media to aFileobject - [Media] added optional error callback to
readmethod, such asOGX.Media.read(file, success_cb, error_cb);
- [Carousel] fix
rendernot focusing nodes on focused Carousel - [Scroller] fix not always triggering
BOTTOMevent if content is not pixel perfect - [StackedTree] fix erroneous
cssclass added fromdisplaycalculation when nocssis set
- [Form]
unbindAllbetter performance - [Uxi] better handling of
resizetree
- [Media] previously deprecated methods have been removed
- [Scroller]
scroll_callbackconfig attribute was deprecated and has been removed - [Calendar] setting up
layoutandengineas non object was deprecated and has been removed
- [FlexCells]
1.7.3: fix cell resizing not propagated - [Notifier]
1.2.2: minor queue handling tweak
- [Uxi]
observeOnceis now overridable, can be called in a loop and will cancel previous observer - [Carousel] now supports a mix of
Uxiand non-instantiatedHtml(Htmlinstanceflag was previously needed) - [List]
readnow accepts arguments in a different order than specified when caching
- [Container]
showIndexwas deprecated in favor ofindexand has been removed - [Carousel]
showPanelhas been marked as deprecated in favor ofindex
- [Form] fix issues with components embedded in form (such as
Tags) andjsontype when usingtoObjmethod
-
[Display] added
mapping(object of mapped values) when usingbind(css,oml,templatesupported)//bound object (from a list) {_id:'some_id', type : 'car', brand: 'Ford', ...} //display config { display: { css: {bind: 'type', mapping: {car: 'auto'}} template : {bind: 'brand', mapping: {Ford: 'pickup'}} } } //returns css class 'auto' //returns HTML template content (templatized) from file named 'template.pickup.html' -
[Display] added support to
pathin bind i.e.:{bind: 'target.type'} -
[DynamicList] added
shift_selectionflag, to select multiple items when theshiftkey is pressed, mode must be set tomulti -
[List] added
emptyandsizeoperators
- [DynamicList] fix item not removed from selection after
deleteorfindDelete - [DynamicList] fix item not removed from display after
findUpdatewhen list is filtered and item after update is now filtered out
- [Notifier]
1.2.1: better handling of animation when clearing and adding
- [Theme]
1.2.4.7: fixes missing class for Roulette - [CSS]
1.0.0.232: fixes missing class for Roulette
- [Tree] fix
getTreeJSON circular structure - [Tree] fix
deleteItemUxi's not deleted when using OML rendering
- [Touch] Swipe fix capture
- [Display] returns default
displayifdisplaysdoesn't have requesteddisplayviabind
-
[OML] added custom filtering function in
Bindviafunctionkeyword support inOML, i.e."my_property:Bind": { "object:OSE": "{{uxi my_tags:Tags}}", "function:OSE" : "{{my_global_function}}" } -
[App] added optional
readycallback -
[Carousel] added
lengthmethod to get number of panels -
[Media] added
loadmethod to load and convert from URL an image to base64
- [OML] fixes moving live
Uxiof typeHtml - [Router] fixes route cached on reload, should not cache
- [DynamicList]
clearwas marked as deprecated in favor towipeand has been removed
- [FlexCells]
1.7.2addedaxismethod andaxis_swapconfig flag - [Docker]
1.4.1fixes bad build
- [Theme] default theme updated to
1.2.4.4
- [App]
app.splash.hidemethod added to manually hide the splash screen - [Roulette] added
max_slideconfig flag, rolls a maximum ofmax_slidebefore reaching the proper value - [Roulette] added
searchandkeys.searchconfig flags, to lookup and roll to a value - [Roulette] added
keys.labelandkeys.valueconfig flags, to replace deprecatedkey - [Roulette] prevent crash if calling
listandvalmethods before the component has rendered - [Touch] now cancels event on capture if events is cancelable
- [Router] fixes improper cached route deleted from cache
- [Router] fixes skipped rendering due to same URL adds URL to history
- [Carousel] fixes
addNodeon emptyCarousel, node doesn't get focus - [DynamicList] fixes
noSelectionwith array of values as single parameter - [Roulette] fixes value doesn't roll back after non full swipe
- [Splash] better handling of browser tab becoming blurred while app still at loading screen
- [Router] Additional debug messages about
idle - [Theme] fix input fields marked as invalid on paste
- [Roulette] the
setDatamethod has been marked as deprecated, use thelistmethod instead - [Roulette] the
keyflag has been marked as deprecated, use thekeys.labelandkeys.valueinstead
- [App] faster/better handling of resize, removed obsolete code
- [Popup] added support to
auto_height - [OML] added support to data remapping in tree, ie.
{{oml myOMLfile $childobj}} - [OSE] added support to chaining
:OMLand:OSEtags - [Media] added
readmethod to convert aFileinto aurl - [DynamicList] added
display_maxflag - [DynamicList] added
chunksflag for chunk rendering - [Bind] added support to set binds in
OML
- [Popup] fix centering after calling
widthorheightmethods - [Carousel] fix
Dotsremoved on render
- [Dots] refactor
bind
Due to the CSS property
aspect-ratiowidely available, allOGX.Mediamethods are now deprecated (except for thecropandreadmethod) have been removed fromprodbuilds
- [Tags] fix
bindnot working
- [Tags] fix crash on
namemissing
Due to the overhaul of the Tags component, that now uses
DynamicList,Displayand now supportsOML, some flags and features are now obsolete. Note that these changes most likely do not affect your code beyond removing obsolete flags, and adjusting someCSSdeclarations.
- [CSS] the
CSSclass forTagshave been renamed fromogx_tags_tagtoogx_tag - [Tags]
ASCIImode is now obsolete and has been removed - [Tags]
hide_input_on_disableflag is obsolete and has been removed - [Tags]
click_moreflag is obsolete and has been removed - [Tags]
modeflag is obsolete and has been removed - [Tags]
TAG_ADDEDandTAG_REMOVEDconstants have been renamed toADDEDandREMOVED - [Display] the default fallback type has been renamed from
__defaulttodefault
- [Tags] added
OMLsupport to tags - [Tags] added
Displaysupport - [Tags] added
keysflag to maplabel,idandvalueto other fields, in object mode - [Tags] added
callbacks.inputandonInputcallbacks - [Tags] suggestions now supports
display_maxanddisplay_moreflags
- [Tags]
modeis now automatic - [Theme] default theme updated
1.2.4to support updatedTagscomponent andRoulettetweaks
- [OSE] fix issues with
$as parameter - [Uxi] fix
ogx_uxi_disabledclass missing
- [Stage] Additional
debugmessages (dev builds only) - [View] Additional
debugmessages (dev builds only) - [OML] Removed deprecations
- [App]
addPopupcan now be passed an optionaldataproperty to its config to be resolved as{{$}}inOSEscripts, forPopupcontent asOML - [App]
addWindowcan now be passed an optionaldataproperty to its config to be resolved as{{$}}inOSEscripts, forWindowcontent asOML - [Router] added options
hide_popupandhide_window, if set totrue, closes theWindoworPopuponhistory backbut does not redirect - [Router] added live cache controls via methods
cache,cacheOnce,uncache - [Scroller] now restores the scroll position of a re-used cached
Uxi
- [Tree] fix issue with
pathusing customkey - [Uxi] fix overwritten
selectoruponattach
- [Tree] methods that were marked as deprecated have been removed
- [OML] Fix
Controllerswhich have aStageas parent, not constructed
Some minor breaking changes have been made around Stage creating. The properties
useandhomeare now obsolete. They've been replaced byoptions.indexin the router configuration inapp.json
Before this change, the Stage declaration in
app.jsonwas
"vapps": {
"mystage:Stages.SomeStage": {
"use": true,
"home": "my_home_path",
"anim": "swap flip",
"placeholder": "default",
"scope": "public",
"theater": false
}
}
"routing": {
"options" : {...}
}
Now
"vapps": {
"mystage:Stages.SomeStage": {
"anim": "swap flip",
"placeholder": "default",
"scope": "public",
"theater": false
}
}
"routing": {
"index" : "mystage/my_home_path"
"options" : {...}
}
- [Data] added
get2DTransformmethod, returns translations over X and Y, and rotation tranforms - [Math] added
distmethod to calculate distance between 2 points - [Math] added
anglemethod to calculate angle between 2 points - [Math] added
rotatemethod to rotate a vector - [Touch]
Dragnow keeps existing rotation transform - [Touch]
MoveaddedstepXandstepYvalues in callback - [Resize] added support to rotation
- [Scroller] added
overflowsmethod, return the overflow height orfalseif not overflowing - [Form] added support to elements with
editablecontent - [Router] added support to query strings and URL rewrite
- [Router] added
enableanddisablemethods to change a route availability
- [ListPopup] new
ListPopupobject to open aDynamicListitem into aPopupwith a topped/bottomed-then-scroll-again-to-close mechanism
- [Touch] Fix
Dragcrash - [Resize] Fix cursor at
nwseandneswcorners - [Router] Fix
downloadlink handled as route - [OSE] Fix
functionkeyword
- [Router]
addToHistwas marked as deprecated and removed in this version
- [Touch] touches in
manualstate are disabled at start - [OML]
renderpasses created instances to the callback function if declared - [OML] overhauled
focusprocess, faster rendering
- [Uxi] added
observeSizeandobserveSizeOncemethods - [Core] added supports to encrypted user files (views, stages, controllers)
This feature requires
OGX.CLI 1.16.0+, make sure to update the CLI. In order to use this feature, your app must be built by doing
ogx build release mypassword --js
Note that the
.jsfiles in the/binfolder are not encrypted due to expected OGX init in this folder. This might change in the future to impose creating the OGX.JS instance inbin/index.jsand be able to encrypt the rest of the/binfolder.
- [Scroller] Relies on
observeSizeinstead ofobserve - [CLI]
1.16.0added--jsflag to use withogx build release mypasswordto encrypt user files
- [DynamicList]
SELECTnow triggers item and element - [Uxi] added support to
placeholdersatcreate - [Window] can now be set
scroll - [Popup] can now be set
scroll - [OML] added
makemethod, to create an OML node given a selector, a class and optional config - [Data] added
trimmethod which trims all values of type string, of each property of an object, recursively. Supports arrays. - [Core] encryption key can now be set via an async call, using a promise
Basic Example
const app = new OGX.App({encrypted: () => {
return new Promise(function(success, error){
//do async call then return key
success('mykey');
});
});
- [Touch] fix remove
touchwhentouchismanual - [Touch] fix
Movereturns wrong direction on first move
- [Calendar] exposed layout index via
layoutmethod
- [Chat]
1.5.0added support totypingfor multiple users, and support to more keyboard native events for mobile - [Notifier]
1.2.0addedcallbackper notification when the end-user taps it
- [Uxi]
onResizecallback not called when usingresizemethod
- [CLI] 1.15.2 now pack automatically backs up
oml,jsonandhtmlfiles. Addedogx pack restoreandogx pack cleancommands.
- [Point] added array support in
Point - [Uxi] added
getTopNodemethod
- [Form] fix
pasteon a restricted field
- [Point] removed
liveproperty. - [Point] does not extend
Uxianymore, is not added todocumentanymore - [OML] removed
Pointkeyword
Prior to changes, you could only render a OML tree based on a Point, and duplicate the OML in all point size settings, and the point would be represented by its own
HTMLelement
{"myPoint:Point":{
"live" : ["some_uxi_id_generated_inside_point"],
"0-768":{ ... OML},
"769-5000":{ ... OML}
}}
Now Point is available from any
Uxithrough thepointattribute, and can relocate an existing Uxi that has not been instantiated insidePoint, without usinglive, such as
{"#some_id:Views.MyView":{
"point" : {
"0-768":{"myWindow:Window":{
"node:OML":[{"myUxi:Uxi" : {}]
}},
"769-5000":{ "myUxi:Uxi" : {} }
}
}}
If parameters are omitted, the moving Uxi will be attached at the parent's default placeholder. Some parameters can be passed to target a specific parent and an optional element, such as
"0-768":{ "myUxi:Uxi" : {"parent" : {"id": "someUxi"}, "el": ".someElement"}
Note that
parentin this case is aqueryto target a parent. You can also use{"name": "myName"}etc.
- [OML] revised
Uxikeyword, can now target a specific placeholder upon move
OML now handles more
Uxicases. It can attach a detachedUxiat runtime, at the given location in the tree, usingUxikeyword
{"default:Uxi" : detached_uxi_instance}
Now it can also move an attached
Uxiby targeting an optionalparentand optional element.
{"myId:Uxi" : { "parent" : {"id": "someUxi"}, "el": ".someElement"} }
If parameters are omitted, it will attach at the current node in the OML tree, at the parent's placeholder.
{"myId:Uxi" : {} }
You can now also look for a node, given a search query, mostly used if you are not targeting a node by id. For instance, if you declared Uxi's with a name instead of id, you can search for this node.
If
lookupandlookdownare specified, OML will search up first, then down from the found node. Iflookupis only specified, it will look upstream for the target, and if onlylookdownis specified, it will only look downstream.
In this example, we lookup (upstream) for a node that has for name
"OtherName", then from this node, we lookdown (downstream) for a target node of name"MyName". The target node will be moved to either a given parent, or the current parent in the OML tree.
{"*:Uxi" : {
"target" : { "lookup" : {"name" : "OtherName" }, "lookdown" : {"name" : "MyName"} }
}}
You can also look for the new parent to move the target to, using the same logic.
{"*:Uxi" : {
"target" : { "lookup" : {"name" : "OtherName" } , "lookdown" : {"name" : "MyName"} },
"parent" : { "lookup" : {"name" : "SomeName" }, "lookdown" : {"name" : "MyParent"} }
}}
You can of course use
lookdownonly, if the target and/or the parent are downstream, and you do not need to start the downstream search from a higher starting point in the tree, orlookuponly
{"*:Uxi" : {
"target" : { "lookdown" : {"name" : "MyName"} },
"parent" : { "lookup" : {"name" : "MyParent"} }
}}
- [OML]
OGX.OML.rendernow returns an array of created instances - [App] exposed
config.exitviaexitmethod - [Uxi] added
lookupandlookdownmethods to find a node up or down stream based on a query
- [App] better handling of multiple stages as start-up
- [OML] minor refactoring of
Pointinstantiation - [Placeholder] exposed via
pholders - [Popup] automatic setup for
centerandkeep_centered, centering and auto centered by default unless specified - [Popup] better handling of
focus - [Router] added
isCachedmethod to check if the current route has been loaded from the cache
Due to internal naming change, that does not affect your code, all components have to be updated and are not backward compatible.
- [Data] added
intersectmethod - [Data] added
adiffmethod
- [Core] fix
decryptpak files - [Carousel] fix
dragLeftanddragRightchanging panels after prevented drag
- [Window] touch
Dragfocus/blur set toauto
- [Carousel] setting index can now also trigger a CHANGE event
carousel.val(__n, __trigger_bool)
- [Container] fix bad injection at build time
- [App] now has a
constructconstructor to optionally use when extending App - [App] app instance also exists as constant
OGX.Core - [Form]
bindFieldnow support a submit callbacksubmit_cboutside ofform - [StackedTree] added
prevandresetmethods - [StackedTree] now passes itself as additional parameter when triggering an event
- [Tasker] new object to manage background tasks at idle via
requestIdleCallback
- [Display] fix
bindwithOSEscript not returningtemplate - [Display] fix dynamic display via
displaysbound to property - [Workers] fix worker running in interval not stopping when calling
OGX.Workers.stop(worker_id);
- [App] reduced memory footprint, updated internal naming
This version requires OGX.CLI version
1.14.1+.
- [App] fix app not hiding
Splashdue to app notREADYwhen a stage has noOML, faster init - [CLI]
1.14.3betterindexmanagement withlink unlink compress restore
- [App] not triggering
READYwhen rendering astagewith a singlePopupasOML
- [CLI]
1.14.1+now encrypts, decrypts pak files and config - [Data] exposed
encryptanddecryptmethods - [Net] if the config is encrypted, then Net will encrypt/decrypt
.pakfiles if the build is packed. - [OSE] added support to target result property in
crumbsuch as{{crumb fetch_id $some_property}} - [Popup] added
shakemethod - [Popup] added
keep_centeredflag - [Popup] added support to
cssanimations, supported arefade,slide,scale, some can be combined - [Popup] added
MOVEandMOVEDevents - [Touch] improved
auto state - [App] added support to
cssanimations when changing stages, supported areswap,flip,slide,shuffle, some can be combined - [App] can now be extended by passing a custom class when creating app =
new OGX.App({core: 'YourClass', ... });
- [Uxi] fix floats not receiving
focuswhen added to stage usingstage.create - [OML] not attaching floating objects when detaching then using
OSEscript{'default:Uxi':instance}to attach
- [Docker]
1.3.0, addedanim_showflag, defaults tofade slide - [FlexCells]
1.5.1, addedaddCell,removeCellandgetCellIndexmethods - [ContextMenu]
1.1.1, removed obsolete code
- [Ghost] now extends
Placeholder - [Router] now caches the route only when the route has fully rendered
- [Theme] updated to
1.2.2 - [CLI]
1.14.3better handling oflinkandunlinks
- [Display] fix dynamic bound
OMLdisplay not returned as clone - [Tree] fix
addItemto item with existing children, duplicated children
- [Display] fix dynamic bound
OMLdisplay
- [OML] fix promise result not stored if fetch
idalready used, now overwrites result with sameid - [View] fix using
htmlinstead oftemplatein config, re-interpreted afterDisplay
- [Form] exposed
enabledForm&disableForminternal methods, and now enables/disables binded form or desirated form by passing selector - [Form]
toObjnow skips thedisabledelements if passedtrueas 2nd param - [Form]
cb_changeof bound form is now passed an object withoutdisabledreadonlyvalues - [Tags] added
lowercaseflag in config to force saving input tag as lowercase - [Popup]
maximizemethod can now be used to temporary turn if on/offmaximizeandmaximize_dbcactions, by passing aboolean - [OML] added
getNodeByProp, returns a node given aproperty/valuepair - [OML] added
getNodeByName, returns a node given aname - [List] now supports direct property/value combo in
getunsetupdatemethods, auto transformed to{eq:value}filter
- [Form] not validating a field on
paste
- [OML] remove obsolete internal parameters
- [App] fix
Splashnot hiding when using optionbookmark: trueand reloading page
[FlexCells] 1.4.0 added flatten method
- [Router] fix navigation hang when rendering
Stageobject withoutOML
- [App] fix crash when using multiple
Stageobjects and start-up stage has no template.
- [CSS] Splashscreen tweaks
- [App] added
exitoption, set totrueby default. Set to false and prevent reload/exit. - [DynamicList]
selectandselectIndexmethods can now be passed an additionaltriggerparameter to trigger selectionevent&callback - [Uxi] focus tree downstream via
focus(2)now skipsfloatingobjects that are notvisible, previously only available with recursive focus nodes downstream viafocus(1) - [List] with non uniform objects, skip attributes that have a different
typewhen expectingstringtostringcomparison
- [OSE]
loopoptimization - [App] startup speed improvements
- [App] now trigger
OGX.App.READYonce the default route of the focused Stage at start has been navigated to. - [Router] additional
debuginfo
- [Bind] fix crash when binding a
Uxito aUxiand the filteringUxidoes not have a value yet
- [FlexCells]
1.3.4auto_hidenow defaults totrue
- [OML] fix
isOMLtrying to parse non-json strings
- [Flip]
1.1.0addedvalmethod to get the current side
- [Placeholder]
placeholderscan now be expressed as a 2D Array - [Tree]
addItemcan now be passed an array of items
- [Tree] fix parent item
statenot updated after removing a child usingdeleteItem - [Display] fix dynamic
OMLviaas
- [Data]
OGX.Data.isOMLhas been deprecated in favor toOGX.OML.isOML
- [Flip]
1.0.0newFlipcomponent to render and flip between 2OMLtrees. - [FlexCells]
1.3.3fixplaceholderin complexOML - [Table]
1.2.0addedmodeinconfigandmodemethod to set selection mode toroworitem(prop/val combo)
- [Placeholder] fix offset in placeholder
- [FlexCells]
1.3.0value ofcellSizecan now be expressed as an array
- [Display] fix bind issue introduced with
1.33.1
- [FlexCells]
1.2.2value ofmincan now be expressed as an array of mixed values i.e.[100, '40%', '250']
- [Data] fix
clipboardnot triggeringfocus
- [OML]
resultmethod now flushes result cache ifnullis passed as parameter
-
[DynamicList] added
findMovemethod to move an item at the desiredindex -
[Net] added
downloadmethod to create and auto click a download link -
[Uxi] added optional parameter
levelstorevealmethod, only revealnlevels away fromUxi -
[Display] refactoring, added support to
OSE scriptsintemplateandcssbinds -
[Touch] added
dblickconstant for double click -
[Tree] added
openItem,closeItemandgetItemByPathmethods -
[OSE] added
functionkeyword for inline function declaration, or link to a global function{{ function myGlobalFunction }} //link to function {{ function myGlobalFunction() }} //execute function {{ function if( $color === 'red' ){ return '#CC2222'; } return '#22CC22'; } }} //declare and execute
- [Tree] fix
selectionnot reset when selecting using one of the select methods - [Tree] fix item content not showing on first expend after
updateItem
-
[OSE]
functionandmethodkeywords now return link to function/method without executing it if parenthesis aren't present.{{ method myMethod myUxi:MyView }} //returns link to method {{ method myMethod() myUxi:MyView }} //executes method and passes available parameters {{ function MyGlobalFunction }} //returns link to function {{ function MyGlobalFunction() }} //executes function and passes available parameters
Note that the breaking nature of this change only applies to the
methodkeyword sincefunctionis new
- [DynamicList] added
scrollmethod to scroll to an item of the list - [Net] added
uploadmethod that triggers file select process and returns the selected files - [Media] added
cropmethod to resize or crop abase64encoded image
- [Placeholder] fix offset in
placeholderwhen anodedoes not contain anydefaultselector
- [DynamicList] passes itself as parameter when calling
callbacks.render - [Theme] Updated default theme
- [Chat]
1.3.0added attach icon to select and send media - [FlexCells]
1.2.0better handling of existing HTML when creating aFlexCellswithout atemplate
- [Carousel] fix
replaceNodenode not always rendered
- [Carousel] fix
replaceNodenode not properly removed
- [Splash] OGX now has a
Splashscreen with loading progress, set inapp.json - [List]
updatemethod can now be passed a custom update function such aslist.update({}, (__item) => {}); - [List] added support to
existfiltering keyword - [Carousel] added
replaceNodemethod - [Uxi] added
onResizeoverride, called recursively down the tree when a node extendingUxigets resized - [Point] added attribute
data-ogx-pointto its element reflecting current point, for styling purposes - [Point] added reference to itself via property
idwhen triggeringCHANGEevent - [App] now resizes nodes when entering and exiting the browser fullscreen mode
- [App] can now return the
versionfrom themanifest.jsondoingapp.version((__version) => {...}));
- [Uxi] fix
revealnot showing appropriateCarouselpanel when revealing a nested child and using aContaineras parent
- [Uxi]
revealperformance
- [FlexCells]
1.1.2added get/settercellSizeand eventOGX.FlexCells.RESIZEon user resize - [Docker]
1.2.3prevent preview from showing if Popup is already showed
- [Window] added
titlemethod to get/set the title - [DynamicList]
no_selectioncan now be expressed as anArrayof values, considering thekey - [DynamicList] has a new select mode
set, makes the list items push buttons and prevents unselection - [OML] exposed
Coreoptionsmax_render_timevia getter/settermaxRenderTimeandmax_depthvia getter/settermaxDepth - [Tabs] exposed
config.iconsvia getter/settericons - [Popup] new parameter
config.group_iconas default icon for agroup - [Popup] added data attribute containing the
groupif set, for styling purposes - [App] grouping popups now adds
iconsinto tabs if popup hadicon - [App] ungrouping popups now restores the
iconfrom theTab
- [Carousel] fix children
focusupon rapid change usingnextorprev - [Uxi] fix
parentswithout arguments not returning all parents - [App] fix Grouping then ungrouping a
Popup,titlemissing in the ungroupedPopup
- [Tabs]
SELECTis now triggered with a 2nd object containing tab info proper toTabssuch asindex,indexused to be merged to the tab object. This change only affects your code if you were catching the newindexby listening to this event.
- [Router] added
resolvemethod in debug builds only - [Tabs] performance enhancements
- [Container] performance enhancements
- [Popup] grouping and ungrouping popups, added support for
icon&icons - [OML] added support to
inline OMLwithPlaceholdersupport
- [Tags] fix input not hidden when disabled at start
- [OML] debug only, prevents crash when trying to create an instance of an unknown class
- [Data] Size expressions now support min & max via
[min_value, max_value] - [Data] added
isSizeExpmethod to test for a size expression - [Data] added
toSizeExpmethod to convert a dimension and a min max to size expression - [Popup] Added
keep_ratioflag - [Popup] Added support to
min_width,min_height,max_width,max_heightvia size expressions throughResize - [Window] Added support to
min_width,min_height,max_width,max_heightvia size expressions throughResize - [Resize] Added
keep_ratioflag - [Resize] Added support to size expressions
- [OML] Added
getNodeClassandgetNodeIdmethods
- [App] added
dropNodemethod to hard delete aStageor aView - [Popup] added support to
maximizeandmaximize_dbcupon grouping popups - [Form] added
submitconfig option for afield, triggerssubmitof the form on pressreturnorenter - [Bind] now supports
Arrayas value when filtering - [GroupedList] added
addItemsshortcut method to batch insert items, viaaddItem - [GroupedList] added
groupingmethod to change the grouping parameters - [GroupedList] now supports inserting filtered items without rendering
- [Roulette] added optional
triggerflag onvalmethod
- [OSE] fix
mongogxkeyword not properly interpreted - [OSE] fix whitespace causing some issues in some rare cases
- [List] fix
groupbydate - [Popup] non resizable and centered
PopupinPopupnot always centering upon parentPopupuser resizing - [GroupedList] fix issue related to
group_order
- [App] methods that did not return anything are now chainable
- [Popup] icon of icons will pass the
Popupas parameter in thecallbackif no parameter was set - [Uxi] generated id format change to
u00000000000
- [Tabs] removed deprecated
editableflag
- [Point] fix behavior
This version is compatible with OGX.CLI >= 1.13.0
- [Uxi] add/remove css classes
ogx_uxi_disabled,ogx_uxi_blurredto the element based on state - [OML]
Uxitag now useswakeorattachautomatically depending on the state of the Uxi - [Calendar] Default config is now 3
layouts, can be simplified withsimple: truewhich reverts to old behavior - [Calendar] Added up and down arrows on multiple
layouts - [Router] Added
gathermethod, returns array of allowed routes given the current scope - [Scroller] Added
placeholdersupport - [Stage] Enhanced
placeholdersupport - [Placeholder] Performance improvements
- [Resize] Added cursors on rollover resizeable borders and corners
- [Overlay] Fix
removeOverlaycalled twice in some cases - [Window] Fix
close_on_click_outnot working when aDynamicList, present inside theWindow, has been scrolled - [Uxi]
sleepfix scrollbar not detached ifuxiisscroll
- [CSS] update to support Calendar up & down arrows
- [Theme] update to support Calendar up & down arrows
- [Point] fallback onto first point if
Point's container has nowidthat start
- [Scroller] added
dirproperty as direction, in the data object of eventSCROLL - [Tabs] can now be created disabled by setting
enabled: false - [Router] new method
reloadas shortcut to getting therequestand navigating torequest.urlagain - [Point] can now be passed a
targetto watch within its element, instead of its own element, thenmin max, can be in that case, expressed in percent - [Point] exposed
getPointto retrieve current computed point
- [DynamicList] fix issue with
no_selection - [DynamicList] fix
scopeasstringafterjwt - [DynamicList] fix selection with
HITmode andscopeasstring
This version is compatible with OGX.CLI >= 1.13.0
- [Uxi] initial implementation of
toJSONandtoOMLexport methods ofOML tree - [Uxi] initial implementation of
dataattribute to have a top filter over allUxi's, and output data viatoOMLandtoJON - [Uxi] initial implementation of
filtermethod - [Core] added debugging protection on production builds
- [Form] added
changemethod to trigger a change event on a bound form. - [Router] request has a new
windowproperty, set to the initial url on first load. - [DynamicList] added
renderconfig callback andonRendermethod - [OSE] added support to
Templater.jmakevia{{template name object}} - [OSE] added support to
uxi.propertyto target auxiwith a different property thanid - [OML] extended support to creating nodes from string
- [OML] floats (Window, Popup..) can now be created without an id by using
node:Windowinstead ofsome_id:Window - [Point] added support for pseudo filters instead of ids, for objects to re-use
- [Popup] added
maximize_dbcflag, if set, double click/tap onPopuphead will maximize/restore ifmaximizeis set totrue - [Scroller] added
percentmethod, returns scroll position in percent.
- [Router] fix
stage.urlnot updated on back button from a url with rewrite/capture - [Popup] fix
matrixoverridingtranslate3dwhen applying multiple transformations
- [MISC] Performance improvements
- [Popup] better handling of z
- [Router]
addTohistis deprecated in favor ofadd
- [Router] fix
urlmethod returningundefined
- [Uxi] added support for non focusable components
- [Uxi] fix focus upon create from another Uxi
- [Ghost] has been restored for legagy support
This version is compatible with OGX.CLI >= 1.13.0
- [OML] can now render a tree and disable all children down the tree if a parent is disabled upstream
- [App] new parameter
exportableto pass at instantiation, allows or preventstoOMLexport - [App] new parameter
uniqueto prevent another instance running on another tab - [App] hot reload CSS and HTML files without reloading the app (dev builds only) via
refreshmethod - [Workers] added
run,start,stopmethods control a worker that runs in an interval - [Router] added
gatemethod andidleprocess - [Router] can now cache the route only once with
onceas value for cache expiration - [Calendar] added
offDatesmethod andoff_datesconfig flag - [Calendar] added
noSelectionmethod andno_selectionconfig flag - [Scroller] added
overflowmethod
- [Uxi]
enableanddisablewithin the Uxi have been replaced byonFocusandonBlur - [Router] oml in routes must now be specified as "oml"
Previously
"mystage/myroute:OML" : "myOMLFile"
Now must be passed as
"mystage/myroute" : {"oml":"myOMLFile"}
- [Form] updated
autocompletebehavior onAndroidwebview - [Popup]
widthandheightmethods are now chainable - [Neutralino] default config file removed in favor of the
buildercommand of the CLI - [Scroller] Better handling at creating a Scroller over an element with existing content
- [Geo] Better handling of Google loaded with
defer - [Scope] Better handling of
regex
- [Popup] fix
show:falseat creation shows popup anyway - [Tree] item arrow not closed after children is deleted and parent has no more children
- [Install] fix obsolete dir not removed from install procedure, breaking install from CLI
- [Calendar] fix rare issue when calendar becomes unselectable after stressing it with swipes and clicks
- [Scope]
matchwas previously deprecated and has now been removed - [Scope]
checkwas previously deprecated and has now been removed - [Scope] passing scope as array is now deprecated in favor to scope expressions
- [Calendar]
swipeablewas previously deprecated and has now been removed - [Ghost] is obsolete and has now been removed
- [Tree]
updateItemadded optionalbooleanparameter to re-render or not the item's children - [Tree] now returns
itemupon callingselectItem
- [Tree] fix issue adding items to
rootwhen nokeyis set
- [Carousel] fix issue using
omlasdisplaywithas
- [Carousel] fix
dragenabling onresize - [Touch] fix
statenot applied - [Tabs] fix issue with ungrouping
popupsand grouping backtabmissing
- [Bind] now triggers
OGX.Bind.FILTERevent from the bound component when a filtering happens, passing the property/value used
- [Popup] force
resizeNodesontransitionendaftermaximizeorminimize
- [OML] obsolete
route_dataargument not removed
- [List] simple
group(1 property) viagetcan now be passed as string
- [DynamicList] fix
refreshwithlimitof 1 - [Carousel] fix
dragbecomes enabled afterresizecalled from animated parent, even if was set tofalse - [List] fix issue using
groupmviaget
- [DynamicList]
selectnow supports paths such asselect('user._id', 'whatever'); - [Tabs] added
removemethod, expects property/value pair - [Display]
templatecan now be set asOSE expressionand is resolved per item (alternative tobind) - [Display]
csscan now be set asOSE expressionand is resolved per item (alternative tobind) - [Window] can now be passed
trueasaniminshowmethod, usesdefault anim - [Bind] added flag
convertin config,trueby default, auto converts element value to proper type - [OML]
Bindcan now be passed multiple properties such as{'category,type:Bind':{}} - [Templater] added
amakemethod as a shortcut tomakebut using array of objects instead of single object
- [MISC] template files that were in the
/ogxfolder to be used "by hand" are removed in favor of the CLI - [Theme] theme update
- [Tabs]
editableis now deprecated in favor ofaddandremove, removed from production builds
- [Tabs] fix previous tab not always selected by default after removing a tab
- [Tabs] fix tab not always selected when hold + drag
- [OSE] fix some
reserved keywordsused as property not converted back - [Form] fix field
restrictnot applied viabindFieldintroduced withDynamic Forms - [Popup] fix wrong position on
hide/scaleafter adrag
- [OML] fix issue with
PointandHtml
- [CSS] minor changes
- [Roulette] fix issue with multiple
RouletteandTouch
- [Router] routes can now be set a
reloadflag, which, if set totrue, forces the stage to re-render the route/view - [Router] some link options can be set with
data-reloaddata-history - [DynamicList] in
JWTapp mode, settingtrueforscopeinDynamicListconfig forcesJWTscope. If set to anything else thanfalseortrue, it will use that as scope instead - [Carousel] now can generate automatically each
OMLsub node with aListand aDisplay
- [Template] now extends
UxiandPlaceholderwhen it has children - [Touch] better compatibility
- [Misc] better performance
- [Popup] fix not restored at proper position after
maximize - [Object] fix issue with scrollers sometimes rendered twice
- [Uxi]
findacceptsfalseastype
- [Switch] behavior change, allow setting a value even if component is
disabled - [Roulette] behavior change, allow setting a value even if component is
disabled
- [Net] fix
unpack
- [Iceberg] fix
touchnot updated to latest version - [Touch] fix broken
Swipe - [Window] fix
drag+hidenot disablingdrag - [Carousel] fix resizing behavior
- [Misc] performance improvements
- [List]
uniqueadded support to deep path - [Popup] now accepts percent for
xandyinconfig - [Popup] ungrouped
Popupwill now acquiredragableandresizeableproperties from parentPopup - [Popup] ungrouped
Popupwill be created at removedTabposition on screen - [Carousel]
addNodesupports additional callback parameter called instead of firing event after panel is rendered
- [Calendar]
MONTH_DAYSlayout extra line of day - [DynamicList] fix missing
unselectoptional callback - [Tabs] fix issues with
hold+dragwhen reordering - [Popup] fix issue with ungrouping popup when its
Carouselpanel containsOML - [Popup] fix grouping a simple
Popupwith aContainer Popupwhen first node isscroll - [Popup] fix position when resizing
- [Chat] is now removed from the core framework and moved to extra components
- [Popup] user dragged Popup will not re-center on screen resize if
centerwas set totrue - [Popup] if
xandyare set andcenterset totrue,centeris automatically set tofalse - [Popup] will not
centeronce it's been user dragged, will notresizeon screen resize if it's been user resized - [Misc] performance improvements
- [Form] field config
typecan be set tojsonand used with other components likeTags
- [Popup] new methods
widthandheightoverridingconfig.widthandconfig.height - [Calendar] new method
resetSelection - [Calendar] new switch for method
valto skip the rendering - [Template] is now a separate class that Views extend by default
- [Placeholder] now supports multiple sub nodes per placeholder
- [Popup] fix transition preventing resize
- [CalendarEngines] proper default label
dddforMONTH_DAYSlayout
- [install] fix
fontsandthemesmissing if the project already hadwwwupon install
- [DynamicList] fix no selection returned if no key was set
- [DynamicList] added
keymethod to get/set key
- [Roulette] fix missing callback placeholder
onSelectmethod - [Touch] fix missing some default parameters
- [FormInstance] fix broken default OMLs
- [Tree]
typeswithoutdisplayfallback onto default display - [FormInstance] added support to array of objects as cyclable
- [Workers] New object to manage and execute
WebWorkerson the fly
Starting at version 1.20, events for most
Uxi's now have an equivalent method, if you do not wish to use events. It also opens more possibility, like adding some of your business logic inOML. You can now set your callbacks in the config when creating aUxi, i.e., forDynamicListif you are creating at runtime:
{
...,
"callbacks" : {
"select" : YOUR_FUNCTION
"unselect" : YOUR_FUNCTION
}
}
You can also use the new
OSEmethodkeyword to target aUxi's method when creating fromOML, such as, for a method of the view instance
{
...,
"callbacks" : {
"select:OSE" : "{{method the_method_of_my_view myView:View}}"
}
}
Another new feature that was missing, was the ability to create dynamic forms on the fly. So far, forms relied on Templates. Now you can generate forms using OGX objects to control each type of field. See the Form section for mpore info
let myFormInstance = OGX.Form.fromObject(MY_OBJECT, PARENT_UXI, SELECTOR);
myFormInstance.onChange = function(obj){...};
- [OSE] new keyword
methodto target aUxi'smethod, format{{method METHOD_NAME UXI_ID:UXI_TYPE}} - [DynamicList] added
onSelectandonUnselectmethods, andcallbacks.select,callbacks.unselectinconfig - [Tabs] added
onSelect,onAdd,onRemovemethods, andcallbacks.select,callbacks.add,callbacks.removeinconfig - [Tags] added
onSelect,onAdd,onRemovemethods, andcallbacks.select,callbacks.add,callbacks.removeinconfig - [Iceberg] added
onUp,onDown,onLeft,onRight,onRestoremethods, andcallbacks.up,callbacks.down,callbacks.left,callbacks.right,callbacks.restoreinconfig - [Tree] added
onSelect,onUnselect,onOpen,onClose,onMovemethods, andcallbacks.select,callbacks.unselect,callbacks.open,callbacks.close,callbacks.moveinconfig - [GridSwiper] added
onUp,onDown,onLeft,onRightmethods, andcallbacks.up,callbacks.down,callbacks.left,callbacks.rightinconfig - [NestList] added
onOpen,onClosemethod, andcallbacks.open,callbacks.closeinconfig - [Calendar] added
onSelect,onUnselectmethod, andcallbacks.select,callbacks.unselectinconfig - [Carousel] added
onChangemethod, andcallbacks.changeinconfig - [Dots] added
onSelectmethod, andcallbacks.selectinconfig - [Roulette] added
onChangemethod, andcallbacks.changeinconfig - [Switch] added
onChangemethod, andcallbacks.changeinconfig - [Form] new
FormInstancesubclass created fromfromObjectmethod
- [Calendar]
formatof built-inlayoutscan now be overridden in the config of the layout - [Calendar] custom layout can now receive a config object
- [OSE] prevent reserved keywords interferring with scripts
Calendar layout and engine setup format has changed to allow custom parameters to built-in layouts, without the need to create a custom layout. Before 1.20, only the engine could receive data via a config object
{"layout":"WEEK_DAYS", "engine":"CUSTOM_ENGINE", "config":{}}
Since 1.20, both the layout and engine can be passed a custom object. The layout and the engine must be declared by name now.
{
"layout":{"name":"WEEK_DAYS", "config":{"format":"YYYY"}},
"engine":{"name":"CUSTOM_ENGINE", "config":{}}
}
- [Touch] fix issue with
SwipeandCarousel - [App] fix issue if
Appis created without config object - [Tree] fix issue when creating an empty
Tree - [Tree] fix issue with selection and icons
- [Tree] fix issue with
Scrolleron new tree - [Tree]
iconsnow handled viacss
- [Theme] default theme updated to version
1.2.61
- [Touch]
MoveandHold + Moveadded additional attributesx, y, distX, distY, dirX, dirYin callback object - [List] added support to deep path sorting
- [List] added support to deep path updating
Starting at version 1.19,
ajaxis removed from the custom jQuery build. OGX.JS now usesfetchall across the framework. If you wish to continue using jQuery's ajax methods, feel free to overwrite the jQuery build inwww/js/lib/jquerywith the full production version. The custom build does NOT include these modules :ajax, css/showHide, deprecated, wrap, effects and deferred. This is a non breaking change unless you rely on these features within your own code.
- [Net] un-jQuery-fy component
- [Lib] slimmer
jQuerycustom build 3.6.1 - [Lib]
moment.jsupdated to 2.29.2
- [Touch] does not add by default an instance of
Drag,MoveandSwipeto components usingTouchby default, they now must be added on demand.
- [Touch] added
Movemethod to callback the distance between the start position and current mouse/touch position - [Touch] added
stateoptional parameter with valuesautoormanual - [Touch] added
add,getandremoveto allow multiple touches of each kind - [Uxi] added
observeOnceas proxy toobserve, turned off automatically once observation completes - [DynamicList] added
ogx_dynamic_list_dragCSS class, applied when an item of the list is being reordered - [Calendar] added
layoutsmethod to change the layout configuration on the fly
- [DynamicList] fix broken
reorder
- [Core] refactor around object naming and instantiation, smaller builds and performance improvements
- [Core] object names constants have been removed as they were not useful anymore
- [Window] prevent
dragwhenhidehas been called - [StackedTree] fix
DynamicListoverriding back button - [Scope] fix
evaldeprecation in production build - [OML] fix
controllersrendering priority
- [OSE] data coming from a route-capture (route data) now has its own variable
% - [Tree] was the last component not hooked to
OML, has been overhauled and now supportsOMLrendering andDisplay - [DynamicList] added support to
whitespacein ids - [DynamicList] added events
SELECT_FILTEREDandSELECT_UNFILTERED - [DynamicList]
getSelectionnow returns filtered selection if the list has been filtered post selection
- [OSE] better data support in recursive template in template
- [Tree]
setIconSizehas been removed, now handled viaCSS
- [Router] added
expiremethod to clear the cache for a given url
- [DynamicList] added
no_selectionflag andnoSelectionmethod - [Color]
rgbToHex,rgbToHslndhslToRgbnow accept any variation of arguments (string, array, object and arguments) - [Calendar] added
BROWSEevent, triggered when user navigates with top arrow buttons - [Form]
bindFieldallowedflag now defaults to/[0-9a-zA-Z‘’'"à-úÀ-Ú\-\!\.\?#@$\:\(\)\/_,;%' ]/ - [OSE] added additional debugging messages if the script fails
- [Uxi] Added optional flag
name, andgatherByNamemethod - [Router] added
OGX.Router.GOTOevent, triggered upon internal link - [Router] Added
cachefeature, allow to reuse complete routes from Cache instead of re-rendering
"cache": [{"url": "stage/home", "expiration": 100}, {"url": "stage/about", "expiration": 300}]
- [Templater, OSE] recursive dynamic templating with custom object is now possible via
OSE
{{template STRING|VARIABLE PATH_TO_OBJECT}}
{{template $type $sub_object}}
{{template article #article}}
- [OML] added
Functiontag, which calls a user function that returns aPromise. Based on resolve, a different OML node will be rendered
{"my_global_function:Function":{
"id": "my_fnc",
"data" : {...},
"success" : [SOME OML],
"error" : [OTHER OML]
}
}
Down the tree, get the result passed to
successorerrorcallbacks by usingOSE
"data:OSE" : "{{result my_fnc}}"
- [Router] fix issues with capturing variable in dynamic routes with multiple dynamic routes
- [Form] fix issue with
bindFieldovertextareawith new lines andrestrict
- [Uxi]
renderhas been deprecated with no replacement - [DynamicList]
clearhas been deprecated and replaced withwipe - [Tags]
clearhas been deprecated and replaced withwipe - [Chat]
clearhas been deprecated and replaced withwipe
- [DynamicList] fix
cssnot updated when usingfindReplaceorreplaceAtmethods while using binds - [DynamicList] fix
findUpdatenot keeping selection css class - [Router] Fix issue with
bookmarkoption when using multiple stages - [Router] fix issue with navigation history with empty views
- [Overlay]
close_on_clickflag can now be passed a callback - [Router] Added
requestmethod - [Router] Added
jailconfig flag - [Router] Internal
alinks are now supported, format/stage/route - [Form]
change_cbcallback now buffered, preventing multiple events when autofilling multiple fields at once - [Uxi] added
parentsmethod - [OML] value of selector property can now be expressed as an OSE script
The configuration for a object can be reused via an oml file
{"#my_selector .my_class:Views.MyView":"{{oml some_file}}"}
-
Some methods are now chainable (mainly around UX)
app.cfind('Popup', 'my_popup').disableButtons().addLoading(); app.cfind('DynamicList', 'my_list').disable().addLoading(); app.cfind('DynamicList', 'my_list').insert({...), 0).enable().removeLoading();
- [Dependency] jquery updated to version
3.6.1 - [Dependency] moment updated to version
2.29.2 - [Media] prevent elements re-init, performance improvements
- [Media] buffered observer
- [Scope] fix rare issues with
eval, performance improvements
- [DynamicList] better handling of
selectionat start-up - [Calendar] added
browseflag,swipeableflag deprecated in favor toswipe - [Router] fix issue with dynamic routes and
:OMLlinks - [Popup] added
maximizeandnormalizemethods - [Form] added optional
mapparameter topopulate - [Form] added optional
paramsparameter tobindForm - [Uxi] added shortcuts
on&offinto prototype overel
Any object extending the
Uxiclass can now be listened to directly at component level as well. Both methods remain valid.
const list = app.cfind('DynamicList', 'my_list');
//Previously has to listen over el
list.el.on(OGX.DynamicList.SELECT, ...);
//Now can also be listened directly at component level
list.on(OGX.DynamicList.SELECT, ...);
//Also usable over this, previously
this.el.on(this.touch.down, ...);
//Now can be listened directly at Uxi level
this.on(this.touch.down, ...);
- [Calendar]
swipeablehas been marked as deprecated in favor toswipe
- [DynamicList]
selectnow supports array if selection mode ismulti - [List]
inandninadded support tonumber to string|array|object|number comparison - [Router] added
evaloption to handle custom navigation permissions - [Router] scoping now supports
scope expressions - [DynamicList] scoping now supports
scope expressions - [Scope] scope to test can now be declared as a
regular expression - [Carousel] added
prevandnextmethod
- [Scope]
checkhas been marked as deprecated in favor toeval - [Scope]
matchhas been marked as deprecated in favor toeval
All scoping must be declared as scope expression vs previously array. This change impacts
RouterandDynamicList. Previous route scope
{"mystage/myroute":{
...
scope : ['public', 'user']
}
New format
{"mystage/myroute":{
...
scope : 'public user'
}
- [Stage] template is now script interpreted
- [Data] added
evalmethod - [OSE] fix issues with some
OSEscripts not evaluated - [Form] removed obsolete polyfill used for
validate - [Form] fix
changenot triggered when backspace or delete on a field - [Uxi]
revealcan now be passed an animation constant, only applicable when targeting aPopuporWindow - [Uxi]
gathercan now lookup subclasses of Views, Controllers and Stage, such asViews.MyiewvsView
- [DynamicList] fix
modelive change not allowing selection - [Switch] fix
togglenot triggering update forFormwhen stressing it - [Form] minor improvements
- [Router] fix routing issues introduced in 1.11.0
- [Router] faster clearing of existing nodes
- [OML] minor refactoring, speed improvement
- [Placeholder] added support to
defaultfor Stage - [Point] now extends
Placeholder - [Popup] fix animation not working on popups with heavy content
- [Stage] now extends
Placeholder - [Object] internal, better handling of
uxi.kill - [OML]
Controllerare now constructed last (in the entire tree)
Stage now only supports one routing element and the selector of the element must be set in the Stage OML such as
{'my_stage:Stage':{
...,
placeholder:'#my_element'
}}
This change is expressed in the routing, by changing the existing target element of the route, from
...,
'my_stage/my_route':{
'#my_element:SomeObject':{
...
}
}
To this new version. We set the element once in the Stage, and then we just use
defaultfor all the routes
...,
'my_stage/my_route':{
'default:SomeObject':{
...
}
}
- [Scope]
matchhas been deprecated in favor toevalwhich supportsscope expressions - [Container]
showIndexhas been deprecated in favor toindex
- [Fork] added support to
ose scripts - [Fork] added support to
scope expressions - [Chat] Emoji bar via
config.emojis - [OML, Placeholder] added support to
OML nodesdeclared asstringorose script - [OML]
max_depthis now an optional parameter in app config - [OML, OSE]
OSEscripts are now evaluated recursively with amax_depth - [Templater]
jmakeadded support to global variables - [Popup] fix possible issue with incorrect size of childnodes at start
- [View, Html] now extend
Placeholderand automatically convertsdefaultselector in children nodes innode:OML - [Uxi]
observenow buffered, waits the end of the rendering before triggering a change. - [Uxi]
findnow acceptstype && idortype || idas parameters - [Uxi] added method
stageto lookup stage from anyUxi - [Uxi, Carousel, Iceberg, GridSwiper] Tweaks around
focusandblurover subtree - [Carousel]
emptyandrendermethods - [Tabs] added
enableTabanddisableTabmethods
- [Poly]
String.substris now polyfilled since it has been deprecated - [Popup] fix
dragflag set as function not calling it ifgroupflag is set - [Core] better handling of grouping popups
- [Uxi] better handling of
blurandfocuswhendetachorattachis called - [Carousel] link nodes to panels performance improvement
- [Net] added support to
.pakfiles (oml,jsonandtemplates) via the CLI's pack command - [Core] minor enhancements
- [Data] enhanced
samemethod to also compare non arrays or objects - [Data] added
diffmethod - [Form] added
diffflag for a form
- [Form] added
diffflag for a field - [Roulette] minor optimization
- [Popup] fix
widthheightinterpreted as size expression uponresizewhen they're not - [DynamicList] fix broken
indexmethod - [DynamicList] fix possible issue when using
keythat can be both interpreted asstringorint - [Core, Uxi] fix issue with
app.moveNode
- [Window] Drag can now be enabled/disabled at runtime with the
dragmethod - [Scroller] fix not always triggering
TOPevent - [Form] fix
pastefortextarea - [Chat] character input now
unrestrictedby default - [DynamicList] fix issue with
scopenot triggering proper item
- [Chat] fix
prependMessagesnot keeping scroll position - [Roulette] fix internal
modenot reset after changing list type (stringvsobject) - [OSE] logs invalid scripts in
console - [Tags] added
requiredflag - [DynamicList]
getSelectionnow returns aList(vsarray) ifmodeisn'tsingle
- [OSE] fix
OSEscripts in loop - [NestList] better handling of
scroller - [Carousel] fix
Uxiwith no name set not focusing - [Dots] now auto updates when
Carouselpanels are added or removed - [Theater] fix issue with
Theaternot showing
- [Deprecations] all
deprecated methodsremoved - [Calendar] added
refreshmethod - [Uxi]
cssis now set atUxilevel, all components inheriting it - [OML] now handles
OSEexpressions in selectors viadata:OMLtag - [Index] move from
text/javascripttoapplication/javascript - [Dependency]
HowlerJSupdated to v2.2.3 - [Dependency]
MomentJSupdated to v2.29.1
- [Install] better upgrade path
- [Calendar] fix selectable overwritten after swipe
- [Install] fix broken path
- [Form] added
getBindandupdateBindmethods - [OSE] fixes the use of
&&in OSE expressions - [Switch] Better handling of omitted default value with custom data
- [Carousel] Added
dragLeft,dragRightmethods anddrag_left,drag_rightconfig flags
- [MISC] Minor improvements
- [DynamicList] added
index,replaceAt,refreshAtmethods - [Tags] Fixed escaped value if
limitis 1 - [Carousel] tightened internal selectors for possible nesting issue
- [OML] nodes can now be declared as array of
OSEscripts - [OML] added
getNodeByIdmethod
- [Templater] added
jmakemethod to templatize inside JSON outside ofOSE - [App] better handling of
moveNode - [OML] better handling of
max_render_time - [Uxi] added optional parameters to be passed to
observecallback - [Popup] fixes
getBestSizeafter user resize - [Tabs] auto go to previous
indexupon remove tab - [Carousel] fixed issue with animation when removing first panel
- [Container] exposed tabs object as
.tabsand carousel as.carousel - [MISC] minor optimizations
- [Build]
Hotfixdeprecations removed early in production build
All deprecations will be removed in
1.9.0
- [Templater]
getTemplatedeprecated, useget - [Templater]
templatizedeprecated, usemake - [OML]
replaceNodeNamedeprecated, userename - [Tags]
addTag,removeTagdeprecated, useadd,remove - [Tags]
renderTagsdeprecated, userender - [Tabs]
addTab,addTabAt,removeTab,removeTabAtdeprecated, useadd,addAt,remove,removeAt - [Tabs]
selectTabAt,removeCurrentTab,selectTabdeprecated, useindex,removeCurrent,select - [Scope]
setScope,getScope,setTokendeprecated, usescope,token - [StackedTree]
setTreedeprecated, useval - [Audio, Net]
Hotfix/workaroundnew Android webview limitation of 40 (pre)loaded sounds
- [Uxi] scroller now exposed and available via
uxi.scroller - [Popup] better handling of animations
- [Loading] fix issue with
Popup - [Misc] minor enhancements
- [Switch] fix default value if no
valueis passed anddatais different than default data - [Form] fix
maskwhen end user pressesbackspaceorsupprin the middle of the string - [App] added
iOSmethod to check if the app is currently running on iOS or not - [OSE] improved parsing
- [Data] added
clipboardmethod
- [Uxi] Ability to detach/attach/move via
detach&attachmethods andapp.moveNode - [OML] Now supports passing fully formed Uxi as node in OML tree via
:Uxitag - [Placeholder] objects in
defaultplaceholders can be now be declared as string to link to OML file - [App] disable context menu by setting
disable_contexttotrue - [Calendar] select
mode
- [DynamicList]
getSelectionnow returns a single object (or false) if themodeis set tosingle
- [Touch] added
touch.isRightClickmethod - [Theme] updated default theme
- [Form] added
unbindAllmethod - [Form] enhanced compatibility with
Roulette,Switch,Tagswhen used as pure HTML form viapopulate - [List] can now compare and skip different value types
- [OSE] fix not returning clone of
omlorjsonfile - [Calendar] fix not resetting to proper date on new
val - [Data] Added
stringToLocalemethod - [Theme] default update to
1.2.0.25 - [App] Added
moveNodemethod - [Switch] Removed strict evaluation
- [Tags] Added
hide_input_on_disableflag - [DynamicList]
resetSelectioncalled upon callingval - [DynamicList] list is now cloned if no
keyset in config - [NET] fix sounds not preloading if browser tab is blurred
- Objects sensitive to scope change, when applicable. For now supported only by
DynamicList, more support incoming.
- [Placeholder] added support to
node:OMLasOMLorJSONfile viaOSEscript i.e.'node:OML':'{{oml myfile}}' - [JSON]
app.getJSONnow returns a clone - [OML]
app.getOMLnow returns a clone - [DynamicList] fix initial rendering happening in a different thread, breaking OML in complexe cases
- [DynamicList] added
selectionflag inconfig, expects array of ids to select - [DynamicList] added
reselectflag inconfig - [DynamicList] items of list are now scope sensitive via
OGX.Scopeif turned on, and scopeCHANGE - [Form] fix issue with
max - [Router] fix issue with routing data
- [Scope] new event
CHANGE - [Audio] Better
Howlcaching - [Scroller]
scrollmethod - [Scroller] better handling of button fade animation
- [Form] added mask support to autofill
- [OML]
max_render_timeis now available for override - [Window] added support to callbacks when
config.iconsare set as objects - [Theme] default theme updated to
1.2.0.15 - [Roulette] added
captureparameter to config for drag touch setup - [GridSwiper] added
captureparameter to config for drag touch setup - [Carousel] exposed
dragmethod to enable/disable drag or retrieve drag status - [Scroller] untrap move event
- [Touch] added
captureconfig parameter to trap event - [Touch] added
OGX.Touch.Clickreplacement performance forclickevent over a class with a lot of instances
- [Core] added support to AES encrypted app.json via CLI encrypt command
- [Audio] now relies on Howler.JS
- [Dependency] added Howler.JS
- [Bind] fixed binds with
remote_property - [Form]
populateforce values as string - [Form]
populateFormmarked as deprecated and removed from production builds, usepopulate - [Form]
validateFormmarked as deprecated and removed from production builds, usevalidate - [Form]
formToObjmarked as deprecated and removed from production builds, usetoObj - [Switch] fixed
changenot always triggered
- All sounds are now handled via Howler.JS and has been added as dependency.
-
app.jsonencryption (1.6.1)
- [Display] fixed
cssbindwithOSEexpression - [DynamicList] fixed
findDeletereturning List instead of item is limit is 1 - [GroupedList] fixed
updateIteminducing a group change - [GroupedList] fixed
replaceIteminducing a group change - [GroupedList] fixed
updateIteminducing a group change - [GroupedList] fixed group ordering ignored at init
- [GroupedList]
updateItemstrictis nowfalseby default - [List] fixed
findUpdatelimit
- [Display]
cssnow supportsOSEexpressions - [GroupedList] fixed mask not updating after a list's nest has changed length
- [GroupedList] fixed broken
updateItemwhen changing group - [GroupedList] fixed not properly cleared on re-render
- [Window] added
iconsmethods to set/change icons on the fly - [Geo] return
falseif directions are not found - [App] better
findWindowmethod
- [Scope] strict mode
- [Geo] remove marker on route option of
drawRoute - [DynamicList] fix insert passed as array
- [DynamicList] fix
deletewhen list is not filtered - [List]
findUpdate,findDeleteandfindReplacenow support path to property
- [Form] can now be muted via enable/disable
- [OML] return when Html exceed render time, ensures rendering
- [Touch] swipe stop propagation on move
- [Scroller] scroll stop propagation
- [Geo]
clearMapdeprecated, useclearRoute - [List] added
updatemethod - [Display] CSS conditions based on
OSEnow - [Window] disabled when
Scrollerbubbles up - [DynamicList] Fix unselect if id value is int as string, convert back to string
- [NestList] fixed preferred position not respected if index is 0
- [GroupedList] fixed
modeof DynamicList in NestList not passed when creating group - [GroupedList] fixed
replaceItem, group not removed if group becomes empty - [Router] fixed
404and403as int instead of string - [Tags] current tag can be set by passing prop val to find via
valmethod - [Tags] fixed disabled after
clear - [Tags] fixed hidden value not empty after
clear
- [Window] added
HIT_BACKevent triggered when main back icon is touched and Window hides whenheadis set toback - [DynamicList]
modemultiSELECT/UNSELECTevent now broadcasted with item (vs selection), usegetSelectionto get full selection - [OML] prevent adding to cache reused uxi via Uxi tag
- [Theme] update for Popup
- [Popup] trigger
CLICK_BUTTONeven if callback was passed - [Popup]
enableButton&disableButtonmethods - [Chat] message url encoded/decoded via flag
url_encode - [Switch] minor refactor, trap touch down
- [Scroller] changed position due to breaking on iOS
- [Popup] center prevent centering out of view of parent if parent height is bigger than screen height
- [DynamicList] now passes unselected object when triggering
UNSELECT - [OSE] Added support to callbacks and passing local, thread or temp object as parameter
- [Chat] Auto encode/decode URI components
- [Theme] Default theme update
- [NPM] Better install procedure
-
[Point] now dispatches at its element when a break point is reached
{min:MIN_WIDTH, max:MAX_WIDTH} -
[Point] Can now be instantiated without an element, takes by default the parent element in the
OMLtree.selectorbecomes its id, likeWindowandPopup, such as"#view:Views.MyView":{ ... "node:OML":{ ..., "myPoint:Point":{ "0-768":{ "default:Templates.MyTemplateA":{...} }, "768-1024":{ "default:Templates.MyTemplateB":{...} }, ... } } -
[Router] routing added support to OML subfile via
:OMLtag, such a, for an OML file namedmyOMLFileand preloaded"mystage/myroute:OML":"myOMLFile" -
[OML] added support to
OMLsubfile vianode:OMLtag with string as value, or asOSEexpression. Both produce the same result"node:OML":"myOMLFile" "node:OML":"{{oml myOMLFile}}" -
[Data] added
getBestSizemethod -
[Popup] added support to size expressions via
OGX.Data.getBestSize -
[Window] added support to size expressions via
OGX.Data.getBestSize
- [Point] OML markup width range changed from
\d+\:\d+to\d+\-\d+. In other words,0:768should now be0-768
- [OML] fix not finding objects to reuse due to hash leftover in
id - [OML] fix cycling over children of reused object via
Point - [OML] fix issues with scrolling
Uxinot properly destroyed
- [OSE] added
screenandscopekeywords - [List] added
deletePropertymethod - [Form] now returns invalid if
validateset totrueif all fields are empty even if not required - [Tags] clear suggestions when
valmethod is passed data - [Tags] Fix
undefinedtag issue withobjectmode
- [Tags]
TAG_REMOVEDevent is dispatched with object if mode isobject - [Tags] Added
SELECTevent - [Tags] Added
display_moreandclick_moreflags - [Tags] Constants values for mode changed to
object,string,ascii, constants unchanged - [Tags] Added
strictflag - [Tags] Fix issue when using
objectmode and clearing input - [Tags] Fix hidden value not stringified if
maxflag set to 1
- [Core] Added
jwtflag to config - [Scope]
setScopemethod ifjwtflag set tofalse(vssetToken)
app.scopehas been removed. Changing the scope for OGX.JS is now done by passing a JWT token and an issuer. The token is verified and the scope is inherited from the scope value of the token.
OGX.Scope.setToken(JWT_TOKEN, ISSUER);
- [OML] Fixed broken
Bind
- [Router] force defaults options when options is
null|false|undefined - [Router]
403and404fallback events if router.errors are not set - [Debug] additional debug messages
- [App] added
getOMLmethod to retrieve loaded OML files from cache - [OML] node can be passed as a OSE script to load an OML file as node
- [Tags] added display_max flag to limit the number of suggestions
- [DynamicList] fix ghosts remaining in shadow copy of list after deletion if list is filtered
- [OML] refactor blur/focus sequence, fix issues related to objects not receiving focus
- [RouletteTree] better handling of blur/focus for Roulettes
- [Bind] refactor event handler, better handling of multi properties scenarios
- [Prod] console disabled in production builds
- [Carousel] fix Uxi's created with scroll flag not receiving focus
- [Uxi] prevent focusing all nodes along the tree when focusing a top parent with a disabled node along the tree
- [Prod] fix broken prod build from minifier update
- [Debug] version now injected into debug builds
- [Bind] fix local property when bound component value is an object
- [OSE] fix oml property interpreted as oml file
- [Bind] force value as array if value is a OGX.List
- [Window] hide anim param pass true to reuse original anim
- [RouletteTree] fix disabled at start in float objects
- [RouletteTree] consider string of length 0 as null value
- [Object] fix recursive destroy cycling over already destroyed nodes
- [App] fix broken getVisiblePopups
- [Carousel] prevent calling focus/blur on non init child instance
- [Carousel] linkNodes now at construct (vs init)
- [Uxi] added regex support for id to find and cfind methods
- [Popup] ungroup reuses group icons
- [OML] fix Uxi element & listeners not reinit after Uxi move
- [Object] added uncache method
- [Carousel] better handling of nodes indexes
- [Carousel] fix node not focused after tab order swap via Container
- [Tabs] fix wrong cache order after order change from drag
- [Bind] added support to path-to-property of remote_property
- [OML] fix replaceNodeName not returning more than one node
- [OSE] added data support to template in template
- [OSE] fix loop interpretation in some rare cases
- [Templater] OSE template command now handled by Templater instead of OSE, allow data support of template in template
- [RouletteTree] fix disabled roulettes after init with disabled then enable
- [NPM] Restore missing install.js for npm
- [Carousel] no anim on first show (via config.index)
- [APP] Prevent multi UNGROUP trigger, Carousel added anim switch in showPanel
- [Switch] inverted default labels
- [OSE] better variable vs string detection
- [Uxi] faster reveal, better topIndex
- [Uxi] fix not added to cache after Popup group
- [Popup] group fix inverted tabs
- [OML] added
Uxitype node, to move to a new node an existingUxi - [Uxi]
gathernow returns anOGX.List - [Overlay] added
addGroupOverlay/removeGroupOverlaymethods - [Tabs] added
valmethod to get/set the tab by label - [Container]
tap+hold+drag-upreleases content into newPopup - [Popup] added
groupflag in config. Drag-able popup merge into singleContainerpopup if same group+parent overlap - [Popup] added
titlemethod to set/get title, exposedz - [Popup] added
iconsmethod to set/get icons - [Popup] added
OGX.Popup.GROUPandOGX.Popup.UNGROUPevent - [App] added
groupPopupsandungroupPopupmethods - [Tabs] added
indexflag in config - [Carousel] added
indexflag in config - [Container] added
indexflag in config - [Touch]
hold+dragnow also returns relative movement
- [Carousel] fixed
addNodeandswapPanelsmethod
- [CSS] base + base template updated
- [Form] populate variable path support
- [Popup] enableButtons disableButtons
- [Chat] fix templating errors
- [Uxi] fix hash not removed from id in cache
- [Container] use val of Carousel instead of setPanel
- [NET] fix sound cache on iOS, better handling of sounds
- [List] prevent rare issue where item is showing as match with no match
- [List] List fix 'in' string to array of strings comparison
- [Data] fix typo in JSON conversion
- [RouletteTree] blured + setVal prevent focus Roulette
- [DynamicList] fix mode multi list with no key unselect
- [Data] stringToVal JSON support
- [Popup] fix resize from left side with anim scale or fade
- [DynamicList] fix bind with RoulettreTree with no value
- [RouletteTree] fix enable roulette not enabled
- [RouletteTree] fix val() return no val if no action
- [Tags] supports forms via hidden input (read only)
- [Tags] hidden input as string (vs array) is max set to 1
- [Build] version bump due to broken npm publish
- [Build] fix bad 1.1.9 build
- [Popup] interactive icons
- [NET] additional messages, fix sounds not loaded on iOS
- [NET] fix path issues with Cordova
- [Controllers] fix destroy, remove obsolete el tag
- [Router] allow same element ids per stage
- [Uxi] Faster clear, additional debug messages
- [Object] additional debug messages
- [Theme] Default template update
- [DynamicList] Added OML support in findDelete, findUpdate, refresh
- [List] fix obj to obj comparison in mode 'in'
- [OML] hotfix
- [Router] added origin:Route 'self'
- [NestList] fix broken render
- [Display] fix templatize old method
- [Threater] additional debug messages
- [List] fix cache single property
- [Cache] fix sound cache
- [Audio] fix sound get/play
- [OSE] The templater engine got it's own enhanced scripting engine, named
OSEOGX Scripting Engine - [OSE] Full support of MongOGX find queries in
OML - [OML]
DynamicListitem is now accessible as variable from OML as{{&item}}or whatever is set asasflag in config ofDynamicListviaOSE - [Cache] cache-able loaded files are now stored in a new
Cacheclass. - [Templater] now uses
OSEto manipulate and output HTML based on data, allows template in template,getTemplatenow relies onCache - [Uxi] new
cfindmethod to faster globally retrieve anotherUxifrom the uxis' internalCache - [Object] now has a cache where all living Uxis are stored and cached (via a List) for faster lookup
- [CLI] the
CLIis now available on all platform via npm/node.js - [Form] field
patterncan be set either by config or in the html - [List] new method
unset, list cache now supports combined indexes - [List] filtering with
innow works with object to object - [Bind] refactored binds, new
Bindclass, now extendable - [Bind] Binds can and should be set in OML, multiple binds per property supported
- [NestList] now bindable/filterable (title only)
- [Debug] new
Debugclass, only available in dev/debug builds - [Calendar] date can be passed as string YYYY-MM-DD
- [Uxi]
containerin config is nowel - [OML] variable used in
:Dataproperties must now be set as:OSEtags, ie:'mydata:OSE':{{#wathever}}(vs old'mydata:Data':#wathever) - [OML] fetching preloaded json document now as
OSE:{{json NAME}}vs{{NAME.json}} - [Route] to capture, must now be set to
/stage/users/id:[0-9]+vs old/stage/users/[0-9]+ - [Display]
viewflag not supported anymore, useomlflag.templateandcssstill supported - [Core] use of constants as string removed in
app.json, use constant value - [Core]
preloadtag ofapp.jsonis now an object, with paths as properties, useCLI - [Window] Constant change (
ANIM_LEFT,HEAD_BACK), nowLEFT,BACK - [Popup] Constant change (
ANIM_SCALE,ANIM_FADE), nowSCALE,FADE - [HTML] templates are now stored in
html/(vshtml/templates) - [List]
getreturns an object iflimitis set to 1 - [RouletteTree]
val()now returns a single object - [Templater]
templatizenow requires the string first - [DynamicList] unified methods with
OGX.List,replacenowfindReplace,updatenowfindUpdateandgetIndexnowfindIndex
- [RouletteTree] losing touch swipe after disable then enable
- [GridSwiper] fix swipe not working in Popup
- [Calendar] fix display date not same as date when init with date, select date while swiping
- [Form] bindField added validate flag
- [Form] bindField trigger change if enter is pressed on non multiline field, supports validate
- [Templater] added global vars support in loop operation
- [Stage] added OML support in app.json
- [Stage] prevent sleeping before OML rendering done
- [Router] enforce reload flag, no adding to history if reload false on same stage and url
- [Data] moved stringToVal method from Form to Data
- [Roulette] added support to data-value attribute to set initial value
- [Switch] added support to data-value attribute to set initial value
- [Popup] Prevent anim transition while dragging
- [Popup] Remove duplicate declaration in default config
- [Popup] Simplified constant values
- [Popup] App defaults for Popup supported across app
- [Switch] Fix toggle
- [App] removePopup true as anim reuses opening anim
- [App] Removed obsolete defaults in app.json for Popup
- [Theme] Popup and Switch tweaks
- [Form] Fix masking with non char keys
- [Form] Fix autocomplete with restrict
- [Geo] Fix zipToAddress
- [Popup] Fix fade anim
- [Popup] Added scale anim
- [Theme] Popup Support for scale anim, clean up
- [Media] Resize directly on bind
- [Form] Better handling of allowed pattern flags
- [Form] Better populateForm method
- [Form] populatForm support for Switch and Roulette
- [Form] stringToVal method
- [Switch] align defaults with doc, support for populateForm
- [Roulette] support for populateForm
- [Uxi] Now handles recursive OML on create
- [Media] Fix bind, resize arg now optional
- [Form] Fix bindField paste with allow/restrict
- [Tags] Change event now broadcasts complete array of user tags
- [Form] Fix missing field property in change_cb when hit enter with bindField
- [Misc] Updated readme
- [App] Fixed template
- [Index] Added preferred template path
- [Index] Fixed CSS core filename
- [Core] Added isDarkMode and toggleTheme methods
- [Core] CSS update
- [Theme] Default theme updated, fixed bad path in index for base folder
- [Tree] setIconSize
- [Calendar] MONTH_WEEKS css not defined
- [Popup] not showing when show set to true in OML
- [App] Prevent onResize error when stage not ready yet
- [DynamicList] replace with no key set
- [DynamicList] update with key set, omitting key on call, arguments fixed
- [Scroller] triggers by default, scrollbar invisible after disable/enable
- [GroupedList] empty array issues
- [DynamicList] pass only one param (using key)
- [DynamicList] refresh method
- [DynamicList] listenBind, toggle, insert at 0
- [Window] css remove obsolete classes, overlay z-index
- [DynamicList] binds linked to blur/focus/enable/disable
- [Uxi] reveal faster and refactored
- [Misc] issues
- [Roulette] Misc issues
- [Touch] disable
- [Uxi] Faster reveal
- Welcome
- Changelog
- Structure
- Configuration
- Getting started
- CLI
- Poly
- Core
- Templating
- Routing
- Controllers
- Components
- Extra Components
- Helpers
- Styling
- Debugging