@cocreate/render 1.45.2 → 1.45.4

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.
Files changed (3) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/package.json +6 -14
  3. package/src/index.js +41 -10
package/CHANGELOG.md CHANGED
@@ -1,3 +1,17 @@
1
+ ## [1.45.4](https://github.com/CoCreate-app/CoCreate-render/compare/v1.45.3...v1.45.4) (2025-09-01)
2
+
3
+
4
+ ### Bug Fixes
5
+
6
+ * enhance rendering logic and event dispatching for HTML elements ([0a07d0d](https://github.com/CoCreate-app/CoCreate-render/commit/0a07d0de0a6f8badd583326e0f506527368c2fb3))
7
+
8
+ ## [1.45.3](https://github.com/CoCreate-app/CoCreate-render/compare/v1.45.2...v1.45.3) (2025-05-01)
9
+
10
+
11
+ ### Bug Fixes
12
+
13
+ * update [@cocreate](https://github.com/cocreate) dependencies ([35a36ce](https://github.com/CoCreate-app/CoCreate-render/commit/35a36ce6685d60e425fe20d57b456798c7d3e364))
14
+
1
15
  ## [1.45.2](https://github.com/CoCreate-app/CoCreate-render/compare/v1.45.1...v1.45.2) (2025-04-30)
2
16
 
3
17
 
package/package.json CHANGED
@@ -1,18 +1,10 @@
1
1
  {
2
2
  "name": "@cocreate/render",
3
- "version": "1.45.2",
3
+ "version": "1.45.4",
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",
7
- "cocreate",
8
- "low-code-framework",
9
- "no-code-framework",
10
- "cocreatejs",
11
- "cocreatejs-component",
12
- "cocreate-framework",
13
- "no-code",
14
7
  "low-code",
15
- "collaborative-framework",
16
8
  "realtime",
17
9
  "realtime-framework",
18
10
  "collaboration",
@@ -54,10 +46,10 @@
54
46
  "webpack-log": "^3.0.1"
55
47
  },
56
48
  "dependencies": {
57
- "@cocreate/actions": "^1.21.0",
58
- "@cocreate/api": "^1.22.2",
59
- "@cocreate/element-prototype": "^1.29.0",
60
- "@cocreate/observer": "^1.18.0",
61
- "@cocreate/utils": "^1.38.0"
49
+ "@cocreate/actions": "^1.21.1",
50
+ "@cocreate/api": "^1.22.3",
51
+ "@cocreate/element-prototype": "^1.29.1",
52
+ "@cocreate/observer": "^1.18.1",
53
+ "@cocreate/utils": "^1.39.0"
62
54
  }
63
55
  }
package/src/index.js CHANGED
@@ -128,10 +128,14 @@ async function render({
128
128
  }
129
129
 
130
130
  if (!key) {
131
- key =
132
- source.getAttribute("render") ||
133
- source.getAttribute("key") ||
134
- data.type;
131
+ if (source instanceof HTMLElement) {
132
+ key =
133
+ source.getAttribute("render") ||
134
+ source.getAttribute("key") ||
135
+ data.type;
136
+ } else {
137
+ key = data.type;
138
+ }
135
139
  if (!key || key === "key") {
136
140
  key = "object";
137
141
  } else if (key === "{}" || (!key && data.method)) {
@@ -197,8 +201,17 @@ async function render({
197
201
  }
198
202
 
199
203
  key = element[i].getAttribute("render") || key;
200
- let renderType =
201
- renderedNode.source.element.getAttribute("render-type");
204
+ let renderedSource = renderedNode.source;
205
+ if (!renderedSource) {
206
+ if (renderedNode.parent && renderedNode.parent.template) {
207
+ renderedSource = renderedNode.parent.template.source;
208
+ }
209
+ }
210
+ let renderType;
211
+ if (renderedSource && renderedSource.element) {
212
+ renderType = renderedSource.element.getAttribute("render-type");
213
+ }
214
+
202
215
  let clone;
203
216
  if (remove) {
204
217
  for (let j = 0; j < data[key].length; j++) {
@@ -250,6 +263,11 @@ async function render({
250
263
  await renderValues(element[i], data, key, renderAs);
251
264
  }
252
265
  }
266
+ // Dispatch input and change events after rendering is complete
267
+ if (source instanceof HTMLElement) {
268
+ source.dispatchEvent(new Event("input"));
269
+ source.dispatchEvent(new Event("change"));
270
+ }
253
271
  }
254
272
 
255
273
  async function renderTemplate(template, data, key, index, keyPath) {
@@ -262,7 +280,8 @@ async function renderTemplate(template, data, key, index, keyPath) {
262
280
  renderedNodes.set(template, templateData);
263
281
  }
264
282
 
265
- templateData.parent = template.parentElement.closest("[render]");
283
+ templateData.parent =
284
+ template.parentElement.closest("[render]") || template.source;
266
285
  if (templateData.parent) {
267
286
  templateData.parent = renderedNodes.get(templateData.parent);
268
287
  }
@@ -294,7 +313,10 @@ async function renderTemplate(template, data, key, index, keyPath) {
294
313
  }
295
314
  } else if (!renderData) return;
296
315
 
297
- let renderAs = template.element.getAttribute("render-as") || key;
316
+ let renderAs =
317
+ template.element.getAttribute("render-as") ||
318
+ template.source.element.getAttribute("render-as") ||
319
+ key;
298
320
  template.renderAs = renderAs;
299
321
 
300
322
  let renderType;
@@ -406,7 +428,16 @@ async function renderTemplate(template, data, key, index, keyPath) {
406
428
 
407
429
  clone.keyPath = template.keyPath || "" + `[${i}]`;
408
430
 
409
- let object = { ...renderData[i] };
431
+ let object;
432
+ if (
433
+ typeof renderData[i] === "object" &&
434
+ renderData[i] !== null
435
+ ) {
436
+ object = { ...renderData[i] };
437
+ } else {
438
+ object = renderData[i];
439
+ }
440
+
410
441
  for (let j = 0; j < exclude.length; j++)
411
442
  delete object[exclude[j]];
412
443
 
@@ -1123,7 +1154,7 @@ Observer.init({
1123
1154
  if (mutation.target.hasAttribute("render-clone")) return;
1124
1155
  let parentElement = mutation.target.parentElement.closest("[render]");
1125
1156
  if (!parentElement) return;
1126
- return;
1157
+
1127
1158
  let renderedNode = renderedNodes.get(parentElement);
1128
1159
  let data;
1129
1160
  if (renderedNode.source) {