MooTools blog

  • 1.6.0 is out!

    Today marks the release of MooTools Core and More versions 1.6.0. This is a minor revision that delivers a number of bug fixes as well as the introduction of new features.

    The main new adition is Class.Thenable which is a new Class mixin that can be used in Promise style flows by using its then method. When implemented in a Class, it makes the class "thenable" in the Promises/A+ sense of the word, meaning it can be used in Promise style flows by using its then method.

    The implementation, however, is more than just a "then" method. Any instance of a Class implementing Class.Thenable is a Promises/A+ compliant object (generally referred to as "a Promise") with only one exception: it is possible to reset the Class's value resolution state fully (rejecting pending reactions, and starting empty) to support a Class instance living for longer than just the lifetime of one value resolution.

    Example using Request:

    var request = new Request();
    request.send().then(function(response){ console.log(response.text); });

    Example hooking into a native Promise:

    var request = new Request();
    var promise = Promise.resolve(request);
    promise.then(function(response){ console.log(response.text); });

    You can find this new version 1.6.0 in the website or within the dist folder of the 1.6.0 tag (Core).


    IE warning: This will be the last version to support old IE browsers. Next minor and/or major versions should be only IE11+ compatible. We might still release some patch in the 1.6.x version if needed.

    Array.from deprecated, now called Array.convert: Following the conclusion of the ES6 specs we know now that Array.from will have a different implementation than the one MooTools uses.
    Because of this we renamed Array.from to Array.convert to not overwrite the Native implementation.
    We kept it as it was though in the compat layer for compatibility reasons if you really to use it still.

    To keep the API consistency we changed also the name of the method in Function, Number and String Types.

    The main changes in this release are:


    • Rename .from method in Array, Function, String and Number (#2758)(#2760)
    • New feature: Class.Thenable (#2743)
    • Add Safari 9 to Sauce Labs tested browsers (#2749)
    • Added ESLint to Grunt specs to keep code styled and clean (#2748)
    • Gruntfile refactor (#2741)
    • MooTools specs goes Mocha (#2737)
    • Specs upgrade, refactor and cleanup. Huge specs cleanup by Tim (#2736)
    • Fix so the legacy $pick gets exported to global (#2735)
    • Fix so Event Class gets exported to global (#2733)


    • Add extra aliases to Assets package's description (#1335)
    • Added ESLint to Grunt specs to keep code styled and clean (#1327)
    • New feature: new option keepOpen to Accordion (#1333)
    • New feature: added sort order to onSort function arguments (#1332)
    • Fix String.extras regex to not mix self closing tags (#1328)
    • Fix validate-match "matchName" when containing spaces(#1186)
    • Fix unDraggableTags in Drag (#1159)
    • Fix to validate-reqchk-byname (#1329)
    • New feature: added IPv6 compatibility to URI.regex (#1322)
    • Fix semicolon in end of file that broke packager (#1319)

  • 1.5.2 is out!

    Today we release MooTools Core versions 1.5.2. In this new version there are some fixes for raised issues and also some new stuff!

    You can find the new version in the dist/ folder of the Github repo or on the website.

    The main things in this release are:


    • Fix "Unspecified Error" in IE when calling getSize() on a node that isn't in the DOM (#2648)
    • fix IE version detection in old IE (#2653)
    • Protect 'contains' method in Array prototype (#2654)
    • Fix httpOnly cookies (#2676)
    • Fix Garbage Collect typo in Element Docs (link)
    • Fix mouseenter/mouseleave Readme where info was incorrectly placed below mousewheel (#2681)
    • Fix camelCasing of -ms- prefixed properties in Element.Styles (#2686)
    • Fix visibility when fade is chained (#2597)
    • Fix event.key for keypress (link)
    • Fix non-enumerables iteration in old IE (#2696)
    • Move Object.keys to Core.js, upgrade for in loops (#2696)
    • Add pageshow and pagehide events (#2701)
    • Fix for typeOf ($family property), when a Class extends a Native Type (#2688)
    • Fix mapping of shift onkeypress (#2703)
    • Fix relatedTarget in mouseenter and mouseleave (#2697)
    • Fix warning for input[type="email"] (#2705)
    • Fix Microsoft Edge UA string support to Browser (#2716)
    • Fixed broken links in docs (#2728)
    • Fixed wrong offset calculation because of floating point values (#2437)
    • Added tests for io.js and Node.js versions (0.10 and 0.12) for Mootools Server version (#2729)


    • New feature: Class.Singleton (#1285)
    • Fix tooltip to not show when empty (#1299)
    • Added more Norwegian, Swiss, Argentinian translations
    • Fix String.QueryString when converting + into spaces (#1313)
    • Fix module definition of Drag, Slider, Sortables, and others to be consistent with others (#1311)
    • Add touch events to Drag (#1292)
    • Remove old callbacks in Request.JSONP.request_map (#1315)

  • 1.5.1 is out!

    Today we release MooTools Core and More versions 1.5.1. This continues our improvement work for both Core and More and introduces also some features that were in the queue for being added. This release fixes also a regression related to the mousewheel event.
    When preparing the 1.5 release we decided that Core 1.5.x will work with More 1.5.x. This means that, inside the 1.5 space, versions should be compatible and you might be seeing Core or More releases that are not simultaneous.

    In 1.5.1 we added a new dist/ folder in Core, present at the tagged commit, for those who want the Core source, as well as a needed update so you can get MooTools via Bower.

    Worth a notice is also the new MooTools Packager. MooTools has always been about modularity, and for those of you that want to choose which modules to use you can now use the new MooTools Packager (for Node.js/Grunt), as well as the website builder. The new Packager allows to compile source files from the dependencies in the YAML header. You can find it on GitHub and NPM.

    The main things in this release are:


    • Mousewheel regression fix for Chrome and Firefox. (link)
    • DOMEvent's wheel property now listens for DOM3 wheel event also. (link)
    • IE8 iFrame leak fix. (link)
    • Added postMessage to NativeEvents. (link)
    • Fixed setter so IE7/8 can set text of style element. (link)
    • Normalize values on newElement for radio and checkbox types. (link)
    • Fixed svg element size. (link)
    • Fixed getter behavior for border-radius. (link)
    • Added fix for IE8 to be able to set html into style element. (link)
    • Added option to trigger xhr.withCredentials without http auth. (link)
    • Added the PATCH and HEAD methods to Request. (link)
    • Fixed hasClass without classList to comply with ES6. (link)
    • Added fix for IE9 when setting an input type to "email". (link)
    • Fix for IE when removing delegated "submit" event from destroyed element. (link)
    • Updates in Docs.


    • Drag position calculation fix. (link)
    • Form.Validator.Extras credit card regex update. (link)
    • Fix Scroller Class to be able to use window as element. (link)
    • Added custom sort function for HtmlTable.Sort. (link)
    • Fixed Type error for empty string in Form.Validator. (link)
    • Added onLoad callback for local and cross-origin CSS assets. (link)
    • Fixed sort regex to respect sci-notated floated numbers in HtmlTable.Sort. (link)
    • Fixed scroll miss-placement while dragging and scrolling. (link)
    • Updates in Docs.

  • MooTools Core and More 1.5 are here!
    More stable and well tested than ever

    1.5 is a HUGE bug fix release with roughly 240 commits addressing new browsers that have entered the market as well as new features in the JavaScript language. The team spent a ton of time instrumenting the tests to run against Travis CI and Sauce Labs so that the source code would be easier to test. This will help to make new contributions, fixes and features to the framework and release much more rapidly.

    It's easy to underestimate the value of all the work that went into the project over the past two months.

  • Anyone using Core/Browser.js?

    On our road to Version 1.5, we're trying to eliminate some bad practices from our code. One of the things we've just gotten rid of, is that a few last pieces of our libraries still depended on Browser UA detection. This has all been eliminated in favour of feature detection. To help us reach a decision on where to go with the Browser module, here's a quick survey. Reply via @mootools or leave a comment here.