neo.mjs 5.2.2 → 5.2.3

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.
@@ -20,9 +20,9 @@ class ServiceWorker extends ServiceBase {
20
20
  */
21
21
  singleton: true,
22
22
  /**
23
- * @member {String} version='5.2.2'
23
+ * @member {String} version='5.2.3'
24
24
  */
25
- version: '5.2.2'
25
+ version: '5.2.3'
26
26
  }
27
27
 
28
28
  /**
@@ -12,18 +12,23 @@ class Page5 extends FormPageContainer {
12
12
  * @protected
13
13
  */
14
14
  className: 'Form.view.pages.Page5',
15
+ /**
16
+ * @member {String} formGroup='page5'
17
+ */
18
+ formGroup: 'page5',
15
19
  /**
16
20
  * @member {Object[]} items
17
21
  */
18
22
  items: [{
19
23
  module : TextField,
20
24
  labelText: 'Page 5 Field 1',
21
- name : 'page5field1',
22
- required : true
25
+ name : 'field1',
26
+ required : true,
27
+ value : 'bar'
23
28
  }, {
24
29
  module : TextField,
25
30
  labelText: 'Page 5 Field 2',
26
- name : 'page5field2'
31
+ name : 'field2'
27
32
  }]
28
33
  }
29
34
  }
@@ -12,18 +12,22 @@ class Page6 extends FormPageContainer {
12
12
  * @protected
13
13
  */
14
14
  className: 'Form.view.pages.Page6',
15
+ /**
16
+ * @member {String} formGroup='page6'
17
+ */
18
+ formGroup: 'page6',
15
19
  /**
16
20
  * @member {Object[]} items
17
21
  */
18
22
  items: [{
19
23
  module : TextField,
20
24
  labelText: 'Page 6 Field 1',
21
- name : 'page6field1',
25
+ name : 'field1',
22
26
  required : true
23
27
  }, {
24
28
  module : TextField,
25
29
  labelText: 'Page 6 Field 2',
26
- name : 'page6field2'
30
+ name : 'field2'
27
31
  }]
28
32
  }
29
33
  }
@@ -20,9 +20,9 @@ class ServiceWorker extends ServiceBase {
20
20
  */
21
21
  singleton: true,
22
22
  /**
23
- * @member {String} version='5.2.2'
23
+ * @member {String} version='5.2.3'
24
24
  */
25
- version: '5.2.2'
25
+ version: '5.2.3'
26
26
  }
27
27
 
28
28
  /**
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "neo.mjs",
3
- "version": "5.2.2",
3
+ "version": "5.2.3",
4
4
  "description": "The webworkers driven UI framework",
5
5
  "type": "module",
6
6
  "repository": {
@@ -237,12 +237,12 @@ const DefaultConfig = {
237
237
  useVdomWorker: true,
238
238
  /**
239
239
  * buildScripts/injectPackageVersion.mjs will update this value
240
- * @default '5.2.2'
240
+ * @default '5.2.3'
241
241
  * @memberOf! module:Neo
242
242
  * @name config.version
243
243
  * @type String
244
244
  */
245
- version: '5.2.2'
245
+ version: '5.2.3'
246
246
  };
247
247
 
248
248
  Object.assign(DefaultConfig, {
@@ -90,13 +90,19 @@ class Container extends BaseContainer {
90
90
  async getValues() {
91
91
  let fields = await this.getFields(),
92
92
  values = {},
93
- key, ns, nsArray, value;
93
+ itemName, key, ns, nsArray, value;
94
94
 
95
95
  fields.forEach(item => {
96
96
  value = item.getValue();
97
97
 
98
98
  if (item.name) {
99
- nsArray = item.name.split('.');
99
+ itemName = item.name;
100
+
101
+ if (item.formGroup) {
102
+ itemName = item.formGroup + '.' + itemName;
103
+ }
104
+
105
+ nsArray = itemName.split('.');
100
106
  key = nsArray.pop();
101
107
  ns = Neo.ns(nsArray, true, values);
102
108
  } else {
@@ -1,4 +1,5 @@
1
- import Component from '../../component/Base.mjs';
1
+ import Component from '../../component/Base.mjs';
2
+ import ComponentManager from '../../manager/Component.mjs';
2
3
 
3
4
  /**
4
5
  * Abstract base class for form fields
@@ -17,12 +18,24 @@ class Base extends Component {
17
18
  * @protected
18
19
  */
19
20
  ntype: 'basefield',
21
+ /**
22
+ * Form groups can get set on any parent component level.
23
+ * An alternative way for using dots in field names.
24
+ * @member {String|null} formGroup_=null
25
+ */
26
+ formGroup_: null,
20
27
  /**
21
28
  * @member {*} value_=null
22
29
  */
23
30
  value_: null
24
31
  }
25
32
 
33
+ /**
34
+ * An internal cache for formGroups of all parent levels
35
+ * @member {String|null} formGroupString=null
36
+ */
37
+ formGroupString = null
38
+
26
39
  /**
27
40
  * Triggered after the value config got changed
28
41
  * @param {*} value
@@ -34,6 +47,34 @@ class Base extends Component {
34
47
  }
35
48
  }
36
49
 
50
+ /**
51
+ * Triggered when accessing the formGroup config
52
+ * @param {String|null} value
53
+ * @returns {String|null} parents
54
+ * @protected
55
+ */
56
+ beforeGetFormGroup(value) {
57
+ let me = this,
58
+ group = [],
59
+ returnValue;
60
+
61
+ if (me.formGroupString) {
62
+ return me.formGroupString;
63
+ }
64
+
65
+ value && group.push(value);
66
+
67
+ ComponentManager.getParents(me).forEach(parent => {
68
+ parent.formGroup && group.push(parent.formGroup)
69
+ });
70
+
71
+ returnValue = group.join('.');
72
+
73
+ me.formGroupString = returnValue;
74
+
75
+ return returnValue;
76
+ }
77
+
37
78
  /**
38
79
  * Override this method as needed
39
80
  * @param {*} value