rivets v0.7 Release Notes

  • 🔄 Changes

    • 👌 Support for data-bound keypaths are formatter arguments.

      { item.price | lte user.balance }
      
    • 👌 Support for primitives in binding declarations. This includes strings, numbers, booleans, null and undefined.

      { item.updated | date 'MMM DD, YYY' }
      
    • 👍 Primitives are also supported as the binding target.

      { 'i18n.errors.' | append error | translate }
      
    • 👌 Support for multiple binder arguments (wildcard matches). See #383.

    • 👀 The Observer class has been abstracted out into a new lib as a dependency. See Sightglass.

    • ⚡️ The built-in value binder now listens on the input event instead of change, so updates will propogate immediately instead of on blur.

    • 🔧 There is no more rivets.config object. All of the previous configuration options are defined on the module directly.

    • 📜 If a template includes <script> elements, they will now be ignored when the template is parsed.

    ⬆️ Upgrading from 0.6

    • 👉 Make sure you include the sightglass lib in your project. Just include sightglass.js before rivets.js. Alternatively you can just include rivets.bundled.min.js once (contains both libraries).

    • ⚡️ If you have defined any custom adapters, they will need to be updated from the old property names to the new property names.

      • adapter.subscribe is now adapter.observe.
      • adapter.unsubscribe is now adapter.unobserve.
      • adapter.read is now adapter.get.
      • adapter.publish is now adapter.set.
    • 🔄 Change all of your existing formatter arguments to be wrapped in quotes. This is because arguments are evaluated as keypaths by default (unless they are wrapped in quotes).

      • For example, if you were previously doing the following:

        <p>{ item.enabled | switch green red }</p>
        

        You will need to change it to:

        <p>{ item.enabled | switch 'green' 'red' }</p>
        
      • Note that if your keypath argument was a number, true, false, null or undefined, then you can leave them without quotes, but they will be passed to the formatter as the actual primitive value instead of a string.

    • If you ever set properties directly on the rivets.config object, you will need to change those to the rivets object itself.

      • For example, if you were previously doing the following:

        rivets.config.templateDelimiters = ['{{', '}}']
        

        You will need to change it to:

        rivets.templateDelimiters = ['{{', '}}']
        
      • Note that if you were only using rivets.configure({}) then no changes are needed (rivets.configure functions the same as before).