@cocreate/render 1.43.1 → 1.44.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,15 @@
1
+ # [1.44.0](https://github.com/CoCreate-app/CoCreate-render/compare/v1.43.1...v1.44.0) (2024-12-14)
2
+
3
+
4
+ ### Bug Fixes
5
+
6
+ * temporarily handle form.getData when multiple arrays ([6f1f11f](https://github.com/CoCreate-app/CoCreate-render/commit/6f1f11f994d2f6c5b7d915ca4ed9fa3497c84a54))
7
+
8
+
9
+ ### Features
10
+
11
+ * improved handeling of refrence data and exclusion ([707180f](https://github.com/CoCreate-app/CoCreate-render/commit/707180f85965c4f773b8834cb72048068c7620c5))
12
+
1
13
  ## [1.43.1](https://github.com/CoCreate-app/CoCreate-render/compare/v1.43.0...v1.43.1) (2024-12-09)
2
14
 
3
15
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cocreate/render",
3
- "version": "1.43.1",
3
+ "version": "1.44.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
@@ -306,19 +306,24 @@ async function renderTemplate(template, data, key, index, keyPath) {
306
306
  renderReverse = template.element.getAttribute("render-reverse");
307
307
  }
308
308
 
309
+ let exclude = template.element.getAttribute("render-exclude") || "";
310
+ if (exclude) {
311
+ exclude = exclude.replace(/ /g, "").split(",");
312
+ }
313
+ let reference = template.element.getAttribute("render-reference");
314
+
309
315
  if ((key && !Array.isArray(renderData)) || renderType === "object") {
310
316
  if (renderType && Array.isArray(renderData) && renderData.length === 1)
311
317
  renderData = renderData[0];
312
318
 
313
- let exclude = template.element.getAttribute("render-exclude") || "";
314
- if (exclude) {
315
- exclude = exclude.replace(/ /g, "").split(",");
316
- if (!Array.isArray(exclude)) exclude = [exclude];
317
- }
318
-
319
319
  const keys = Object.keys(renderData);
320
320
  for (let i = 0; i < keys.length; i++) {
321
321
  if (exclude.includes(keys[i])) continue;
322
+ if (
323
+ reference === "false" &&
324
+ ["$storage", "$database", "$array"].includes(key)
325
+ )
326
+ continue;
322
327
 
323
328
  let value = renderData[keys[i]];
324
329
  let type = "string";
@@ -364,12 +369,21 @@ async function renderTemplate(template, data, key, index, keyPath) {
364
369
 
365
370
  clone.keyPath = template.keyPath || "" + `[${i}]`;
366
371
 
367
- let object;
372
+ let object = { ...renderData[i] };
373
+ for (let j = 0; j < exclude.length; j++)
374
+ delete object[exclude[j]];
375
+
376
+ if (reference === "false") {
377
+ delete object.$storage;
378
+ delete object.$database;
379
+ delete object.$array;
380
+ }
381
+
368
382
  if (renderAs) {
369
- object = { [renderAs]: renderData[i] };
383
+ object = { [renderAs]: object };
370
384
  if (renderAs.includes("."))
371
385
  object = dotNotationToObject(object);
372
- } else object = renderData[i];
386
+ } else object = object;
373
387
 
374
388
  let index;
375
389
  if (key !== "data") index = i;
@@ -1013,9 +1027,12 @@ Actions.init({
1013
1027
  prefix: "render"
1014
1028
  });
1015
1029
 
1030
+ // TODO: data returned from form.getData() returns an array of objects each representing an storage, database and array in form. need a solution for handling what is the item to be rendered
1016
1031
  let data = await action.form.getData();
1032
+ let array = action.form.getAttribute("array");
1033
+ if (array) data = data.find((obj) => obj.array === array);
1017
1034
  for (let i = 0; i < elements.length; i++)
1018
- render({ source: elements[i], data: data[0] });
1035
+ await render({ source: elements[i], data });
1019
1036
 
1020
1037
  document.dispatchEvent(
1021
1038
  new CustomEvent("render", {