Custom Tags

Observe that you can only use as custom tags templates that id contains -. As described here.

With the following tag in your HTML template

<template id="my-button"> <button class="btn btn-" class:="btn" text:="text" click:="click"> <slot></slot> </button> </template>

Reuse your templates inside another template.

{ button: "primary" }
<div> <my-button btn:="button"> Action </my-button> </div>

Result:

<div> <button class="btn btn-primary"> Action </button> </div>

Iterate with custom tags.

[ {button: "secondary", title: "Cancel"}, {button: "primary", title: "Submit"} ]
<div> <my-button each: btn:="button" text:="title"></my-button> </div>

Result:

<div> <button class="btn btn-secondary">Cancel</button> <button class="btn btn-primary">Submit</button> </div>

Recursive tags.

[ { title: "animals", children: [ { title: "dog" }, { title: "cat" } ] }, { title: "countries", children: [ { title: "US", children: [ { title: "NY", children: [ {title: "New York"} ] }, { title: "CA", children: [ {title: "San Francisco"}, {title: "Los Angeles"} ] } ] } ] }, { title: "home" } ]
<template id="my-list"> <ul if:="items"> <li each:="items"> <span text:="title"></span> <my-list items:="children"></my-list> </li> </ul> </template>

Result:

<ul> <li> <span>animals</span> <ul> <li> <span>dog</span> </li> <li> <span>cat</span> </li> </ul> </li> <li> <span>countries</span> <ul> <li> <span>US</span> <ul> <li> <span>NY</span> <ul> <li> <span>New York</span> </li> </ul> </li> <li> <span>CA</span> <ul> <li> <span>San Francisco</span> </li> <li> <span>Los Angeles</span> </li> </ul> </li> </ul> </li> </ul> </li> <li> <span>home</span> </li> </ul>