Skip to content

Latest commit

 

History

History
380 lines (227 loc) · 8.72 KB

CHANGELOG.md

File metadata and controls

380 lines (227 loc) · 8.72 KB

CHANGELOG

6.x

6.4.x

v6.4.0

  • Back porting marko PR #402 - Bug on jQuery Proxy when w-id contains dash/hyphen

6.3.x

v6.3.7

  • Fixed #165 - event-delegation.js:44 Uncaught TypeError: Cannot read property '__widget' of null
  • add cspNonce support

v6.3.6

  • Fixed #163 - w-for was not being removed
  • Testing: Use phantomjs-prebuilt binary when launching mocha-phantomjs

v6.3.5

  • Fixed #160 - Listeners for event delegation do not work if document.body is not available

v6.3.4

  • Fixed #154 - Listeners for event delegation do not work if document.body is not available

v6.3.3

  • Fixed #153 - Bubbling event listeners used by event delegation system are attached too late

v6.3.2

  • Upgraded to raptor-util@2

v6.3.1

  • Fixed regression where code was note being returned from getInitWidgetsCode.

v6.3.0

  • Fixed #150 - Integrated warp10 for high performance state/config serialization. Circular dependencies are now supported and duplicate objects are only serialized once.

6.2.x

v6.2.2

  • Revert back to morphdom@^1 until more testing can be done

v6.2.1

  • Fixes #147 - Immediate widget initialization not working correctly with client reordering enabled

v6.2.0

  • Throw an error if a widget fails to initialize because DOM el is missing
  • Upgrade to morphdom@2

6.1.x

v6.1.3

  • Fixed #144 - ready callback invoked multiple times when using jQuery proxy
  • Refactored testing harness

v6.1.2

  • Fixed #141 - w-preserve-if/w-preserve-body-if broken

v6.1.1

  • Fixed #137 - A widget should not update the DOM if it is destroyed (fixed by @avigy)

v6.1.0

6.0.x

v6.0.2

  • Upgraded test dependencies

v6.0.1

  • Improve how client-side module paths are generated when lasso is available

v6.0.0

  • Marko v3 compatibility

5.x

5.3.x

v5.3.0

  • Fixes #121 - Allow for w-preserve-attrs to enable preservation of attributes:
<div w-preserve-attrs="style,class"></div>

5.2.x

v5.2.2

  • The function for generating unique widget IDs on the client-side is not exported as a global on the window object (fixes #118).

5.2.0

  • Fixes #116 - Bug in browserify breaks browserify compatibility (workaround required)
  • Use <noscript> tag for delivering widget IDs to the browser

5.1.x

5.1.0

  • Fixes #112 DOM document should be bound to widget for purpose of using correct document.getElementById(...)

5.0.9

5.0.x

5.0.9

  • Fixes #111 - Make registerWidget a no-op on the server

5.0.8

  • Fixes #109 - checks addEventListener instead of attachEvent

5.0.8

  • Fixes #109 - checks addEventListener instead of attachEvent

5.0.7

  • Improvement to docs

5.0.6

  • Fixes #106 - Fix immediate widget initialization

5.0.5

  • Fixes #102 Fix how require path to marko-widgets is generated in compiled templates

5.0.4

  • Fixes #101 - Widget binding broken when UI component is npm linked in

5.0.3

  • Documentation fixes

5.0.2

  • Fix for #98 - Properly preserve widget stack when beginning async rendering

5.0.1

  • Fixes #92 - w-preserve* does not work on widget root node

5.0.0

  • Integrated morphdom to more efficiently transform the existing DOM instead of replacing it entirely
  • Significant performance improvements
  • Code cleanup
  • Breaking changes:
    • The onAfterUpdate lifecycle event was renamed to onUpdate
    • Reusing DOM nodes might change application behavior (in rare cases)
    • The init() constructor for a widget is only called once even if a widget is rerendered
  • Dust-related code has been removed
  • New lifecycle event: 'onRender'

4.x

4.3.x

4.3.0

  • Fixed #41 - Initialize widgets in nested batched updates first
  • Fixed #54 - Allow event handler method name to be dynamic

4.2.x

4.2.3

  • Internal code improvements

4.2.2

  • Fixed #49 - Allow w-id to be used in an intermediate template

4.2.1

  • Fixed #48 - Improved logic for generating repeated widget IDs to handle gaps

4.2.0

  • Fixed #47 - Switched from optimizer to lasso for tests
  • Fixed #46 - Allow w-id attr with <invoke>

4.1.x

4.1.0

  • Added support w-preserve-if and w-preserve-body-if. These new attributes allow DOM elements to be conditionally preserved. The right-hand side of the attribute should a JavaScript expression. If the expression evaluates to false then the elements will not be preserved. Example usage:
<div w-bind>
    <!-- Don't rerender the search results if no search results are provided -->
    <app-search-results items="data.searchResults"
        w-preserve-if="data.searchResults == null"/>
</div>

4.0.x

4.0.1

  • Stateful widgets
  • Batched updates to the DOM
  • New methods exported by marko-widgets:
    • defineComponent(def)
    • defineWidget(def)
    • defineRenderer(def)
  • New custom taglib attributes: w-preserve, w-preserve-body and w-body
  • New Widget methods:
    • setState(name, value)
    • setState(newState)
    • replaceState(newState)
    • setProps(newProps)
    • setStateDirty(name)
    • onBeforeDestroy()
    • onDestroy()
    • onBeforeUpdate()
    • onAfterUpdate()
  • New rendering properties:
    • template (String path to a Marko template)
    • getInitialProps(input)
    • getInitialState(input)
    • getTemplateData(state, input)
    • getWidgetConfig(input)
    • getInitialBody(input)
  • General code cleanup and performance improvements
  • ❗ Removed support for Widget.prototype.render = function(input, out) { ... }

3.x

3.0.x

3.0.0

  • ❗ Removed support for this.widgets.foo (use this.getWidget('foo') instead)
  • Added support for repeated DOM elements and repeated widgets:
<div class="my-component" w-bind="./widget">
    <ul>
		<li w-id="todoListeItems[]" for="todoItem in data.todoItems">
			<app-todo-item w-id="todoItems[]" todo-item="todoItem"/>
		</li>
	</ul>
</div>
var todoListeItems = this.getEls('todoListeItems');
var todoItemWidgets = this.getWidgets('todoItems');
  • Added new methods:
    • getEls(id)
    • getWidgets(id)

2.x

2.0.x

2.0.12

  • Deprecate w-el-id in favor of w-id

2.0.11

  • Internal code cleanup

2.0.10

  • Fixed #19 - Allow w-on for custom widget events

2.0.9

  • Fixed #18 - Widgets in async blocks now initialize in the correct order

2.0.8

  • Fixed #17 - Allow w-config with w-extend

2.0.7

  • Internal: use 'renderBody(out)' instead of invokeBody()

2.0.6

  • Introduced require('marko-widgets').render(renderer, input)

2.0.5

  • Replaced require('marko-widgets').renderFunc(renderer) with require('marko-widgets').renderable(exports, renderer)

2.0.4

  • Improved documentation

2.0.3

  • Added support for using exports.extendWidget = function(widget, widgetConfig) { ... }
  • Allow w-extend attribute to be empty

2.0.2

  • Allow empty value for w-bind (e.g. <div w-bind>...</div>) and default to ./widget or ./
  • Export new method for creating a client-side render function:
function renderer(input, out) {
    out.write('Hello ' + input.name + '!');
}

exports.render = require('marko-widgets').renderFunc(renderer);

2.0.1

  • Added new sub-module, require('marko-widgets/dom'), that exports raptor-dom

Example:

require('marko-widgets/dom').removeChildren(document.body);
  • Added new sub-module, require('marko-widgets/renderer'), that exports raptor-renderer

Example:

require('marko-widgets/renderer').renderFunc(renderer);

2.0.0

  • Improved mechanism for registering and loading widget types.
  • Use exports.Widget instead of module.exports = Widget

1.x

1.5.x

1.5.2

  • Fixes #14 - Making adding event listeners more robust by allowing initialization even if document is not ready

1.5.1

  • Changes to prevent unoptimized code in V8

1.5.0

  • Fixes #11 Added support for w-on* attributes. Other cleanup and tests