Skip to content

Commit cd011c1

Browse files
committed
feat: improved handeling of refrence data and exclusion
1 parent 65cbd3c commit cd011c1

File tree

1 file changed

+24
-10
lines changed

1 file changed

+24
-10
lines changed

src/index.js

Lines changed: 24 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -306,19 +306,24 @@ async function renderTemplate(template, data, key, index, keyPath) {
306306
renderReverse = template.element.getAttribute("render-reverse");
307307
}
308308

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+
309315
if ((key && !Array.isArray(renderData)) || renderType === "object") {
310316
if (renderType && Array.isArray(renderData) && renderData.length === 1)
311317
renderData = renderData[0];
312318

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-
319319
const keys = Object.keys(renderData);
320320
for (let i = 0; i < keys.length; i++) {
321321
if (exclude.includes(keys[i])) continue;
322+
if (
323+
reference === "false" &&
324+
["$storage", "$database", "$array"].includes(key)
325+
)
326+
continue;
322327

323328
let value = renderData[keys[i]];
324329
let type = "string";
@@ -364,12 +369,21 @@ async function renderTemplate(template, data, key, index, keyPath) {
364369

365370
clone.keyPath = template.keyPath || "" + `[${i}]`;
366371

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+
368382
if (renderAs) {
369-
object = { [renderAs]: renderData[i] };
383+
object = { [renderAs]: object };
370384
if (renderAs.includes("."))
371385
object = dotNotationToObject(object);
372-
} else object = renderData[i];
386+
} else object = object;
373387

374388
let index;
375389
if (key !== "data") index = i;
@@ -1018,7 +1032,7 @@ Actions.init({
10181032
let array = action.form.getAttribute("array");
10191033
if (array) data = data.find((obj) => obj.array === array);
10201034
for (let i = 0; i < elements.length; i++)
1021-
render({ source: elements[i], data });
1035+
await render({ source: elements[i], data });
10221036

10231037
document.dispatchEvent(
10241038
new CustomEvent("render", {

0 commit comments

Comments
 (0)