@cocreate/render 1.31.0 → 1.33.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 +25 -0
- package/package.json +6 -6
- package/src/index.js +36 -26
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,28 @@
|
|
|
1
|
+
# [1.33.0](https://github.com/CoCreate-app/CoCreate-render/compare/v1.32.0...v1.33.0) (2023-11-19)
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
### Bug Fixes
|
|
5
|
+
|
|
6
|
+
* use action.form and action.params ([90f9428](https://github.com/CoCreate-app/CoCreate-render/commit/90f9428a5c87473d51aec4111b15a0f194f46cb1))
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
### Features
|
|
10
|
+
|
|
11
|
+
* update dependecies for th latest features and bug fixes ([733e8cf](https://github.com/CoCreate-app/CoCreate-render/commit/733e8cfa7b601c2c5b494fb132588a67f6d6f433))
|
|
12
|
+
|
|
13
|
+
# [1.32.0](https://github.com/CoCreate-app/CoCreate-render/compare/v1.31.0...v1.32.0) (2023-11-16)
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
### Bug Fixes
|
|
17
|
+
|
|
18
|
+
* bug rendering forms ([abc62d4](https://github.com/CoCreate-app/CoCreate-render/commit/abc62d45c5e7cbb418e88c11fb39ee9e94b1728b))
|
|
19
|
+
* type replace with key ([7575216](https://github.com/CoCreate-app/CoCreate-render/commit/7575216927168b7157a7d2fb820415eb4309ccbf))
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
### Features
|
|
23
|
+
|
|
24
|
+
* filter.overwite boolean to force re render ([273c71a](https://github.com/CoCreate-app/CoCreate-render/commit/273c71ad7b82a343c2b9d87ca17997584e778612))
|
|
25
|
+
|
|
1
26
|
# [1.31.0](https://github.com/CoCreate-app/CoCreate-render/compare/v1.30.1...v1.31.0) (2023-11-12)
|
|
2
27
|
|
|
3
28
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cocreate/render",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.33.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",
|
|
@@ -58,10 +58,10 @@
|
|
|
58
58
|
"webpack-log": "^3.0.1"
|
|
59
59
|
},
|
|
60
60
|
"dependencies": {
|
|
61
|
-
"@cocreate/actions": "^1.12.
|
|
62
|
-
"@cocreate/api": "^1.15.
|
|
63
|
-
"@cocreate/element-prototype": "^1.13.
|
|
64
|
-
"@cocreate/observer": "^1.
|
|
65
|
-
"@cocreate/utils": "^1.27.
|
|
61
|
+
"@cocreate/actions": "^1.12.4",
|
|
62
|
+
"@cocreate/api": "^1.15.12",
|
|
63
|
+
"@cocreate/element-prototype": "^1.13.2",
|
|
64
|
+
"@cocreate/observer": "^1.12.0",
|
|
65
|
+
"@cocreate/utils": "^1.27.4"
|
|
66
66
|
}
|
|
67
67
|
}
|
package/src/index.js
CHANGED
|
@@ -71,9 +71,19 @@ async function render({ source, element, selector, data, key, index, currentInde
|
|
|
71
71
|
}
|
|
72
72
|
|
|
73
73
|
if (source) {
|
|
74
|
-
if (!key)
|
|
74
|
+
if (!key) {
|
|
75
75
|
key = source.getAttribute('render') || source.getAttribute('key')
|
|
76
|
+
if (!key) {
|
|
77
|
+
key = data.type
|
|
78
|
+
if (key == 'key')
|
|
79
|
+
key = 'object'
|
|
80
|
+
else if (!key && data.method)
|
|
81
|
+
key = data.method.split('.')[0]
|
|
82
|
+
else if (!key)
|
|
83
|
+
return
|
|
76
84
|
|
|
85
|
+
}
|
|
86
|
+
}
|
|
77
87
|
let sourceData = sources.get(source)
|
|
78
88
|
if (!sourceData) {
|
|
79
89
|
sourceData = { element: source, data }
|
|
@@ -93,18 +103,11 @@ async function render({ source, element, selector, data, key, index, currentInde
|
|
|
93
103
|
remove = remove || data.$filter.remove
|
|
94
104
|
}
|
|
95
105
|
|
|
96
|
-
let type = data.type
|
|
97
|
-
if (!type && data.method) {
|
|
98
|
-
type = data.method.split('.')[0]
|
|
99
|
-
} else if (type == 'key')
|
|
100
|
-
type = 'object'
|
|
101
|
-
|
|
102
|
-
|
|
103
106
|
if (!Array.isArray(element) && !(element instanceof HTMLCollection) && !(element instanceof NodeList))
|
|
104
107
|
element = [element]
|
|
105
108
|
|
|
106
109
|
for (let i = 0; i < element.length; i++) {
|
|
107
|
-
key = element[i].getAttribute('render') || key
|
|
110
|
+
key = element[i].getAttribute('render') || key
|
|
108
111
|
|
|
109
112
|
let renderedNode = renderedNodes.get(element[i])
|
|
110
113
|
if (source) {
|
|
@@ -115,12 +118,12 @@ async function render({ source, element, selector, data, key, index, currentInde
|
|
|
115
118
|
}
|
|
116
119
|
|
|
117
120
|
if (remove) {
|
|
118
|
-
for (let j = 0; j < data[
|
|
121
|
+
for (let j = 0; j < data[key].length; j++) {
|
|
119
122
|
let cloneKey
|
|
120
|
-
if (
|
|
121
|
-
cloneKey = data[
|
|
123
|
+
if (key === 'object') {
|
|
124
|
+
cloneKey = data[key][j]._id;
|
|
122
125
|
} else {
|
|
123
|
-
cloneKey = data[
|
|
126
|
+
cloneKey = data[key][j].name;
|
|
124
127
|
}
|
|
125
128
|
|
|
126
129
|
let clone = renderedNode.clones.get(cloneKey)
|
|
@@ -132,12 +135,12 @@ async function render({ source, element, selector, data, key, index, currentInde
|
|
|
132
135
|
}
|
|
133
136
|
} else if (key || Array.isArray(data)) {
|
|
134
137
|
if (update) {
|
|
135
|
-
for (let j = 0; j < data[
|
|
138
|
+
for (let j = 0; j < data[key].length; j++) {
|
|
136
139
|
let clone
|
|
137
|
-
if (
|
|
138
|
-
clone = renderedNode.clones.get(data[
|
|
140
|
+
if (key === 'object') {
|
|
141
|
+
clone = renderedNode.clones.get(data[key][j]._id);
|
|
139
142
|
} else {
|
|
140
|
-
clone = renderedNode.clones.get(data[
|
|
143
|
+
clone = renderedNode.clones.get(data[key][j].name);
|
|
141
144
|
}
|
|
142
145
|
|
|
143
146
|
if (!currentIndex)
|
|
@@ -145,12 +148,11 @@ async function render({ source, element, selector, data, key, index, currentInde
|
|
|
145
148
|
|
|
146
149
|
if (!clone) return
|
|
147
150
|
|
|
148
|
-
await renderValues(clone, { object: data[
|
|
151
|
+
await renderValues(clone, { object: data[key][j] });
|
|
149
152
|
if (currentIndex >= 0)
|
|
150
153
|
insertElement(renderedNode, clone, index, currentIndex)
|
|
151
154
|
}
|
|
152
155
|
} else {
|
|
153
|
-
|
|
154
156
|
// TODO: if $auto here every subsequent clone will have same value, not replacing here will apply unique value to each clone
|
|
155
157
|
if (key === '$auto')
|
|
156
158
|
key = key.replace(/\$auto/g, uuid.generate(6));
|
|
@@ -209,7 +211,7 @@ async function renderTemplate(template, data, key, index, keyPath) {
|
|
|
209
211
|
|
|
210
212
|
|
|
211
213
|
let isInsert = data.$filter && (data.$filter.create || data.$filter.update)
|
|
212
|
-
if (!isInsert && index
|
|
214
|
+
if (!isInsert && !index || data.$filter.overwrite) {
|
|
213
215
|
for (const [key, element] of template.clones) {
|
|
214
216
|
renderedNodes.delete(element)
|
|
215
217
|
element.remove()
|
|
@@ -300,6 +302,7 @@ async function renderTemplate(template, data, key, index, keyPath) {
|
|
|
300
302
|
|
|
301
303
|
function cloneTemplate(template) {
|
|
302
304
|
let clone = template.element.cloneNode(true);
|
|
305
|
+
let cloneTagName = clone.tagName
|
|
303
306
|
|
|
304
307
|
if (clone.tagName == 'TEMPLATE') {
|
|
305
308
|
clone = template.element.content.firstElementChild
|
|
@@ -316,12 +319,16 @@ function cloneTemplate(template) {
|
|
|
316
319
|
let renderAs = clone.getAttribute('render-as')
|
|
317
320
|
if (renderAs) {
|
|
318
321
|
clone = clone.outerHTML.replace(/\$auto/g, renderAs);
|
|
319
|
-
} else {
|
|
320
|
-
clone = clone.outerHTML;
|
|
321
322
|
}
|
|
322
323
|
|
|
323
324
|
if (typeof clone === 'string') {
|
|
324
|
-
|
|
325
|
+
// TODO: Some elements are only allowed a specific element, need to find these elements and confirm proper rendering.
|
|
326
|
+
let container
|
|
327
|
+
if (cloneTagName === 'TR')
|
|
328
|
+
container = document.createElement('tbody');
|
|
329
|
+
else
|
|
330
|
+
container = document.createElement('div');
|
|
331
|
+
|
|
325
332
|
container.innerHTML = clone;
|
|
326
333
|
clone = container.firstChild
|
|
327
334
|
container.remove()
|
|
@@ -645,9 +652,12 @@ function getRenderValue(node, data, key, renderAs) {
|
|
|
645
652
|
return value
|
|
646
653
|
}
|
|
647
654
|
|
|
648
|
-
async function renderKey(
|
|
655
|
+
async function renderKey(action) {
|
|
649
656
|
// TODO: custom render-keys
|
|
650
|
-
|
|
657
|
+
let element = action.element
|
|
658
|
+
let form = action.form || document
|
|
659
|
+
let params = action.params
|
|
660
|
+
|
|
651
661
|
if (!params)
|
|
652
662
|
params = 'render-key'
|
|
653
663
|
|
|
@@ -676,7 +686,7 @@ async function renderKey(element, params) {
|
|
|
676
686
|
Actions.init({
|
|
677
687
|
name: "renderKey",
|
|
678
688
|
callback: (action) => {
|
|
679
|
-
renderKey(action
|
|
689
|
+
renderKey(action);
|
|
680
690
|
}
|
|
681
691
|
});
|
|
682
692
|
|