@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.
- package/CHANGELOG.md +14 -0
- package/package.json +6 -14
- 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.
|
|
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.
|
|
58
|
-
"@cocreate/api": "^1.22.
|
|
59
|
-
"@cocreate/element-prototype": "^1.29.
|
|
60
|
-
"@cocreate/observer": "^1.18.
|
|
61
|
-
"@cocreate/utils": "^1.
|
|
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
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
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
|
|
201
|
-
|
|
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 =
|
|
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 =
|
|
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
|
|
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
|
-
|
|
1157
|
+
|
|
1127
1158
|
let renderedNode = renderedNodes.get(parentElement);
|
|
1128
1159
|
let data;
|
|
1129
1160
|
if (renderedNode.source) {
|