@cocreate/render 1.22.8 → 1.23.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 CHANGED
@@ -1,3 +1,10 @@
1
+ # [1.23.0](https://github.com/CoCreate-app/CoCreate-render/compare/v1.22.8...v1.23.0) (2023-04-13)
2
+
3
+
4
+ ### Features
5
+
6
+ * render-key supports defing custom attribute by applying attribute name as a param in action. renderKey(customAttr) ([71ec778](https://github.com/CoCreate-app/CoCreate-render/commit/71ec77801d4d5a9b7e752d436352e68ba0e8d8e2))
7
+
1
8
  ## [1.22.8](https://github.com/CoCreate-app/CoCreate-render/compare/v1.22.7...v1.22.8) (2023-04-11)
2
9
 
3
10
 
@@ -11,18 +11,19 @@
11
11
  <body class="padding:20px">
12
12
 
13
13
  <form>
14
- <input render-key="renderKey.name">
15
- <div template_id="renderKey">
16
- <div>This is <b>{{renderKey.name}}</b></div>
17
- <p>This {{renderKey.name}}</p>
18
- <input value="{{renderKey.name}}">
19
- <button actions='renderKey' href="https://{{renderKey.name}}/admin/signin.html">Create Form</button>
14
+ <input render-key="name" value="test">
15
+ <input render-key="domain" value="test.com">
16
+ <div template_id="render-key">
17
+ <div>This is <b>{{render-key.name}}</b></div>
18
+ <p>This {{render-key.name}}</p>
19
+ <input value="{{render-key.name}}">
20
+ <input value="{{render-key.domain}}">
21
+ <button actions='renderKey'>Create Form</button>
20
22
  </div>
21
23
  </form>
22
24
 
23
25
  <!-- <script src="../dist/CoCreate-render-key.js"></script> -->
24
- <script src="https://cdn.cocreate.app/latest/CoCreate.min.js"></script>
25
- <!-- <script src="https://cdn.cocreate.app/1.49.2/CoCreate.min.js"></script> -->
26
+ <script src="https://cdn.cocreate.app/latest/CoCreate.min.js"></script>
26
27
 
27
28
  </body>
28
29
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cocreate/render",
3
- "version": "1.22.8",
3
+ "version": "1.23.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",
package/src/index.js CHANGED
@@ -2,7 +2,7 @@
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