Skip to content

Commit 30c6b25

Browse files
committed
feat: attribute name rendering converts string to attributes
1 parent e2f6e00 commit 30c6b25

File tree

1 file changed

+10
-4
lines changed

1 file changed

+10
-4
lines changed

src/index.js

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,7 @@ async function render({ source, element, selector, data, key, index, currentInde
130130
source = { data }
131131

132132
if (data.$filter) {
133-
index = index || data.$filter.startingIndex
133+
index = index || data.$filter.startingIndex || data.$filter.index
134134
update = update || data.$filter.update
135135
remove = remove || data.$filter.remove
136136
}
@@ -476,11 +476,17 @@ async function renderValues(node, data, key, renderAs, keyPath, parent) {
476476

477477
name = await renderValue(attr, data, namePlaceholder, renderAs, renderedAttribute);
478478
value = await renderValue(attr, data, valuePlaceholder, renderAs, renderedAttribute);
479-
480-
if (name === undefined && name === null) {
479+
if (namePlaceholder.includes('{{') && name) {
480+
const attributes = name.match(/([^\s]+="[^"]*"|[^\s]+)/g) || [];
481+
attributes.forEach(attr => {
482+
let [attributeName, attributeValue] = attr.split("=");
483+
attributeValue = attributeValue ? attributeValue.replace(/"/g, '') : '';
484+
node.setAttribute(attributeName, attributeValue);
485+
});
486+
} else if (name === undefined || name === null || name === '') {
481487
renderedNodes.delete(attr)
482488
node.removeAttribute(attr.name);
483-
} else if ((value || value === "") && (name !== attr.name || value !== attr.value))
489+
} else if (name && (value || value === "") && (name !== attr.name || value !== attr.value))
484490
node.setAttribute(name, value);
485491
}
486492
// });

0 commit comments

Comments
 (0)