All Versions
104
Latest Version
Avg Release Cycle
58 days
Latest Release
-

Changelog History
Page 9

  • v0.5.5 Changes

    • ๐Ÿ’ฅ Breaking changes:
      • Removed debug option from ractive.observe() (#970)
    • ๐Ÿ›  Fixes for #713, #941, #942, #943, #945, #950, #951, #952, #953, #960, #965, #967 and #974
  • v0.5.2 Changes

    • No actual changes, just wrestling with npm and bower!
  • v0.5.1 Changes

    • ๐Ÿ›  Fix for #939
  • v0.5.0 Changes

    • Code organisation

      • Codebase is now structured as ES6 modules, which can use new ES6 features such as arrow functions
      • Simpler, more efficient runloop
      • Encapsulated viewmodel logic
    • ๐Ÿ’ฅ Breaking changes:

      • errors in observers and evaluators are no longer caught
      • Nodes are detached as soon as any outro transitions are complete (if any), rather than when all transitions are complete
      • The options argument of init: function(options) is now strictly what was passed into the constructor, use this.option to access configured value.
      • data with properties on prototype are no longer cloned when accessed. data from "baseClass" is no longer deconstructed and copied.
      • Use of a <script> tag for specifying inline templates is not enforced.
      • Options specified on component constructors will not be picked up as defaults. debug now on defaults, not constructor
      • Select bindings follow general browser rules for choosing options. Disabled options have no value.
      • Input values are not coerced to numbers, unless input type is number or range
      • {{this.foo}} in templates now means same thing as {{.foo}}
      • Rendering to an element already render by Ractive causes that element to be torn down (unless appending).
      • Illegal javascript no longer allowed by parser in expressions and will throw
      • Parsed template format changed to specify template spec version.
      • Arrays being observed via array.* no longer send item.length event on mutation changes
      • Reserved event names in templates ('change', 'reset', 'teardown', 'update') will cause the parser to throw an error
      • {{else}} support in both handlebars-style blocks and regular mustache conditional blocks, but is now a restricted keyword that cannot be used as a regular reference
      • Child components are created in data order
      • Keypath expressions resolve left to right and follow same logic as regular mustache references (bind to root, not context, if left-most part is unresolved).
      • Improved attribute parsing and handling:
        • character escaping and whitespace handling in attribute directive arguments
        • boolean and empty string attributes
    • Other new features

      • Better errors and debugging info
        • Duplicate, repetitive console.warn messages are not repeated.
        • Improved error handling and line numbers for parsing
        • Warn on bad two-way radio bindings
      • Support for handlebars style blocks: #if, #with, #each, #unless and corresponding @index and @key
      • Array mutation methods are now also available as methods on Ractive.prototype - e.g. ractive.push('items', newItem). The return value is a Promise that fulfils when any transitions complete
      • Support for static mustache delimiters that do one-time binding
      • {{./foo}} added as alias for {{.foo}}
      • Leading ~/ keypath specifier, eg {{~/foo}}, for accessing root data context in keypaths
      • Observers with wildcards now receive actual wildcard values as additional arguments
      • The following plugins: adaptors, components, decorators, easing, events, interpolators, partials, transitions, when used in components will be looked up in the view hierarchy if they cannot be found in the inheritance chain.
      • ractive.set supports pattern observers, eg ractive.set('foo.*.bar')
      • Support for specifying multiple events in single on, eg ractive.on( 'foo bar baz', handleFooBarOrBaz )
      • Unnecessary leading and trailing whitespace in templates is removed
      • Better support for post-init render/insert
      • Computed properties can be updated with ractive.update(property)
      • updateModel returns a Promise
      • Media queries work correctly in encapsulated component CSS
      • Component.extend is writable (can be extended)
      • append option can now take a target element, behavior same as ractive.insert
      • All configuration options, except plugin registries, can be specified on Ractive.defaults and Component.defaults
      • Any configuration option except registries and computed properties can be specfied using a function that returns a value
      • ractive.reset() will re-render if template or partial specified by a function changes its value
      • New ractive.resetTemplate() method that re-renders with new template
      • Value of key/value pair for partials and components can be specified using a function
      • ractive.off() returns instance making it chainable
      • Improved support for extending Components with Components
    • ๐Ÿ› Bug fixes:

      • Component names not restricted by array method name conflicts
      • Ensure all change operations update DOM synchronously
      • Unrooted and unresolved keypath expression work correctly
      • Uppercase tag names bind correctly
      • Falsey values in directives (0,'', false, etc)
      • IE8 fixes and working test suite
      • Keypath expressions in binding attributes
      • Edge case for keypath expression that include regular expression
      • Input blur correctly updates model AND view
      • Component parameters data correctly sync with parents
      • Correct components.json format
      • Variety of edge cases with rebindings caused by array mutations
      • Partials aware of parent context
      • foreignObject correctly defaults to HTML namespace
      • Edge cases with bind, rebind, unrender in Triples
      • Sections (blocks) in attributes
      • Remove unncessary evaluator function calls
      • Incorrect "Computed properties without setters are read-only in the current version" error
      • Handle emulated touch events for nodes that are defined on window in the browser
      • Never initialiased decorators being torndown
      • File inputs without mustache refs are not bound
      • Pattern observers with empty array
      • Callbacks that throw cause promise reject
      • Clean-up input and option binding edge cases
      • Using this._super safe if baseclass or it's method doesn't actually exist.
      • Leading . on keypaths do not throw errors and are removed for purposes of processing
      • Post-blur validation via observer works correctly
      • Radio buttons with static attributes work correctly
      • DOCTYPE declarations are uppercased
      • Transitioned elements not detaching if window is not active
      • CSS transitions apply correctly
      • wildcard * can be used as first part of observer keypath
  • v0.4.0 Changes

    • ๐Ÿ’ฅ BREAKING: Filenames are now lowercase. May affect you if you use Browserify etc.
    • ๐Ÿ’ฅ BREAKING: set(), update(), teardown(), animate(), merge(), add(), subtract(), and toggle() methods return a Promise that fulfils asynchronously when any resulting transitions have completed
    • BREAKING: Elements are detached when all transitions are complete for a given instance, not just transitions on descendant nodes
    • ๐Ÿ’ฅ BREAKING: Default options are placed on Ractive.defaults (and Component.defaults, where Component = Ractive.extend(...))
    • ๐Ÿ’ฅ BREAKING: The adaptors option is now adapt. It can be a string rather than an array if you're only using one adaptor
    • Reactive computed properties
    • Two-way binding works with 'keypath expressions' such as {{foo[bar]}}
    • ๐Ÿ‘Œ Support for single-file component imports via loader plugins such as http://ractivejs.github.io/ractive-load/
    • ๐ŸŽ A global runloop handles change propagation and other batchable operations, resulting in performance improvements across the board
    • Promises are used internally, and exposed as Ractive.Promise (Promises/A+ compliant, a la ES6 Promises)
    • ๐Ÿ’… Components can have encapsulated styles, passed in as the css option (disable with noCssTransform: true)
    • ractive.reset() method allows you to replace an instance's data object
    • โšก๏ธ Decorators are updated when their arguments change (with specified update() method if possible, otherwise by tearing down and reinitialising)
    • Inline components inherit surrounding data context, unless defined with isolated: true
    • Transitions will use JavaScript timers if CSS transitions are unavailable
    • A global variable (window.Ractive) is always exported, but Ractive.noConflict() is provided to prevent clobbering existing Ractive variable
    • Inline component init() methods are only called once the component has entered the DOM
    • Any section can be closed with {{/...}}, where ... can be any string other than the closing delimiter
    • ๐Ÿ–จ Evaluators that throw exceptions will print an error to the console in debug mode
    • ractive.observe(callback) - i.e. with no keypath - observes everything
    • ractive.observe('foo bar baz', callback) will observe all three keypaths (passed to callback as third argument)
    • ๐Ÿ‘ Better whitespace preservation and indenting when using ractive.toHTML()
    • ๐Ÿšš Calling ractive.off() with no arguments removes all event listeners
    • Triples work inside SVG elements
    • <option>{{foo}}</option> works the same as <option value='{{foo}}'>{{foo}}</option>
    • More robust data/event propagation between components
    • More robust magic mode
    • ๐Ÿ›  Fixed a host of edge case bugs relating to array mutations
    • ๐Ÿ›  Many minor fixes and tweaks: #349, #351, #353, #369, #370, #376, #377, #390, #391, #393, #398, #401, #406, #412, #425, #433, #434, #439, #441, #442, #446, #451, #460, #462, #464, #465, #467, #479, #480, #483, #486, #520, #530, #536, #553, #556
  • v0.3.9 Changes

    • ractive.findComponent() and ractive.findAllComponents() methods, for getting references to components
    • Expression results are wrapped if necessary (e.g. {{getJSON(url)}} wrapped by @lluchs' [Promise adaptor](lluchs.github.io/Ractive-adaptors-Promise/))
    • Mustaches referring to wrapped values render the facade, not the value
    • ๐Ÿ“œ Directive arguments are parsed more reliably
    • Components inherit adaptors from their parents
    • Adapto
    • ๐Ÿ”„ Changes to transitions API
    • ๐Ÿ‘ SVG support is detected and exposed as Ractive.svg
    • If subclass has data, it is used as prototype for instance data
  • v0.3.8 Changes

    • ๐Ÿ— Reorganised project into AMD modules, using amdclean during build
    • โœ… Decorators - decorate elements with functionality, e.g. tooltips, jQuery UI widgets, etc
    • ๐Ÿšš Moved plugins (adaptors, decorators, custom events, transitions) out of the main codebase and into separate repositories. Note: plugin APIs have changed!
    • โšก๏ธ ractive.merge() - merge items from one array into another (e.g. updating with data from a server)
    • Pattern observers - observe e.g. items[*].status
    • ๐Ÿ‘ Contenteditable support (thanks @aphitiel and @Nijikokun)
    • ractive.insert() and ractive.detach() methods for moving a Ractive instance in and out of the DOM without destroying it
    • ractive.toHTML() replaces ractive.renderHTML()
    • ractive.findAll( selector, { live: true }) maintains a live list of elements matching any CSS selector
    • ๐Ÿ›  Various bugfixes
  • v0.3.7 Changes

    • โœ… Adaptors - use external libraries like Backbone seamlessly with Ractive
    • Dependency tracking within functions, by monitoring ractive.get())
    • โœ… Create live nodelists with the findAll() method
    • โšก๏ธ Observers are guaranteed to fire before DOM updates, unless {defer:true} is passed as an option to ractive.observe()
    • Triples behave correctly inside table elements etc (issue #167)
    • Delimiters ('{{' and '}}') can be overridden globally with Ractive.delimiters and Ractive.tripleDelimiters
    • ๐Ÿ›  Fix #130 (event handler parameters and array modification)
    • Tap event respects spacebar keypresses while a suitable element is focused
    • โšก๏ธ updateModel() method to resync two-way bindings if they are manipulated external (e.g. $(input).val(newValue))
    • ๐Ÿ‘ Better handling of HTML entities
    • Expressions with unresolved references will still render, using undefined in place of unknown references
    • ๐Ÿ‘€ Hover event fires on the equivalent of mouseenter/mouseleave rather than mouseover/mouseout
    • ๐Ÿ›  Various bugfixes and stability/performance improvements
  • v0.3.6 Changes

    • ๐Ÿ‘ Better two-way binding - support for multiple checkboxes and file inputs
    • ๐Ÿ‘€ Experimental 'magic mode' - use ES5 getters and setters instead of .set() and .get(). See #110
    • More efficient event binding, and dynamic proxy event names
    • ๐Ÿ‘Œ Support for pointer events with tap - thanks lluchs
    • ๐Ÿ‘€ Iterate through properties of an object - see #115
    • ๐Ÿ›  Bugfixes and refactoring
  • v0.3.5 Changes

    • ๐Ÿ‘€ Experimental support for components - see this thread for details
    • ๐Ÿ‘Œ Support for component - thanks CamShaft
    • ๐Ÿ’… Option to use on-click style event binding (as opposed to proxy-click)
    • ๐Ÿ› Bug fixes