Template Syntax
Learn about the template syntax for Parcel components
Inside a fieldset
add an input
for each variable you want to create. Each input requires a type
, which is used for validating the content, and a name
, to identify the variable.
Names can only contain, lowercase letters, numbers or hyphens. The name must not start with a number, and when using a hyphenated-name
you need to camelCase the variable when you use it ${hyphenatedName}
.
<fieldset>
<input type="url" name="link" />
<input type="url" name="image" />
<input type="text" name="alt-text" />
</fieldset>
When using a component in your email you can set values for these variables that will be passed to the component by using attributes on the component element.
<my-first-component
link="https://parcel.io"
image="https://parcel.io/my-image.png"
alt-text="parcel.io website"
/>
Add set:
in front of the attribute to make it a computed attribute, and add the name of the variable to insert it directly.
<component>
<a set:href="link">
<img set:src="image" set:alt="altText" />
</a>
</component>
the output is:
<a href="https://parcel.io">
<img src="https://parcel.io/my-image.png" alt="parcel.io website" />
</a>
You can use basic Javascript expressions within components.
<component>
<div>${4*50}</div>
</component>
Use this component in an email:
<!-- my-email -->
<html>
<body>
A simple email
<my-first-component>
</body>
</html>
the output is:
<html>
<body>
A simple email
<div>200</div>
</body>
</html>
<component>
<div>${'some text'.toUpperCase()}</div>
</component>
the output is:
<html>
<head></head>
<body>
A simple email
<div>SOME TEXT</div>
</body>
</html>
<component>
<div>${JSON.stringify({ "firstName":"Adam", "lastName": "Bluebeard"})}</div>
</component>
the output is:
<html>
<head></head>
<body>
<div>{"firstName":"Adam","lastName":"Bluebeard"}</div>
</body>
</html>
A great way of getting a better understanding of your data it render it on the page using <pre>
.
<component>
<pre wrap>
${JSON.stringify(data, null,2)}
</pre>
</component>