Edit this page

up.script up.macro(selector, options, macro)
JavaScript function

Registers a compiler that is run before all other compilers.

A macro lets you set UJS attributes that will be compiled afterwards.

If you want default attributes for every link and form, consider customizing your navigation options.

Example

You will sometimes find yourself setting the same combination of UJS attributes again and again:

<a href="/page1" up-layer="new modal" up-class="warning" up-animation="shake">Page 1</a>
<a href="/page1" up-layer="new modal" up-class="warning" up-animation="shake">Page 1</a>
<a href="/page1" up-layer="new modal" up-class="warning" up-animation="shake">Page 1</a>

We would much rather define a new [smooth-link] attribute that let's us write the same links like this:

<a href="/page1" smooth-link>Page 1</a>
<a href="/page2" smooth-link>Page 2</a>
<a href="/page3" smooth-link>Page 3</a>

We can define the [smooth-link] attribute by registering a macro that sets the [up-layer], [up-class] and [up-animation] attributes for us:

up.macro('[smooth-link]', function(link) {
  link.setAttribute('up-layer', 'new modal')
  link.setAttribute('up-class', 'warning')
  link.setAttribute('up-animation', 'shake')
})

Parameters

selector
required

The selector to match.

string
options
required

See options for up.compiler().

macro
required

The function to call when an element matching selector is inserted.

The function may accept up to three arguments:

  1. The new element being compiled.
  2. Any attached data.
  3. Information about the current render pass.

The function may return a destructor function that cleans the compiled object before it is removed from the DOM. The destructor function is called with the compiled element.

Function(element, data)