Changelog - globules-io/OGX.JS GitHub Wiki

Version 1.38

Due to internal naming change, that does not affect your code, all components have to be updated and are not backward compatible.

1.38.1

New Features

  • [Carousel] setting index can now also trigger a CHANGE event carousel.val(__n, __trigger_bool)

Bug Fixes

  • [Container] fix bad injection at build time

1.38.0

New Features

  • [App] now has a construct constructor to optionally use when extending App
  • [App] app instance also exists as constant OGX.Core
  • [Form] bindField now support a submit callback submit_cb outside of form
  • [StackedTree] added prev and reset methods
  • [StackedTree] now passes itself as additional parameter when triggering an event
  • [Tasker] new object to manage background tasks at idle via requestIdleCallback

Bug Fixes

  • [Display] fix bind with OSE script not returning template
  • [Display] fix dynamic display via displays bound to property
  • [Workers] fix worker running in interval not stopping when calling OGX.Workers.stop(worker_id);

Other Changes

  • [App] reduced memory footprint, updated internal naming

Version 1.37

This version requires OGX.CLI version 1.14.1+.

1.37.2

Bug Fixes

  • [App] fix app not hiding Splash due to app not READY when a stage has no OML, faster init
  • [CLI] 1.14.3 better index management with link unlink compress restore

1.37.1

Bug Fixes

  • [App] not triggering READY when rendering a stage with a single Popup as OML

1.37.0

New Features

  • [CLI] 1.14.1+ now encrypts, decrypts pak files and config
  • [Data] exposed encrypt and decrypt methods
  • [Net] if the config is encrypted, then Net will encrypt/decrypt .pak files if the build is packed.
  • [OSE] added support to target result property in crumb such as {{crumb fetch_id $some_property}}
  • [Popup] added shake method
  • [Popup] added keep_centered flag
  • [Popup] added support to css animations, supported are fade, slide, scale, some can be combined
  • [Popup] added MOVE and MOVED events
  • [Touch] improved auto state
  • [App] added support to css animations when changing stages, supported are swap, 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', ... });

Bug Fixes

  • [Uxi] fix floats not receiving focus when added to stage using stage.create
  • [OML] not attaching floating objects when detaching then using OSE script {'default:Uxi':instance} to attach

Components

  • [Docker] 1.3.0, added anim_show flag, defaults to fade slide
  • [FlexCells] 1.5.1, added addCell, removeCell and getCellIndex methods
  • [ContextMenu] 1.1.1, removed obsolete code

Other Changes

  • [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.3 better handling of link and unlinks

Version 1.36

1.36.3

Bug Fixes

  • [Display] fix dynamic bound OML display not returned as clone
  • [Tree] fix addItem to item with existing children, duplicated children

1.36.2

Bug Fixes

  • [Display] fix dynamic bound OML display

1.36.1

Bug Fixes

  • [OML] fix promise result not stored if fetch id already used, now overwrites result with same id
  • [View] fix using html instead of template in config, re-interpreted after Display

1.36.0

New Features

  • [Form] exposed enabledForm & disableForm internal methods, and now enables/disables binded form or desirated form by passing selector
  • [Form] toObj now skips the disabled elements if passed true as 2nd param
  • [Form] cb_change of bound form is now passed an object without disabled readonly values
  • [Tags] added lowercase flag in config to force saving input tag as lowercase
  • [Popup] maximize method can now be used to temporary turn if on/off maximize and maximize_dbc actions, by passing a boolean
  • [OML] added getNodeByProp, returns a node given a property/value pair
  • [OML] added getNodeByName, returns a node given a name
  • [List] now supports direct property/value combo in get unset update methods, auto transformed to {eq:value} filter

Bug Fixes

  • [Form] not validating a field on paste

Other Changes

  • [OML] remove obsolete internal parameters

Version 1.35

1.35.3

Bug Fixes

  • [App] fix Splash not hiding when using option bookmark: true and reloading page

Components

[FlexCells] 1.4.0 added flatten method

1.35.2

Bug Fixes

  • [Router] fix navigation hang when rendering Stage object without OML

1.35.1

Bug Fixes

  • [App] fix crash when using multiple Stage objects and start-up stage has no template.

Other Changes

  • [CSS] Splashscreen tweaks

1.35.0

New Features

  • [App] added exit option, set to true by default. Set to false and prevent reload/exit.
  • [DynamicList] select and selectIndex methods can now be passed an additional trigger parameter to trigger selection event & callback
  • [Uxi] focus tree downstream via focus(2) now skips floating objects that are not visible, previously only available with recursive focus nodes downstream via focus(1)
  • [List] with non uniform objects, skip attributes that have a different type when expecting string to string comparison

Other Changes

  • [OSE] loop optimization
  • [App] startup speed improvements
  • [App] now trigger OGX.App.READY once the default route of the focused Stage at start has been navigated to.
  • [Router] additional debug info

Bug Fixes

  • [Bind] fix crash when binding a Uxi to a Uxi and the filtering Uxi does not have a value yet

Components

  • [FlexCells] 1.3.4 auto_hide now defaults to true

Version 1.34

1.34.1

Bug Fixes

  • [OML] fix isOML trying to parse non-json strings

Components

  • [Flip] 1.1.0 added val method to get the current side

1.34.0

New Features

  • [Placeholder] placeholders can now be expressed as a 2D Array
  • [Tree] addItem can now be passed an array of items

Bug Fixes

  • [Tree] fix parent item state not updated after removing a child using deleteItem
  • [Display] fix dynamic OML via as

Deprecations

  • [Data] OGX.Data.isOML has been deprecated in favor to OGX.OML.isOML

Components

  • [Flip] 1.0.0 new Flip component to render and flip between 2 OML trees.
  • [FlexCells] 1.3.3 fix placeholder in complex OML
  • [Table] 1.2.0 added mode in config and mode method to set selection mode to row or item (prop/val combo)

Version 1.33

1.33.3

Bug Fixes

  • [Placeholder] fix offset in placeholder

Components

  • [FlexCells] 1.3.0 value of cellSize can now be expressed as an array

1.33.2

Bug Fixes

  • [Display] fix bind issue introduced with 1.33.1

Components

  • [FlexCells] 1.2.2 value of min can now be expressed as an array of mixed values i.e. [100, '40%', '250']

1.33.1

Bug Fixes

  • [Data] fix clipboard not triggering focus

Other Changes

  • [OML] result method now flushes result cache if null is passed as parameter

1.33.0

New Features

  • [DynamicList] added findMove method to move an item at the desired index

  • [Net] added download method to create and auto click a download link

  • [Uxi] added optional parameter levels to reveal method, only reveal n levels away from Uxi

  • [Display] refactoring, added support to OSE scripts in template and css binds

  • [Touch] added dblick constant for double click

  • [Tree] added openItem, closeItem and getItemByPath methods

  • [OSE] added function keyword 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
    

Bug Fixes

  • [Tree] fix selection not reset when selecting using one of the select methods
  • [Tree] fix item content not showing on first expend after updateItem

Breaking Changes

  • [OSE] function and method keywords 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 method keyword since function is new


Version 1.32

1.32.0

New Features

  • [DynamicList] added scroll method to scroll to an item of the list
  • [Net] added upload method that triggers file select process and returns the selected files
  • [Media] added crop method to resize or crop a base64 encoded image

Bug Fixes

  • [Placeholder] fix offset in placeholder when a node does not contain any default selector

Other Changes

  • [DynamicList] passes itself as parameter when calling callbacks.render
  • [Theme] Updated default theme

Components

  • [Chat] 1.3.0 added attach icon to select and send media
  • [FlexCells] 1.2.0 better handling of existing HTML when creating a FlexCells without a template

Version 1.31

1.31.2

Bug Fixes

  • [Carousel] fix replaceNode node not always rendered

1.31.1

Bug Fixes

  • [Carousel] fix replaceNode node not properly removed

1.31.0

New Features

  • [Splash] OGX now has a Splash screen with loading progress, set in app.json
  • [List] update method can now be passed a custom update function such as list.update({}, (__item) => {});
  • [List] added support to exist filtering keyword
  • [Carousel] added replaceNode method
  • [Uxi] added onResize override, called recursively down the tree when a node extending Uxi gets resized
  • [Point] added attribute data-ogx-point to its element reflecting current point, for styling purposes
  • [Point] added reference to itself via property id when triggering CHANGE event
  • [App] now resizes nodes when entering and exiting the browser fullscreen mode
  • [App] can now return the version from the manifest.json doing app.version((__version) => {...}));

Bug Fixes

  • [Uxi] fix reveal not showing appropriate Carousel panel when revealing a nested child and using a Container as parent

Other Changes

  • [Uxi] reveal performance

Components

  • [FlexCells] 1.1.2 added get/setter cellSize and event OGX.FlexCells.RESIZE on user resize
  • [Docker] 1.2.3 prevent preview from showing if Popup is already showed

Version 1.30

1.30.0

New Features

  • [Window] added title method to get/set the title
  • [DynamicList] no_selection can now be expressed as an Array of values, considering the key
  • [DynamicList] has a new select mode set, makes the list items push buttons and prevents unselection
  • [OML] exposed Core options max_render_time via getter/setter maxRenderTime and max_depth via getter/setter maxDepth
  • [Tabs] exposed config.icons via getter/setter icons
  • [Popup] new parameter config.group_icon as default icon for a group
  • [Popup] added data attribute containing the group if set, for styling purposes
  • [App] grouping popups now adds icons into tabs if popup had icon
  • [App] ungrouping popups now restores the icon from the Tab

Bug Fixes

  • [Carousel] fix children focus upon rapid change using next or prev
  • [Uxi] fix parents without arguments not returning all parents
  • [App] fix Grouping then ungrouping a Popup, title missing in the ungrouped Popup

Breaking Changes

  • [Tabs] SELECT is now triggered with a 2nd object containing tab info proper to Tabs such as index, index used to be merged to the tab object. This change only affects your code if you were catching the new index by listening to this event.

Other Changes

  • [Router] added resolve method in debug builds only
  • [Tabs] performance enhancements
  • [Container] performance enhancements

1.29.1

New Features

  • [Popup] grouping and ungrouping popups, added support for icon & icons
  • [OML] added support to inline OML with Placeholder support

Bug Fixes

  • [Tags] fix input not hidden when disabled at start

Other changes

  • [OML] debug only, prevents crash when trying to create an instance of an unknown class

1.29.0

New Features

  • [Data] Size expressions now support min & max via [min_value, max_value]
  • [Data] added isSizeExp method to test for a size expression
  • [Data] added toSizeExp method to convert a dimension and a min max to size expression
  • [Popup] Added keep_ratio flag
  • [Popup] Added support to min_width, min_height, max_width, max_height via size expressions through Resize
  • [Window] Added support to min_width, min_height, max_width, max_height via size expressions through Resize
  • [Resize] Added keep_ratio flag
  • [Resize] Added support to size expressions
  • [OML] Added getNodeClass and getNodeId methods

Version 1.28

1.28.0

New Features

  • [App] added dropNode method to hard delete a Stage or a View
  • [Popup] added support to maximize and maximize_dbc upon grouping popups
  • [Form] added submit config option for a field, triggers submit of the form on press return or enter
  • [Bind] now supports Array as value when filtering
  • [GroupedList] added addItems shortcut method to batch insert items, via addItem
  • [GroupedList] added grouping method to change the grouping parameters
  • [GroupedList] now supports inserting filtered items without rendering
  • [Roulette] added optional trigger flag on val method

Bug Fixes

  • [OSE] fix mongogx keyword not properly interpreted
  • [OSE] fix whitespace causing some issues in some rare cases
  • [List] fix group by date
  • [Popup] non resizable and centered Popup in Popup not always centering upon parent Popup user resizing
  • [GroupedList] fix issue related to group_order

Other Changes

  • [App] methods that did not return anything are now chainable
  • [Popup] icon of icons will pass the Popup as parameter in the callback if no parameter was set
  • [Uxi] generated id format change to u00000000000

Deprecations

  • [Tabs] removed deprecated editable flag

Version 1.27

1.27.1

Bug Fixes

  • [Point] fix behavior

1.27.0

This version is compatible with OGX.CLI >= 1.13.0

New Features

  • [Uxi] add/remove css classes ogx_uxi_disabled, ogx_uxi_blurred to the element based on state
  • [OML] Uxi tag now uses wake or attach automatically depending on the state of the Uxi
  • [Calendar] Default config is now 3 layouts, can be simplified with simple: true which reverts to old behavior
  • [Calendar] Added up and down arrows on multiple layouts
  • [Router] Added gather method, returns array of allowed routes given the current scope
  • [Scroller] Added placeholder support
  • [Stage] Enhanced placeholder support
  • [Placeholder] Performance improvements
  • [Resize] Added cursors on rollover resizeable borders and corners

Bug Fixes

  • [Overlay] Fix removeOverlay called twice in some cases
  • [Window] Fix close_on_click_out not working when a DynamicList, present inside the Window, has been scrolled
  • [Uxi] sleep fix scrollbar not detached if uxi is scroll

Other Changes

  • [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 no width at start

Version 1.26

1.26.1

New Features

  • [Scroller] added dir property as direction, in the data object of event SCROLL
  • [Tabs] can now be created disabled by setting enabled: false
  • [Router] new method reload as shortcut to getting the request and navigating to request.url again
  • [Point] can now be passed a target to watch within its element, instead of its own element, then min max, can be in that case, expressed in percent
  • [Point] exposed getPoint to retrieve current computed point

Bug Fixes

  • [DynamicList] fix issue with no_selection
  • [DynamicList] fix scope as string after jwt
  • [DynamicList] fix selection with HIT mode and scope as string

1.26.0

This version is compatible with OGX.CLI >= 1.13.0

New Features

  • [Uxi] initial implementation of toJSON and toOML export methods of OML tree
  • [Uxi] initial implementation of data attribute to have a top filter over all Uxi's, and output data via toOML and toJON
  • [Uxi] initial implementation of filter method
  • [Core] added debugging protection on production builds
  • [Form] added change method to trigger a change event on a bound form.
  • [Router] request has a new window property, set to the initial url on first load.
  • [DynamicList] added render config callback and onRender method
  • [OSE] added support to Templater.jmake via {{template name object}}
  • [OSE] added support to uxi.property to target a uxi with a different property than id
  • [OML] extended support to creating nodes from string
  • [OML] floats (Window, Popup..) can now be created without an id by using node:Window instead of some_id:Window
  • [Point] added support for pseudo filters instead of ids, for objects to re-use
  • [Popup] added maximize_dbc flag, if set, double click/tap on Popup head will maximize/restore if maximize is set to true
  • [Scroller] added percent method, returns scroll position in percent.

Bug Fixes

  • [Router] fix stage.url not updated on back button from a url with rewrite/capture
  • [Popup] fix matrix overriding translate3d when applying multiple transformations

Other Changes

  • [MISC] Performance improvements
  • [Popup] better handling of z

Deprecations

  • [Router] addTohist is deprecated in favor of add

Version 1.25

1.25.3

Bug Fixes

  • [Router] fix url method returning undefined

1.25.2

Other Changes

  • [Uxi] added support for non focusable components

1.25.1

Bug Fixes

  • [Uxi] fix focus upon create from another Uxi

Deprecations

  • [Ghost] has been restored for legagy support

1.25.0

This version is compatible with OGX.CLI >= 1.13.0

New Features

  • [OML] can now render a tree and disable all children down the tree if a parent is disabled upstream
  • [App] new parameter exportable to pass at instantiation, allows or prevents toOML export
  • [App] new parameter unique to prevent another instance running on another tab
  • [App] hot reload CSS and HTML files without reloading the app (dev builds only) via refresh method
  • [Workers] added run, start, stop methods control a worker that runs in an interval
  • [Router] added gate method and idle process
  • [Router] can now cache the route only once with once as value for cache expiration
  • [Calendar] added offDates method and off_dates config flag
  • [Calendar] added noSelection method and no_selection config flag
  • [Scroller] added overflow method

Breaking Changes

  • [Uxi] enable and disable within the Uxi have been replaced by onFocus and onBlur
  • [Router] oml in routes must now be specified as "oml"

Previously

 "mystage/myroute:OML" : "myOMLFile"

Now must be passed as

 "mystage/myroute" : {"oml":"myOMLFile"}

Other Changes

  • [Form] updated autocomplete behavior on Android webview
  • [Popup] width and height methods are now chainable
  • [Neutralino] default config file removed in favor of the builder command 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

Bug Fixes

  • [Popup] fix show:false at 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

Deprecations

  • [Scope] match was previously deprecated and has now been removed
  • [Scope] check was previously deprecated and has now been removed
  • [Scope] passing scope as array is now deprecated in favor to scope expressions
  • [Calendar] swipeable was previously deprecated and has now been removed
  • [Ghost] is obsolete and has now been removed

Version 1.24

1.24.5

New Feaures

  • [Tree] updateItem added optional boolean parameter to re-render or not the item's children
  • [Tree] now returns item upon calling selectItem

Bug Fixes

  • [Tree] fix issue adding items to root when no key is set

1.24.4

Bug Fixes

  • [Carousel] fix issue using oml as display with as

1.24.3

Bug Fixes

  • [Carousel] fix drag enabling on resize
  • [Touch] fix state not applied
  • [Tabs] fix issue with ungrouping popups and grouping back tab missing

New Features

  • [Bind] now triggers OGX.Bind.FILTER event from the bound component when a filtering happens, passing the property/value used

Other Changes

  • [Popup] force resizeNodes on transitionend after maximize or minimize

1.24.2

Bug Fixes

  • [OML] obsolete route_data argument not removed

1.24.1

New Features

  • [List] simple group (1 property) via get can now be passed as string

Bug Fixes

  • [DynamicList] fix refresh with limit of 1
  • [Carousel] fix drag becomes enabled after resize called from animated parent, even if was set to false
  • [List] fix issue using groupm via get

1.24.0

New Features

  • [DynamicList] select now supports paths such as select('user._id', 'whatever');
  • [Tabs] added remove method, expects property/value pair
  • [Display] template can now be set as OSE expression and is resolved per item (alternative to bind)
  • [Display] css can now be set as OSE expression and is resolved per item (alternative to bind)
  • [Window] can now be passed true as anim in show method, uses default anim
  • [Bind] added flag convert in config, true by default, auto converts element value to proper type
  • [OML] Bind can now be passed multiple properties such as {'category,type:Bind':{}}
  • [Templater] added amake method as a shortcut to make but using array of objects instead of single object

Other Changes

  • [MISC] template files that were in the /ogx folder to be used "by hand" are removed in favor of the CLI
  • [Theme] theme update

Deprecations

  • [Tabs] editable is now deprecated in favor of add and remove, removed from production builds

Bug Fixes

  • [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 keywords used as property not converted back
  • [Form] fix field restrict not applied via bindField introduced with Dynamic Forms
  • [Popup] fix wrong position on hide/scale after a drag

Version 1.23

1.23.3

Bug Fixes

  • [OML] fix issue with Point and Html

Other Changes

  • [CSS] minor changes

1.23.1

Bug Fixes

  • [Roulette] fix issue with multiple Roulette and Touch

1.23.0

New Features

  • [Router] routes can now be set a reload flag, which, if set to true, forces the stage to re-render the route/view
  • [Router] some link options can be set with data-reload data-history
  • [DynamicList] in JWT app mode, setting true for scope in DynamicList config forces JWT scope. If set to anything else than false or true, it will use that as scope instead
  • [Carousel] now can generate automatically each OML sub node with a List and a Display

Other Changes

  • [Template] now extends Uxi and Placeholder when it has children
  • [Touch] better compatibility
  • [Misc] better performance

Bug Fixes

  • [Popup] fix not restored at proper position after maximize
  • [Object] fix issue with scrollers sometimes rendered twice

Version 1.22

1.22.4

Other Changes

  • [Uxi] find accepts false as type

1.22.3

Other Changes

  • [Switch] behavior change, allow setting a value even if component is disabled
  • [Roulette] behavior change, allow setting a value even if component is disabled

1.22.2

Bug Fixes

  • [Net] fix unpack

1.22.1

Bug Fixes

  • [Iceberg] fix touch not updated to latest version
  • [Touch] fix broken Swipe
  • [Window] fix drag+hide not disabling drag
  • [Carousel] fix resizing behavior

Other Changes

  • [Misc] performance improvements

1.22.0

New Features

  • [List] unique added support to deep path
  • [Popup] now accepts percent for x and y in config
  • [Popup] ungrouped Popup will now acquire dragable and resizeable properties from parent Popup
  • [Popup] ungrouped Popup will be created at removed Tab position on screen
  • [Carousel] addNode supports additional callback parameter called instead of firing event after panel is rendered

Bug Fixes

  • [Calendar] MONTH_DAYS layout extra line of day
  • [DynamicList] fix missing unselect optional callback
  • [Tabs] fix issues with hold+drag when reordering
  • [Popup] fix issue with ungrouping popup when its Carousel panel contains OML
  • [Popup] fix grouping a simple Popup with a Container Popup when first node is scroll
  • [Popup] fix position when resizing

Other Changes

  • [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 center was set to true
  • [Popup] if x and y are set and center set to true, center is automatically set to false
  • [Popup] will not center once it's been user dragged, will not resize on screen resize if it's been user resized
  • [Misc] performance improvements

Version 1.21

1.21.1

New Features

  • [Form] field config type can be set to json and used with other components like Tags

1.21.0

New Features

  • [Popup] new methods width and height overriding config.width and config.height
  • [Calendar] new method resetSelection
  • [Calendar] new switch for method val to skip the rendering
  • [Template] is now a separate class that Views extend by default
  • [Placeholder] now supports multiple sub nodes per placeholder

Bug Fixes

  • [Popup] fix transition preventing resize
  • [CalendarEngines] proper default label ddd for MONTH_DAYS layout

Other changes

  • [install] fix fonts and themes missing if the project already had www upon install

Version 1.20

1.20.2

Bug Fixes

  • [DynamicList] fix no selection returned if no key was set

Other changes

  • [DynamicList] added key method to get/set key

1.20.1

Bug Fixes

  • [Roulette] fix missing callback placeholder onSelect method
  • [Touch] fix missing some default parameters
  • [FormInstance] fix broken default OMLs

Other changes

  • [Tree] types without display fallback onto default display
  • [FormInstance] added support to array of objects as cyclable

1.20.0

Experimental Features

  • [Workers] New object to manage and execute WebWorkers on the fly

New Features

events vs callbacks

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 in OML. You can now set your callbacks in the config when creating a Uxi, i.e., for DynamicList if you are creating at runtime:

 {
      ..., 
      "callbacks" : {
           "select" : YOUR_FUNCTION
           "unselect" : YOUR_FUNCTION
      }
 }

You can also use the new OSE method keyword to target a Uxi's method when creating from OML, such as, for a method of the view instance

 {
      ..., 
      "callbacks" : {
           "select:OSE" : "{{method the_method_of_my_view myView:View}}"
      }
 }
Dynamic Forms

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){...};
Changes
  • [OSE] new keyword method to target a Uxi's method, format {{method METHOD_NAME UXI_ID:UXI_TYPE}}
  • [DynamicList] added onSelect and onUnselect methods, and callbacks.select, callbacks.unselect in config
  • [Tabs] added onSelect, onAdd, onRemove methods, and callbacks.select, callbacks.add, callbacks.remove in config
  • [Tags] added onSelect, onAdd, onRemove methods, and callbacks.select, callbacks.add, callbacks.remove in config
  • [Iceberg] added onUp, onDown, onLeft, onRight, onRestore methods, and callbacks.up, callbacks.down, callbacks.left, callbacks.right, callbacks.restore in config
  • [Tree] added onSelect, onUnselect, onOpen, onClose, onMove methods, and callbacks.select, callbacks.unselect, callbacks.open, callbacks.close, callbacks.move in config
  • [GridSwiper] added onUp, onDown, onLeft, onRight methods, and callbacks.up, callbacks.down, callbacks.left, callbacks.right in config
  • [NestList] added onOpen, onClose method, and callbacks.open, callbacks.close in config
  • [Calendar] added onSelect, onUnselect method, and callbacks.select, callbacks.unselect in config
  • [Carousel] added onChange method, and callbacks.change in config
  • [Dots] added onSelect method, and callbacks.select in config
  • [Roulette] added onChange method, and callbacks.change in config
  • [Switch] added onChange method, and callbacks.change in config
  • [Form] new FormInstance subclass created from fromObject method

Other Changes

  • [Calendar] format of built-in layouts can 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

Breaking Changes

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":{}}
}

Bug Fixes

  • [Touch] fix issue with Swipe and Carousel
  • [App] fix issue if App is created without config object
  • [Tree] fix issue when creating an empty Tree
  • [Tree] fix issue with selection and icons
  • [Tree] fix issue with Scroller on new tree
  • [Tree] icons now handled via css

Other changes

  • [Theme] default theme updated to version 1.2.61

Version 1.19

1.19.1

New Features

  • [Touch] Move and Hold + Move added additional attributes x, y, distX, distY, dirX, dirY in callback object
  • [List] added support to deep path sorting
  • [List] added support to deep path updating

1.19.0

Dependency revision

Starting at version 1.19, ajax is removed from the custom jQuery build. OGX.JS now uses fetch all across the framework. If you wish to continue using jQuery's ajax methods, feel free to overwrite the jQuery build in www/js/lib/jquery with 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 jQuery custom build 3.6.1
  • [Lib] moment.js updated to 2.29.2

Breaking changes

  • [Touch] does not add by default an instance of Drag, Move and Swipe to components using Touch by default, they now must be added on demand.

New features

  • [Touch] added Move method to callback the distance between the start position and current mouse/touch position
  • [Touch] added state optional parameter with values auto or manual
  • [Touch] added add, get and remove to allow multiple touches of each kind
  • [Uxi] added observeOnce as proxy to observe, turned off automatically once observation completes
  • [DynamicList] added ogx_dynamic_list_drag CSS class, applied when an item of the list is being reordered
  • [Calendar] added layouts method to change the layout configuration on the fly

Bug fixes

  • [DynamicList] fix broken reorder

Other changes

  • [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

Version 1.18

1.18.1

Bug fixes

  • [Window] prevent drag when hide has been called
  • [StackedTree] fix DynamicList overriding back button
  • [Scope] fix eval deprecation in production build
  • [OML] fix controllers rendering priority

1.18.0

New Features

  • [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 supports OML rendering and Display
  • [DynamicList] added support to whitespace in ids
  • [DynamicList] added events SELECT_FILTERED and SELECT_UNFILTERED
  • [DynamicList] getSelection now returns filtered selection if the list has been filtered post selection

Bug fixes

  • [OSE] better data support in recursive template in template

Breaking changes

  • [Tree] setIconSize has been removed, now handled via CSS

Version 1.17

1.17.1

New Features

  • [Router] added expire method to clear the cache for a given url

1.17.0

New Features

  • [DynamicList] added no_selection flag and noSelection method
  • [Color] rgbToHex, rgbToHsl nd hslToRgb now accept any variation of arguments (string, array, object and arguments)
  • [Calendar] added BROWSE event, triggered when user navigates with top arrow buttons
  • [Form] bindField allowed flag now defaults to /[0-9a-zA-Z‘’'"à-úÀ-Ú\-\!\.\?#@$\:\(\)\/_,;%' ]/
  • [OSE] added additional debugging messages if the script fails
  • [Uxi] Added optional flag name, and gatherByName method
  • [Router] added OGX.Router.GOTO event, triggered upon internal link
  • [Router] Added cache feature, 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 Function tag, which calls a user function that returns a Promise. 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 success or error callbacks by using OSE

 "data:OSE" : "{{result my_fnc}}"

Bug Fixes

  • [Router] fix issues with capturing variable in dynamic routes with multiple dynamic routes
  • [Form] fix issue with bindField over textarea with new lines and restrict

Deprecations

  • [Uxi] render has been deprecated with no replacement
  • [DynamicList] clear has been deprecated and replaced with wipe
  • [Tags] clear has been deprecated and replaced with wipe
  • [Chat] clear has been deprecated and replaced with wipe

Version 1.16

1.16.0

Bug Fixes

  • [DynamicList] fix css not updated when using findReplace or replaceAt methods while using binds
  • [DynamicList] fix findUpdate not keeping selection css class
  • [Router] Fix issue with bookmark option when using multiple stages
  • [Router] fix issue with navigation history with empty views

New Features

  • [Overlay] close_on_click flag can now be passed a callback
  • [Router] Added request method
  • [Router] Added jail config flag
  • [Router] Internal a links are now supported, format /stage/route
  • [Form] change_cb callback now buffered, preventing multiple events when autofilling multiple fields at once
  • [Uxi] added parents method
  • [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();
    

Version 1.15

1.15.1

  • [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

1.15.0

  • [DynamicList] better handling of selection at start-up
  • [Calendar] added browse flag, swipeable flag deprecated in favor to swipe
  • [Router] fix issue with dynamic routes and :OML links
  • [Popup] added maximize and normalize methods
  • [Form] added optional map parameter to populate
  • [Form] added optional params parameter to bindForm
  • [Uxi] added shortcuts on & off into prototype over el

Any object extending the Uxi class 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, ...);    

Deprecations

  • [Calendar] swipeable has been marked as deprecated in favor to swipe

Version 1.14

1.14.0

  • [DynamicList] select now supports array if selection mode is multi
  • [List] in and nin added support to number to string|array|object|number comparison
  • [Router] added eval option 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 prev and next method

Deprecations

  • [Scope] check has been marked as deprecated in favor to eval
  • [Scope] match has been marked as deprecated in favor to eval

All scoping must be declared as scope expression vs previously array. This change impacts Router and DynamicList. Previous route scope

 {"mystage/myroute":{
      ...
      scope : ['public', 'user'] 
 }

New format

 {"mystage/myroute":{
      ...
      scope : 'public user'
 }

Version 1.13

1.13.0

  • [Stage] template is now script interpreted
  • [Data] added eval method
  • [OSE] fix issues with some OSE scripts not evaluated
  • [Form] removed obsolete polyfill used for validate
  • [Form] fix change not triggered when backspace or delete on a field
  • [Uxi] reveal can now be passed an animation constant, only applicable when targeting a Popup or Window
  • [Uxi] gather can now lookup subclasses of Views, Controllers and Stage, such as Views.Myiew vs View

Version 1.12

1.12.0

  • [DynamicList] fix mode live change not allowing selection
  • [Switch] fix toggle not triggering update for Form when 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 default for 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] Controller are now constructed last (in the entire tree)

Breaking Changes

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 default for all the routes

 ...,
 'my_stage/my_route':{
       'default:SomeObject':{
            ...
       }
  }

Version 1.11

Deprecations

  • [Scope] match has been deprecated in favor to eval which supports scope expressions
  • [Container] showIndex has been deprecated in favor to index

1.11.0

  • [Fork] added support to ose scripts
  • [Fork] added support to scope expressions
  • [Chat] Emoji bar via config.emojis
  • [OML, Placeholder] added support to OML nodes declared as string or ose script
  • [OML] max_depth is now an optional parameter in app config
  • [OML, OSE] OSE scripts are now evaluated recursively with a max_depth
  • [Templater] jmake added support to global variables
  • [Popup] fix possible issue with incorrect size of childnodes at start
  • [View, Html] now extend Placeholder and automatically converts default selector in children nodes in node:OML
  • [Uxi] observe now buffered, waits the end of the rendering before triggering a change.
  • [Uxi] find now accepts type && id or type || id as parameters
  • [Uxi] added method stage to lookup stage from any Uxi
  • [Uxi, Carousel, Iceberg, GridSwiper] Tweaks around focus and blur over subtree
  • [Carousel] empty and render methods
  • [Tabs] added enableTab and disableTab methods

Version 1.10

1.10.1

  • [Poly] String.substr is now polyfilled since it has been deprecated
  • [Popup] fix drag flag set as function not calling it if group flag is set
  • [Core] better handling of grouping popups
  • [Uxi] better handling of blur and focus when detach or attach is called
  • [Carousel] link nodes to panels performance improvement

1.10.0

  • [Net] added support to .pak files (oml, json and templates) via the CLI's pack command
  • [Core] minor enhancements
  • [Data] enhanced same method to also compare non arrays or objects
  • [Data] added diff method
  • [Form] added diff flag for a form

Version 1.9

1.9.4

  • [Form] added diff flag for a field
  • [Roulette] minor optimization
  • [Popup] fix width height interpreted as size expression upon resize when they're not
  • [DynamicList] fix broken index method
  • [DynamicList] fix possible issue when using key that can be both interpreted as string or int
  • [Core, Uxi] fix issue with app.moveNode

1.9.3

  • [Window] Drag can now be enabled/disabled at runtime with the drag method
  • [Scroller] fix not always triggering TOP event
  • [Form] fix paste for textarea
  • [Chat] character input now unrestricted by default
  • [DynamicList] fix issue with scope not triggering proper item

1.9.2

  • [Chat] fix prependMessages not keeping scroll position
  • [Roulette] fix internal mode not reset after changing list type (string vs object)
  • [OSE] logs invalid scripts in console
  • [Tags] added required flag
  • [DynamicList] getSelection now returns a List (vs array) if mode isn't single

1.9.1

  • [OSE] fix OSE scripts in loop
  • [NestList] better handling of scroller
  • [Carousel] fix Uxi with no name set not focusing
  • [Dots] now auto updates when Carousel panels are added or removed
  • [Theater] fix issue with Theater not showing

1.9.0

  • [Deprecations] all deprecated methods removed
  • [Calendar] added refresh method
  • [Uxi] css is now set at Uxi level, all components inheriting it
  • [OML] now handles OSE expressions in selectors via data:OML tag
  • [Index] move from text/javascript to application/javascript
  • [Dependency] HowlerJS updated to v2.2.3
  • [Dependency] MomentJS updated to v2.29.1

Version 1.8

1.8.6 - 1.8.8

  • [Install] better upgrade path

1.8.5

  • [Calendar] fix selectable overwritten after swipe
  • [Install] fix broken path

1.8.4

  • [Form] added getBind and updateBind methods
  • [OSE] fixes the use of && in OSE expressions
  • [Switch] Better handling of omitted default value with custom data
  • [Carousel] Added dragLeft, dragRight methods and drag_left, drag_right config flags

1.8.3

  • [MISC] Minor improvements
  • [DynamicList] added index, replaceAt, refreshAt methods
  • [Tags] Fixed escaped value if limit is 1
  • [Carousel] tightened internal selectors for possible nesting issue
  • [OML] nodes can now be declared as array of OSE scripts
  • [OML] added getNodeById method

1.8.2

  • [Templater] added jmake method to templatize inside JSON outside of OSE
  • [App] better handling of moveNode
  • [OML] better handling of max_render_time
  • [Uxi] added optional parameters to be passed to observe callback
  • [Popup] fixes getBestSize after user resize
  • [Tabs] auto go to previous index upon remove tab
  • [Carousel] fixed issue with animation when removing first panel
  • [Container] exposed tabs object as .tabs and carousel as .carousel
  • [MISC] minor optimizations

1.8.1

  • [Build] Hotfix deprecations removed early in production build

Deprecations

All deprecations will be removed in 1.9.0

  • [Templater] getTemplate deprecated, use get
  • [Templater] templatize deprecated, use make
  • [OML] replaceNodeName deprecated, use rename
  • [Tags] addTag , removeTag deprecated, use add , remove
  • [Tags] renderTags deprecated, use render
  • [Tabs] addTab , addTabAt , removeTab , removeTabAt deprecated, use add , addAt, remove , removeAt
  • [Tabs] selectTabAt, removeCurrentTab , selectTab deprecated, use index , removeCurrent , select
  • [Scope] setScope, getScope, setToken deprecated, use scope, token
  • [StackedTree] setTree deprecated, use val
  • [Audio, Net] Hotfix/workaround new Android webview limitation of 40 (pre)loaded sounds

1.8.0

  • [Uxi] scroller now exposed and available via uxi.scroller
  • [Popup] better handling of animations
  • [Loading] fix issue with Popup
  • [Misc] minor enhancements

Version 1.7

1.7.6

  • [Switch] fix default value if no value is passed and data is different than default data
  • [Form] fix mask when end user presses backspace or suppr in the middle of the string
  • [App] added iOS method to check if the app is currently running on iOS or not
  • [OSE] improved parsing
  • [Data] added clipboard method

1.7.5

New Features

  • [Uxi] Ability to detach/attach/move via detach & attach methods and app.moveNode
  • [OML] Now supports passing fully formed Uxi as node in OML tree via :Uxi tag
  • [Placeholder] objects in default placeholders can be now be declared as string to link to OML file
  • [App] disable context menu by setting disable_context to true
  • [Calendar] select mode

Breaking Changes

  • [DynamicList] getSelection now returns a single object (or false) if the mode is set to single

Other Changes

  • [Touch] added touch.isRightClick method
  • [Theme] updated default theme
  • [Form] added unbindAll method
  • [Form] enhanced compatibility with Roulette, Switch, Tags when used as pure HTML form via populate
  • [List] can now compare and skip different value types
  • [OSE] fix not returning clone of oml or json file
  • [Calendar] fix not resetting to proper date on new val
  • [Data] Added stringToLocale method
  • [Theme] default update to 1.2.0.25
  • [App] Added moveNode method
  • [Switch] Removed strict evaluation
  • [Tags] Added hide_input_on_disable flag
  • [DynamicList] resetSelection called upon calling val
  • [DynamicList] list is now cloned if no key set in config
  • [NET] fix sounds not preloading if browser tab is blurred

New Features

  • Objects sensitive to scope change, when applicable. For now supported only by DynamicList, more support incoming.

1.7.0

  • [Placeholder] added support to node:OML as OML or JSON file via OSE script i.e. 'node:OML':'{{oml myfile}}'
  • [JSON] app.getJSON now returns a clone
  • [OML] app.getOML now returns a clone
  • [DynamicList] fix initial rendering happening in a different thread, breaking OML in complexe cases
  • [DynamicList] added selection flag in config, expects array of ids to select
  • [DynamicList] added reselect flag in config
  • [DynamicList] items of list are now scope sensitive via OGX.Scope if turned on, and scope CHANGE
  • [Form] fix issue with max
  • [Router] fix issue with routing data
  • [Scope] new event CHANGE
  • [Audio] Better Howl caching
  • [Scroller] scroll method
  • [Scroller] better handling of button fade animation

Version 1.6

1.6.2

  • [Form] added mask support to autofill
  • [OML] max_render_time is now available for override
  • [Window] added support to callbacks when config.icons are set as objects
  • [Theme] default theme updated to 1.2.0.15
  • [Roulette] added capture parameter to config for drag touch setup
  • [GridSwiper] added capture parameter to config for drag touch setup
  • [Carousel] exposed drag method to enable/disable drag or retrieve drag status
  • [Scroller] untrap move event
  • [Touch] added capture config parameter to trap event
  • [Touch] added OGX.Touch.Click replacement performance for click event over a class with a lot of instances

1.6.1

  • [Core] added support to AES encrypted app.json via CLI encrypt command

1.6.0

  • [Audio] now relies on Howler.JS
  • [Dependency] added Howler.JS
  • [Bind] fixed binds with remote_property
  • [Form] populate force values as string
  • [Form] populateForm marked as deprecated and removed from production builds, use populate
  • [Form] validateForm marked as deprecated and removed from production builds, use validate
  • [Form] formToObj marked as deprecated and removed from production builds, use toObj
  • [Switch] fixed change not always triggered

New Features

  • All sounds are now handled via Howler.JS and has been added as dependency.
  • app.json encryption (1.6.1)

Version 1.5

1.5.9

  • [Display] fixed css bind with OSE expression
  • [DynamicList] fixed findDelete returning List instead of item is limit is 1
  • [GroupedList] fixed updateItem inducing a group change
  • [GroupedList] fixed replaceItem inducing a group change
  • [GroupedList] fixed updateItem inducing a group change
  • [GroupedList] fixed group ordering ignored at init
  • [GroupedList] updateItem strict is now false by default
  • [List] fixed findUpdate limit

1.5.8

  • [Display] css now supports OSE expressions
  • [GroupedList] fixed mask not updating after a list's nest has changed length
  • [GroupedList] fixed broken updateItem when changing group
  • [GroupedList] fixed not properly cleared on re-render
  • [Window] added icons methods to set/change icons on the fly
  • [Geo] return false if directions are not found
  • [App] better findWindow method

1.5.7

  • [Scope] strict mode
  • [Geo] remove marker on route option of drawRoute
  • [DynamicList] fix insert passed as array
  • [DynamicList] fix delete when list is not filtered
  • [List] findUpdate, findDelete and findReplace now support path to property

1.5.6

  • [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] clearMap deprecated, use clearRoute
  • [List] added update method
  • [Display] CSS conditions based on OSE now
  • [Window] disabled when Scroller bubbles up
  • [DynamicList] Fix unselect if id value is int as string, convert back to string

1.5.5

  • [NestList] fixed preferred position not respected if index is 0
  • [GroupedList] fixed mode of DynamicList in NestList not passed when creating group
  • [GroupedList] fixed replaceItem, group not removed if group becomes empty
  • [Router] fixed 404 and 403 as int instead of string
  • [Tags] current tag can be set by passing prop val to find via val method
  • [Tags] fixed disabled after clear
  • [Tags] fixed hidden value not empty after clear

1.5.4

  • [Window] added HIT_BACK event triggered when main back icon is touched and Window hides when head is set to back
  • [DynamicList] mode multi SELECT/UNSELECT event now broadcasted with item (vs selection), use getSelection to get full selection
  • [OML] prevent adding to cache reused uxi via Uxi tag
  • [Theme] update for Popup
  • [Popup] trigger CLICK_BUTTON even if callback was passed
  • [Popup] enableButton & disableButton methods
  • [Chat] message url encoded/decoded via flag url_encode
  • [Switch] minor refactor, trap touch down

1.5.3

  • [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

1.5.2

  • [Theme] Default theme update

1.5.1

  • [NPM] Better install procedure

New Features

  • [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 OML tree. selector becomes its id, like Window and Popup, 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 :OML tag, such a, for an OML file named myOMLFile and preloaded

    "mystage/myroute:OML":"myOMLFile"
    
  • [OML] added support to OML subfile via node:OML tag with string as value, or as OSE expression. Both produce the same result

     "node:OML":"myOMLFile"
     "node:OML":"{{oml myOMLFile}}"
    
  • [Data] added getBestSize method

  • [Popup] added support to size expressions via OGX.Data.getBestSize

  • [Window] added support to size expressions via OGX.Data.getBestSize

Breaking Changes

  • [Point] OML markup width range changed from \d+\:\d+ to \d+\-\d+. In other words, 0:768 should now be 0-768

Bug Fixes

  • [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 Uxi not properly destroyed

Version 1.4

1.4.3

  • [OSE] added screen and scope keywords
  • [List] added deleteProperty method
  • [Form] now returns invalid if validate set to true if all fields are empty even if not required
  • [Tags] clear suggestions when val method is passed data
  • [Tags] Fix undefined tag issue with object mode

1.4.2

  • [Tags] TAG_REMOVED event is dispatched with object if mode is object
  • [Tags] Added SELECT event
  • [Tags] Added display_more and click_more flags
  • [Tags] Constants values for mode changed to object, string, ascii, constants unchanged
  • [Tags] Added strict flag
  • [Tags] Fix issue when using object mode and clearing input
  • [Tags] Fix hidden value not stringified if max flag set to 1

1.4.1

  • [Core] Added jwt flag to config
  • [Scope] setScope method if jwt flag set to false (vs setToken)

1.4.0

News Features & Breaking Changes

app.scope has 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);

Bug Fixes

  • [OML] Fixed broken Bind

Version 1.3

1.3.0

New Features

  • [Router] force defaults options when options is null|false|undefined
  • [Router] 403 and 404 fallback events if router.errors are not set
  • [Debug] additional debug messages
  • [App] added getOML method to retrieve loaded OML files from cache
  • [OML] node can be passed as a OSE script to load an OML file as node

Version 1.2

1.2.10

  • [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

1.2.9

  • [OML] refactor blur/focus sequence, fix issues related to objects not receiving focus
  • [RouletteTree] better handling of blur/focus for Roulettes

1.2.8

  • [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

1.2.7

  • [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

1.2.6

  • [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

1.2.5

  • [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

1.2.4

  • [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

1.2.3

  • [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

1.2.2

  • [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

1.2.1

  • [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

1.2.0

New Features

  • [OML] added Uxi type node, to move to a new node an existing Uxi
  • [Uxi] gather now returns an OGX.List
  • [Overlay] added addGroupOverlay/removeGroupOverlay methods
  • [Tabs] added val method to get/set the tab by label
  • [Container] tap+hold+drag-up releases content into new Popup
  • [Popup] added group flag in config. Drag-able popup merge into single Container popup if same group+parent overlap
  • [Popup] added title method to set/get title, exposed z
  • [Popup] added icons method to set/get icons
  • [Popup] added OGX.Popup.GROUP and OGX.Popup.UNGROUP event
  • [App] added groupPopups and ungroupPopup methods
  • [Tabs] added index flag in config
  • [Carousel] added index flag in config
  • [Container] added index flag in config
  • [Touch] hold+drag now also returns relative movement

Bug Fixes

  • [Carousel] fixed addNode and swapPanels method

Misc

  • [CSS] base + base template updated

Version 1.1

1.1.16

  • [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

1.1.14

  • [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

1.1.13

  • [Data] stringToVal JSON support
  • [Popup] fix resize from left side with anim scale or fade
  • [DynamicList] fix bind with RoulettreTree with no value

1.1.12

  • [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

1.1.11

  • [Build] version bump due to broken npm publish

1.1.10

  • [Build] fix bad 1.1.9 build

1.1.9

  • [Popup] interactive icons

1.1.8

  • [NET] additional messages, fix sounds not loaded on iOS

1.1.7

  • [NET] fix path issues with Cordova

1.1.6

  • [Controllers] fix destroy, remove obsolete el tag
  • [Router] allow same element ids per stage

1.1.5

  • [Uxi] Faster clear, additional debug messages
  • [Object] additional debug messages
  • [Theme] Default template update

1.1.4

  • [DynamicList] Added OML support in findDelete, findUpdate, refresh

1.1.3

  • [List] fix obj to obj comparison in mode 'in'

1.1.2

  • [OML] hotfix

1.1.1

  • [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

1.1.0

New Features

  • [OSE] The templater engine got it's own enhanced scripting engine, named OSE OGX Scripting Engine
  • [OSE] Full support of MongOGX find queries in OML
  • [OML] DynamicList item is now accessible as variable from OML as {{&item}} or whatever is set as as flag in config of DynamicList via OSE
  • [Cache] cache-able loaded files are now stored in a new Cache class.
  • [Templater] now uses OSE to manipulate and output HTML based on data, allows template in template, getTemplate now relies on Cache
  • [Uxi] new cfind method to faster globally retrieve another Uxi from the uxis' internal Cache
  • [Object] now has a cache where all living Uxis are stored and cached (via a List) for faster lookup
  • [CLI] the CLI is now available on all platform via npm/node.js
  • [Form] field pattern can be set either by config or in the html
  • [List] new method unset, list cache now supports combined indexes
  • [List] filtering with in now works with object to object
  • [Bind] refactored binds, new Bind class, now extendable
  • [Bind] Binds can and should be set in OML, multiple binds per property supported
  • [NestList] now bindable/filterable (title only)
  • [Debug] new Debug class, only available in dev/debug builds
  • [Calendar] date can be passed as string YYYY-MM-DD

Breaking Changes

  • [Uxi] container in config is now el
  • [OML] variable used in :Data properties must now be set as :OSE tags, 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] view flag not supported anymore, use oml flag. template and css still supported
  • [Core] use of constants as string removed in app.json, use constant value
  • [Core] preload tag of app.json is now an object, with paths as properties, use CLI
  • [Window] Constant change (ANIM_LEFT, HEAD_BACK), now LEFT, BACK
  • [Popup] Constant change (ANIM_SCALE, ANIM_FADE), now SCALE, FADE
  • [HTML] templates are now stored in html/ (vs html/templates)
  • [List] get returns an object if limit is set to 1
  • [RouletteTree] val() now returns a single object
  • [Templater] templatize now requires the string first
  • [DynamicList] unified methods with OGX.List, replace now findReplace, update now findUpdate and getIndex now findIndex

Bug fixes

  • [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

Version 1.0

1.0.14

  • [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

1.0.13

  • [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

1.0.12

  • [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

1.0.11

  • [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

1.0.10

  • [Uxi] Now handles recursive OML on create
  • [Media] Fix bind, resize arg now optional
  • [Form] Fix bindField paste with allow/restrict

1.0.9

  • [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

1.0.8

  • [App] Fixed template
  • [Index] Added preferred template path
  • [Index] Fixed CSS core filename

1.0.7

  • [Core] Added isDarkMode and toggleTheme methods
  • [Core] CSS update
  • [Theme] Default theme updated, fixed bad path in index for base folder

1.0.6

  • [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

1.0.5

  • [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

1.0.4

  • [GroupedList] empty array issues
  • [DynamicList] pass only one param (using key)
  • [DynamicList] refresh method

1.0.3

  • [DynamicList] listenBind, toggle, insert at 0
  • [Window] css remove obsolete classes, overlay z-index

1.0.2

  • [DynamicList] binds linked to blur/focus/enable/disable
  • [Uxi] reveal faster and refactored
  • [Misc] issues

1.0.1

  • [Roulette] Misc issues
  • [Touch] disable
  • [Uxi] Faster reveal