@cocreate/render 1.36.0 → 1.37.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,3 +1,22 @@
1
+ # [1.37.0](https://github.com/CoCreate-app/CoCreate-render/compare/v1.36.1...v1.37.0) (2023-12-18)
2
+
3
+
4
+ ### Bug Fixes
5
+
6
+ * removed default ([01c1b1f](https://github.com/CoCreate-app/CoCreate-render/commit/01c1b1f8f5fa0159ae3399352e55a93e45b50678))
7
+
8
+
9
+ ### Features
10
+
11
+ * attribute name rendering converts string to attributes ([30c6b25](https://github.com/CoCreate-app/CoCreate-render/commit/30c6b25b422cc9bbaa00c2f36ceafaaac302780d))
12
+
13
+ ## [1.36.1](https://github.com/CoCreate-app/CoCreate-render/compare/v1.36.0...v1.36.1) (2023-12-15)
14
+
15
+
16
+ ### Bug Fixes
17
+
18
+ * addedNode rendering ([6f2946a](https://github.com/CoCreate-app/CoCreate-render/commit/6f2946aab0fefa84d282a71ac81da5026b54f444))
19
+
1
20
  # [1.36.0](https://github.com/CoCreate-app/CoCreate-render/compare/v1.35.0...v1.36.0) (2023-11-25)
2
21
 
3
22
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cocreate/render",
3
- "version": "1.36.0",
3
+ "version": "1.37.0",
4
4
  "description": "A simple render component in vanilla javascript. Easily configured using HTML5 attributes and/or JavaScript API.",
5
5
  "keywords": [
6
6
  "render",
package/src/index.js CHANGED
@@ -130,7 +130,7 @@ async function render({ source, element, selector, data, key, index, currentInde
130
130
  source = { data }
131
131
 
132
132
  if (data.$filter) {
133
- index = index || data.$filter.startingIndex
133
+ index = index || data.$filter.startingIndex || data.$filter.index
134
134
  update = update || data.$filter.update
135
135
  remove = remove || data.$filter.remove
136
136
  }
@@ -476,11 +476,17 @@ async function renderValues(node, data, key, renderAs, keyPath, parent) {
476
476
 
477
477
  name = await renderValue(attr, data, namePlaceholder, renderAs, renderedAttribute);
478
478
  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 === '') {
481
487
  renderedNodes.delete(attr)
482
488
  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))
484
490
  node.setAttribute(name, value);
485
491
  }
486
492
  // });
@@ -772,11 +778,15 @@ Observer.init({
772
778
  callback: function (mutation) {
773
779
  if (mutation.target.hasAttribute('render-clone'))
774
780
  return
775
- let parentElement = mutation.target.parentElement.closest(['render'])
781
+ let parentElement = mutation.target.parentElement.closest('[render]')
776
782
  if (!parentElement) return
777
-
783
+ return
778
784
  let renderedNode = renderedNodes.get(parentElement)
779
- let data = renderedNode.source.data
785
+ let data
786
+ if (renderedNode.source)
787
+ data = renderedNode.source.data
788
+ if (renderedNode.template)
789
+ data = renderedNode.template.source.data
780
790
 
781
791
  render({ element: mutation.target, data });
782
792
 
@@ -831,4 +841,4 @@ Observer.init({
831
841
 
832
842
  init()
833
843
 
834
- export default { render, renderValue, sources, renderedNodes }
844
+ export { render, renderValue, sources, renderedNodes }