@cocreate/render 1.12.1 → 1.13.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 +21 -0
- package/package.json +1 -1
- package/src/index.css +1 -0
- package/src/index.js +38 -20
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,24 @@
|
|
|
1
|
+
# [1.13.0](https://github.com/CoCreate-app/CoCreate-render/compare/v1.12.3...v1.13.0) (2022-08-23)
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
### Features
|
|
5
|
+
|
|
6
|
+
* add a map containing rendered keys to templates, if key not rendered clone template and render key ([0fd8cfd](https://github.com/CoCreate-app/CoCreate-render/commit/0fd8cfd3695280e19b6e518fd45d873d1637ed6e))
|
|
7
|
+
|
|
8
|
+
## [1.12.3](https://github.com/CoCreate-app/CoCreate-render/compare/v1.12.2...v1.12.3) (2022-08-19)
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
### Bug Fixes
|
|
12
|
+
|
|
13
|
+
* add css file for class template display none ([4cfa7ee](https://github.com/CoCreate-app/CoCreate-render/commit/4cfa7ee8a6a1d4105f9144ce713a3435db4090f6))
|
|
14
|
+
|
|
15
|
+
## [1.12.2](https://github.com/CoCreate-app/CoCreate-render/compare/v1.12.1...v1.12.2) (2022-08-01)
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
### Bug Fixes
|
|
19
|
+
|
|
20
|
+
* renderKey action does not work with renderMap. added isRenderKey to skip renderMap as temp solution ([7e90de8](https://github.com/CoCreate-app/CoCreate-render/commit/7e90de81b596154d3ab0b36e7326dfb8e67e6684))
|
|
21
|
+
|
|
1
22
|
## [1.12.1](https://github.com/CoCreate-app/CoCreate-render/compare/v1.12.0...v1.12.1) (2022-07-31)
|
|
2
23
|
|
|
3
24
|
|
package/package.json
CHANGED
package/src/index.css
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.template {display: none !important;}
|
package/src/index.js
CHANGED
|
@@ -3,12 +3,13 @@ import action from '@cocreate/actions';
|
|
|
3
3
|
import observer from '@cocreate/observer';
|
|
4
4
|
import uuid from '@cocreate/uuid';
|
|
5
5
|
import { queryDocumentSelector } from '@cocreate/utils';
|
|
6
|
+
import './index.css';
|
|
6
7
|
// import { getValue } from '../../CoCreate-elements/src/getValue';
|
|
7
8
|
// import api from '@cocreate/api';
|
|
8
9
|
|
|
9
10
|
const CoCreateRender = {
|
|
10
11
|
// Can be called from crud getObjectValueByPath
|
|
11
|
-
__getValueFromObject
|
|
12
|
+
__getValueFromObject: function(json, path) {
|
|
12
13
|
try {
|
|
13
14
|
if(typeof json == 'undefined' || !path)
|
|
14
15
|
return false;
|
|
@@ -113,6 +114,7 @@ const CoCreateRender = {
|
|
|
113
114
|
|
|
114
115
|
render: function(template, data) {
|
|
115
116
|
const self = this;
|
|
117
|
+
const templateId = template.getAttribute('templateId')
|
|
116
118
|
let type = '';
|
|
117
119
|
let arrayData = data;
|
|
118
120
|
|
|
@@ -131,14 +133,20 @@ const CoCreateRender = {
|
|
|
131
133
|
}
|
|
132
134
|
|
|
133
135
|
let renderKey = template.getAttribute('render-key') || type;
|
|
134
|
-
|
|
136
|
+
|
|
137
|
+
if (!template.renderedKeys)
|
|
138
|
+
template.renderedKeys = new Map()
|
|
139
|
+
|
|
135
140
|
if (isRenderObject && type) {
|
|
136
141
|
let Data = self.__getValueFromObject(arrayData, type);
|
|
137
142
|
let array = self.isRenderObject(Data, renderKey)
|
|
138
143
|
for (let item of array) {
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
144
|
+
if (!template.renderedKeys.has(item[renderKey].key)){
|
|
145
|
+
template.renderedKeys.set(item[renderKey].key, '')
|
|
146
|
+
let cloneEl = this.cloneEl(template);
|
|
147
|
+
self.setValue([cloneEl], item, renderArray, renderKey);
|
|
148
|
+
template.insertAdjacentElement('beforebegin', cloneEl);
|
|
149
|
+
}
|
|
142
150
|
}
|
|
143
151
|
} else {
|
|
144
152
|
|
|
@@ -153,10 +161,14 @@ const CoCreateRender = {
|
|
|
153
161
|
|
|
154
162
|
if(type && Array.isArray(arrayData)) {
|
|
155
163
|
arrayData.forEach((item) => {
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
164
|
+
if (!template.renderedKeys.has(item)){
|
|
165
|
+
template.renderedKeys.set(item, '')
|
|
166
|
+
|
|
167
|
+
let cloneEl = this.cloneEl(template);
|
|
168
|
+
let object = self.__createObject(item, renderKey);
|
|
169
|
+
self.setValue([cloneEl], object, renderArray, renderKey);
|
|
170
|
+
template.insertAdjacentElement('beforebegin', cloneEl);
|
|
171
|
+
}
|
|
160
172
|
});
|
|
161
173
|
}
|
|
162
174
|
}
|
|
@@ -197,6 +209,10 @@ const CoCreateRender = {
|
|
|
197
209
|
|
|
198
210
|
setValue: function(els, data, renderArray, renderKey){
|
|
199
211
|
if (!data) return;
|
|
212
|
+
let isRenderKey
|
|
213
|
+
if (data.renderKey)
|
|
214
|
+
isRenderKey = true
|
|
215
|
+
|
|
200
216
|
const that = this;
|
|
201
217
|
Array.from(els).forEach(el => {
|
|
202
218
|
let updateData;
|
|
@@ -205,16 +221,16 @@ const CoCreateRender = {
|
|
|
205
221
|
if (el.hasAttribute('render-clone')) {
|
|
206
222
|
el.renderData = {...data}
|
|
207
223
|
}
|
|
208
|
-
if (el.renderMap) {
|
|
224
|
+
if (el.renderMap && !isRenderKey) {
|
|
209
225
|
let placeholder = el.renderMap.get(el)
|
|
210
226
|
if (placeholder){
|
|
211
227
|
let valueType = el.getAttribute('value-type')
|
|
212
228
|
renderKey = placeholder.renderKey
|
|
213
229
|
renderArray = placeholder.renderArray
|
|
214
|
-
if (renderArray)
|
|
215
|
-
|
|
230
|
+
if (renderArray && Array.isArray(data[renderArray]))
|
|
231
|
+
updateData = data[renderArray][0]
|
|
216
232
|
if (renderKey)
|
|
217
|
-
|
|
233
|
+
updateData = {[renderKey]: updateData}
|
|
218
234
|
let textContent = placeholder.placeholder
|
|
219
235
|
let text = that.__replaceValue(updateData, textContent, renderKey, valueType);
|
|
220
236
|
if (text && text != el.renderedValue)
|
|
@@ -225,20 +241,19 @@ const CoCreateRender = {
|
|
|
225
241
|
Array.from(el.attributes).forEach(attr=>{
|
|
226
242
|
let attr_name = attr.name.toLowerCase();
|
|
227
243
|
let attrValue = attr.value;
|
|
228
|
-
|
|
229
244
|
let placeholder
|
|
230
245
|
if (attr.renderMap)
|
|
231
246
|
placeholder = attr.renderMap.get(attr)
|
|
232
247
|
else
|
|
233
248
|
that.renderMap(attr, attr.value, renderArray, renderKey)
|
|
234
249
|
|
|
235
|
-
if(placeholder){
|
|
250
|
+
if(placeholder && !isRenderKey){
|
|
236
251
|
let updateData = data;
|
|
237
252
|
// let oldValue = attrValue
|
|
238
253
|
let temp = placeholder.placeholder;
|
|
239
254
|
renderKey = placeholder.renderKey
|
|
240
255
|
renderArray = placeholder.renderArray
|
|
241
|
-
if (renderArray)
|
|
256
|
+
if (renderArray && Array.isArray(data[renderArray]))
|
|
242
257
|
updateData = data[renderArray][0]
|
|
243
258
|
if (renderKey)
|
|
244
259
|
updateData = {[renderKey]: updateData}
|
|
@@ -261,7 +276,7 @@ const CoCreateRender = {
|
|
|
261
276
|
if(el.childNodes.length > 0) {
|
|
262
277
|
that.setValue(el.childNodes, updateData || data, renderArray, renderKey);
|
|
263
278
|
}
|
|
264
|
-
if (el.classList.contains('template') && !el.hasAttribute('template_id')) {
|
|
279
|
+
if ((el.tagName == 'TEMPLATE' || el.classList.contains('template')) && !el.hasAttribute('template_id')) {
|
|
265
280
|
that.render(el, data);
|
|
266
281
|
}
|
|
267
282
|
// if (el.hasAttribute('render-array') || el.hasAttribute('render-object')) {
|
|
@@ -278,12 +293,12 @@ const CoCreateRender = {
|
|
|
278
293
|
let textContent, placeholder, text;
|
|
279
294
|
if (el.renderMap)
|
|
280
295
|
placeholder = el.renderMap.get(el)
|
|
281
|
-
if (placeholder) {
|
|
296
|
+
if (placeholder && !isRenderKey) {
|
|
282
297
|
let updateData = data;
|
|
283
298
|
textContent = placeholder.placeholder
|
|
284
299
|
renderKey = placeholder.renderKey
|
|
285
300
|
renderArray = placeholder.renderArray
|
|
286
|
-
if (renderArray)
|
|
301
|
+
if (renderArray && Array.isArray(data[renderArray]))
|
|
287
302
|
updateData = data[renderArray][0]
|
|
288
303
|
if (renderKey)
|
|
289
304
|
updateData = {[renderKey]: updateData}
|
|
@@ -291,7 +306,8 @@ const CoCreateRender = {
|
|
|
291
306
|
}
|
|
292
307
|
if (!placeholder && !text) {
|
|
293
308
|
textContent = el.textContent;
|
|
294
|
-
|
|
309
|
+
if (!el.renderMap)
|
|
310
|
+
that.renderMap(el, textContent, renderArray, renderKey)
|
|
295
311
|
text = that.__replaceValue(data, textContent, renderKey, valueType);
|
|
296
312
|
}
|
|
297
313
|
|
|
@@ -334,6 +350,8 @@ const CoCreateRender = {
|
|
|
334
350
|
if (selector) {
|
|
335
351
|
let template = queryDocumentSelector(selector);
|
|
336
352
|
if (!template) return;
|
|
353
|
+
if (template.tagNmae === 'TEMPLATE')
|
|
354
|
+
template = template.childNodes;
|
|
337
355
|
template.dataOriginal = {...data}
|
|
338
356
|
if (template.classList.contains('template')) {
|
|
339
357
|
this.render(template, data);
|