ghost
Version:
The professional publishing platform
60 lines (51 loc) • 1.91 kB
JavaScript
const {addCreateDocumentOption} = require('../render-utils/add-create-document-option');
const {html} = require('../render-utils/tagged-template-fns.js');
function cardTemplate({node}) {
return (
`
<div class="kg-card kg-toggle-card" data-kg-toggle-state="close">
<div class="kg-toggle-heading">
<h4 class="kg-toggle-heading-text">${node.heading}</h4>
<button class="kg-toggle-card-icon" aria-label="Expand toggle to read content">
<svg id="Regular" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
<path class="cls-1" d="M23.25,7.311,12.53,18.03a.749.749,0,0,1-1.06,0L.75,7.311"></path>
</svg>
</button>
</div>
<div class="kg-toggle-content">${node.content}</div>
</div>
`
);
}
function emailCardTemplate({node}) {
return (
html`
<table cellspacing="0" cellpadding="0" border="0" width="100%" class="kg-toggle-card">
<tbody>
<tr>
<td class="kg-toggle-heading">
<h4>${node.heading}</h4>
</td>
</tr>
<tr>
<td class="kg-toggle-content">
${node.content}
</td>
</tr>
</tbody>
</table>
`
);
}
function renderToggleNode(node, options = {}) {
addCreateDocumentOption(options);
const document = options.createDocument();
const htmlString = options.target === 'email'
? emailCardTemplate({node}, options)
: cardTemplate({node});
const container = document.createElement('div');
container.innerHTML = htmlString.trim();
const element = container.firstElementChild;
return {element};
}
module.exports = renderToggleNode;