2
2
import action from '@cocreate/actions' ;
3
3
import observer from '@cocreate/observer' ;
4
4
import uuid from '@cocreate/uuid' ;
5
- import { queryDocumentSelector , getValueFromObject } from '@cocreate/utils' ;
5
+ import { queryDocumentSelector , getValueFromObject , dotNotationToObject } from '@cocreate/utils' ;
6
6
import '@cocreate/element-prototype' ;
7
7
import './index.css' ;
8
8
// import api from '@cocreate/api';
@@ -415,14 +415,31 @@ const CoCreateRender = {
415
415
416
416
} ;
417
417
418
- function renderKey ( element ) {
418
+ function renderKey ( element , params ) {
419
+ // ToDo: custom render-keys
419
420
const form = element . closest ( "form" ) || document ;
420
- let data = CoCreate . api . getFormData ( 'render-key' , 'renderKey' , form ) ;
421
-
422
- CoCreateRender . data ( {
423
- selector : "[template='renderKey']" ,
424
- data : { renderKey : data }
425
- } ) ;
421
+ if ( ! params )
422
+ params = 'render-key'
423
+
424
+ let data = { }
425
+ let selector = `[${ params } ]`
426
+ let elements = form . querySelectorAll ( selector ) ;
427
+ for ( let el of elements ) {
428
+ let attribute = el . getAttribute ( params )
429
+ if ( attribute )
430
+ data [ attribute ] = el . getValue ( )
431
+ }
432
+ data = dotNotationToObject ( data )
433
+ let renderData = { data : { [ params ] : data } }
434
+
435
+ let templateSelector = `[template_id='${ params } ']`
436
+ let template = document . querySelectorAll ( templateSelector ) ;
437
+ if ( template )
438
+ renderData . elements = template
439
+ else
440
+ renderData . selector = `[template='${ params } ']`
441
+
442
+ CoCreateRender . data ( renderData ) ;
426
443
427
444
document . dispatchEvent ( new CustomEvent ( 'renderKey' , {
428
445
detail : { data }
@@ -431,9 +448,8 @@ function renderKey(element) {
431
448
432
449
action . init ( {
433
450
name : "renderKey" ,
434
- endEvent : "renderKey" ,
435
- callback : ( btn , data ) => {
436
- renderKey ( btn ) ;
451
+ callback : ( btn , params ) => {
452
+ renderKey ( btn , params ) ;
437
453
}
438
454
} ) ;
439
455
0 commit comments