@@ -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,10 +103,6 @@ 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 || data . method . split ( '.' ) [ 0 ]
97
- if ( type == 'key' )
98
- type = 'object'
99
-
100
106
if ( ! Array . isArray ( element ) && ! ( element instanceof HTMLCollection ) && ! ( element instanceof NodeList ) )
101
107
element = [ element ]
102
108
@@ -147,7 +153,6 @@ async function render({ source, element, selector, data, key, index, currentInde
147
153
insertElement ( renderedNode , clone , index , currentIndex )
148
154
}
149
155
} else {
150
-
151
156
// TODO: if $auto here every subsequent clone will have same value, not replacing here will apply unique value to each clone
152
157
if ( key === '$auto' )
153
158
key = key . replace ( / \$ a u t o / g, uuid . generate ( 6 ) ) ;
@@ -297,6 +302,7 @@ async function renderTemplate(template, data, key, index, keyPath) {
297
302
298
303
function cloneTemplate ( template ) {
299
304
let clone = template . element . cloneNode ( true ) ;
305
+ let cloneTagName = clone . tagName
300
306
301
307
if ( clone . tagName == 'TEMPLATE' ) {
302
308
clone = template . element . content . firstElementChild
@@ -313,12 +319,16 @@ function cloneTemplate(template) {
313
319
let renderAs = clone . getAttribute ( 'render-as' )
314
320
if ( renderAs ) {
315
321
clone = clone . outerHTML . replace ( / \$ a u t o / g, renderAs ) ;
316
- } else {
317
- clone = clone . outerHTML ;
318
322
}
319
323
320
324
if ( typeof clone === 'string' ) {
321
- let container = document . createElement ( 'tbody' ) ;
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
+
322
332
container . innerHTML = clone ;
323
333
clone = container . firstChild
324
334
container . remove ( )
0 commit comments