Skip to content

meteorwebcomponents/router

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

27 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Router Mixin.

What is mwc Router?

mwcRouter is a reactive meteor routing solution for polymer elements. Objective is to sync the reactive flowrouter params and queryparams from inside the polymer elements

Installation

Method 1 - Meteor Package

Add mwc:router package to your Meteor App.

$ meteor add mwc:router

Method 2 - Using bower

import mwc-router.html file.

How to use it ?

Add mwcRouter behavior to your component behaviors. ie. behaviors:[mwcRouter]

Polymer({
    is: "custom-elements",
    // you can leave properties field empty if you dont want to set intial values.
    properties: {
        mwcRoute: {
            //name datatypes - string
            name: "custom-route",
            //params datatypes - string
            params: {
                p1: "p1value"
            },
            //queryParams datatypes - string/object
            queryParams: {
                qp1: "qp1value"
            }
        }
    },
    behaviors: [mwcRouter] //important
})

this.mwcRoute contains name (name of the current route), params and queryparams which are reactive. Use it as {{mwcRouter.queryParams.paramName}}

With FlowRouter and mwc:layout

//Router
// Using mwc:layout is optional. Not a dependency. 
FlowRouter.route("/post/:_id", {
    name: 'post-view',
    action: function(params, queryParams) {
        mwcLayout.render('main', {
            "main": "post-view"
        });
    }
});

// Inside post-view element


Polymer({
    is: "post-view",
    behaviors: [mwcRouter],
    /***** IMPORTANT *****/
    properties: {
        mwcRoute: {
            queryParams: {
                "view": "home"
            } // initializing queryParam view = "home"
        }
    },
    changeView: function() {
        this.$.mainView.selected = "edit"; 
        // here we are changing the selected attribute of #mainView. Router will change accordingly.
    }
});

post-view element

....

<paper-tabs attr-for-selected="name" selected="{{mwcRoute.queryParams.view}}">
    <paper-tab name="home">Home</paper-tab>
    <paper-tab name="edit">Edit</paper-tab>
</paper-tabs>

<iron-pages id="mainView" selected="{{mwcRoute.queryParams.view}}" attr-for-selected="name">

    <post-item name="home">
        [[mwcRoute.params._id]]
    </post-item>

    <post-item name="edit">
        [[mwcRoute.params._id]]
    </post-item>


</iron-pages>

<paper-button on-click="changeView">Edit post</paper-button>
....

Now go to the browser console and check FlowRouter.setQueryParams({"view":"home"});

Todo

  • Support data types other than string also. ie polymer property A(datatype : Object) -> param string
  • Option to add preprocessing functions for set and get. support for computations

##Related Projects

mwc router demo - kickstart meteor polymer

MWC synthesis - Synthesis is meteor + polymer.

MWC Mixin - Mixin for polymer/webcomponents in meteor.