neo.mjs 5.2.1 → 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.1'
23
+ * @member {String} version='5.2.3'
24
24
  */
25
- version: '5.2.1'
25
+ version: '5.2.3'
26
26
  }
27
27
 
28
28
  /**
@@ -66,7 +66,11 @@ class FormContainer extends BaseFormContainer {
66
66
  {module: () => import('./pages/Page7.mjs')},
67
67
  {module: () => import('./pages/Page8.mjs')},
68
68
  {module: () => import('./pages/Page9.mjs')},
69
- {module: () => import('./pages/Page10.mjs')}
69
+ {module: () => import('./pages/Page10.mjs')},
70
+ {module: () => import('./pages/Page11.mjs')},
71
+ {module: () => import('./pages/Page12.mjs')},
72
+ {module: () => import('./pages/Page13.mjs')},
73
+ {module: () => import('./pages/Page14.mjs')}
70
74
  ]
71
75
  }, {
72
76
  module: Toolbar,
@@ -0,0 +1,32 @@
1
+ import FormPageContainer from '../FormPageContainer.mjs';
2
+ import TextField from '../../../../src/form/field/Text.mjs';
3
+
4
+ /**
5
+ * @class Form.view.pages.Page11
6
+ * @extends Form.view.FormPageContainer
7
+ */
8
+ class Page11 extends FormPageContainer {
9
+ static config = {
10
+ /**
11
+ * @member {String} className='Form.view.pages.Page11'
12
+ * @protected
13
+ */
14
+ className: 'Form.view.pages.Page11',
15
+ /**
16
+ * @member {Object[]} items
17
+ */
18
+ items: [{
19
+ module : TextField,
20
+ labelText: 'Page 11 Field 1',
21
+ name : 'page11field1'
22
+ }, {
23
+ module : TextField,
24
+ labelText: 'Page 11 Field 2',
25
+ name : 'page11field2'
26
+ }]
27
+ }
28
+ }
29
+
30
+ Neo.applyClassConfig(Page11);
31
+
32
+ export default Page11;
@@ -0,0 +1,32 @@
1
+ import FormPageContainer from '../FormPageContainer.mjs';
2
+ import TextField from '../../../../src/form/field/Text.mjs';
3
+
4
+ /**
5
+ * @class Form.view.pages.Page12
6
+ * @extends Form.view.FormPageContainer
7
+ */
8
+ class Page12 extends FormPageContainer {
9
+ static config = {
10
+ /**
11
+ * @member {String} className='Form.view.pages.Page12'
12
+ * @protected
13
+ */
14
+ className: 'Form.view.pages.Page12',
15
+ /**
16
+ * @member {Object[]} items
17
+ */
18
+ items: [{
19
+ module : TextField,
20
+ labelText: 'Page 12 Field 1',
21
+ name : 'page12field1'
22
+ }, {
23
+ module : TextField,
24
+ labelText: 'Page 12 Field 2',
25
+ name : 'page12field2'
26
+ }]
27
+ }
28
+ }
29
+
30
+ Neo.applyClassConfig(Page12);
31
+
32
+ export default Page12;
@@ -0,0 +1,32 @@
1
+ import FormPageContainer from '../FormPageContainer.mjs';
2
+ import TextField from '../../../../src/form/field/Text.mjs';
3
+
4
+ /**
5
+ * @class Form.view.pages.Page13
6
+ * @extends Form.view.FormPageContainer
7
+ */
8
+ class Page13 extends FormPageContainer {
9
+ static config = {
10
+ /**
11
+ * @member {String} className='Form.view.pages.Page13'
12
+ * @protected
13
+ */
14
+ className: 'Form.view.pages.Page13',
15
+ /**
16
+ * @member {Object[]} items
17
+ */
18
+ items: [{
19
+ module : TextField,
20
+ labelText: 'Page 13 Field 1',
21
+ name : 'page13field1'
22
+ }, {
23
+ module : TextField,
24
+ labelText: 'Page 13 Field 2',
25
+ name : 'page13field2'
26
+ }]
27
+ }
28
+ }
29
+
30
+ Neo.applyClassConfig(Page13);
31
+
32
+ export default Page13;
@@ -0,0 +1,32 @@
1
+ import FormPageContainer from '../FormPageContainer.mjs';
2
+ import TextField from '../../../../src/form/field/Text.mjs';
3
+
4
+ /**
5
+ * @class Form.view.pages.Page14
6
+ * @extends Form.view.FormPageContainer
7
+ */
8
+ class Page14 extends FormPageContainer {
9
+ static config = {
10
+ /**
11
+ * @member {String} className='Form.view.pages.Page14'
12
+ * @protected
13
+ */
14
+ className: 'Form.view.pages.Page14',
15
+ /**
16
+ * @member {Object[]} items
17
+ */
18
+ items: [{
19
+ module : TextField,
20
+ labelText: 'Page 14 Field 1',
21
+ name : 'page14field1'
22
+ }, {
23
+ module : TextField,
24
+ labelText: 'Page 14 Field 2',
25
+ name : 'page14field2'
26
+ }]
27
+ }
28
+ }
29
+
30
+ Neo.applyClassConfig(Page14);
31
+
32
+ export default Page14;
@@ -1,5 +1,5 @@
1
+ import CheckBox from '../../../../src/form/field/CheckBox.mjs';
1
2
  import FormPageContainer from '../FormPageContainer.mjs';
2
- import TextField from '../../../../src/form/field/Text.mjs';
3
3
 
4
4
  /**
5
5
  * @class Form.view.pages.Page4
@@ -12,18 +12,36 @@ class Page4 extends FormPageContainer {
12
12
  * @protected
13
13
  */
14
14
  className: 'Form.view.pages.Page4',
15
+ /**
16
+ * @member {Object} itemDefaults
17
+ */
18
+ itemDefaults: {
19
+ module : CheckBox,
20
+ labelText : null,
21
+ labelWidth: 70,
22
+ name : 'fruits'
23
+ },
15
24
  /**
16
25
  * @member {Object[]} items
17
26
  */
18
27
  items: [{
19
- module : TextField,
20
- labelText: 'Page 4 Field 1',
21
- name : 'page4field1',
22
- required : true
28
+ labelText : 'Fruits',
29
+ value : 'apple',
30
+ valueLabelText: 'Apple'
31
+ }, {
32
+ value : 'banana',
33
+ valueLabelText: 'Banana'
34
+ }, {
35
+ checked : true,
36
+ value : 'lemon',
37
+ valueLabelText: 'Lemon'
38
+ }, {
39
+ checked : true,
40
+ value : 'orange',
41
+ valueLabelText: 'Orange'
23
42
  }, {
24
- module : TextField,
25
- labelText: 'Page 4 Field 2',
26
- name : 'page4field2'
43
+ value : 'strawberry',
44
+ valueLabelText: 'Strawberry'
27
45
  }]
28
46
  }
29
47
  }
@@ -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.1'
23
+ * @member {String} version='5.2.3'
24
24
  */
25
- version: '5.2.1'
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.1",
3
+ "version": "5.2.3",
4
4
  "description": "The webworkers driven UI framework",
5
5
  "type": "module",
6
6
  "repository": {
@@ -7,13 +7,18 @@
7
7
  {"id": 3, "cardIndex": 1, "isHeader": false, "isValid": null, "name": "Page 2"},
8
8
  {"id": 4, "cardIndex": 2, "isHeader": false, "isValid": null, "name": "Page 3"},
9
9
  {"id": 5, "cardIndex": null, "isHeader": true, "isValid": null, "name": "2. Personal data"},
10
- {"id": 6, "cardIndex": 3, "isHeader": false, "isValid": null, "name": "Page 4"},
10
+ {"id": 6, "cardIndex": 3, "isHeader": false, "isValid": null, "name": "CheckBoxes"},
11
11
  {"id": 7, "cardIndex": 4, "isHeader": false, "isValid": null, "name": "Page 5"},
12
12
  {"id": 8, "cardIndex": 5, "isHeader": false, "isValid": null, "name": "Page 6"},
13
13
  {"id": 9, "cardIndex": 6, "isHeader": false, "isValid": null, "name": "Page 7"},
14
14
  {"id": 10, "cardIndex": null, "isHeader": true, "isValid": null, "name": "3. More data"},
15
15
  {"id": 11, "cardIndex": 7, "isHeader": false, "isValid": null, "name": "Page 8"},
16
16
  {"id": 12, "cardIndex": 8, "isHeader": false, "isValid": null, "name": "Page 9"},
17
- {"id": 13, "cardIndex": 9, "isHeader": false, "isValid": null, "name": "Page 10"}
17
+ {"id": 13, "cardIndex": 9, "isHeader": false, "isValid": null, "name": "Page 10"},
18
+ {"id": 14, "cardIndex": null, "isHeader": true, "isValid": null, "name": "3. Optional data"},
19
+ {"id": 15, "cardIndex": 14, "isHeader": false, "isValid": null, "name": "Page 11"},
20
+ {"id": 16, "cardIndex": 14, "isHeader": false, "isValid": null, "name": "Page 12"},
21
+ {"id": 17, "cardIndex": 14, "isHeader": false, "isValid": null, "name": "Page 13"},
22
+ {"id": 18, "cardIndex": 14, "isHeader": false, "isValid": null, "name": "Page 14"}
18
23
  ]
19
24
  }
@@ -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.1'
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.1'
245
+ version: '5.2.3'
246
246
  };
247
247
 
248
248
  Object.assign(DefaultConfig, {
@@ -84,37 +84,42 @@ class Container extends BaseContainer {
84
84
  return fields;
85
85
  }
86
86
 
87
- /**
88
- * @returns {Promise<Object>}
89
- */
90
- async getSubmitValues() {
91
- let fields = await this.getFields(),
92
- values = {};
93
-
94
- fields.forEach(item => {
95
- values[item.name || item.id] = item.getSubmitValue();
96
- });
97
-
98
- return values;
99
- }
100
-
101
87
  /**
102
88
  * @returns {Promise<Object>}
103
89
  */
104
90
  async getValues() {
105
91
  let fields = await this.getFields(),
106
92
  values = {},
107
- key, ns, nsArray;
93
+ itemName, key, ns, nsArray, value;
108
94
 
109
95
  fields.forEach(item => {
96
+ value = item.getValue();
97
+
110
98
  if (item.name) {
111
- nsArray = item.name.split('.');
99
+ itemName = item.name;
100
+
101
+ if (item.formGroup) {
102
+ itemName = item.formGroup + '.' + itemName;
103
+ }
104
+
105
+ nsArray = itemName.split('.');
112
106
  key = nsArray.pop();
113
107
  ns = Neo.ns(nsArray, true, values);
108
+ } else {
109
+ key = item.id;
110
+ ns = values;
111
+ }
112
+
113
+ if (Object.hasOwn(ns, key)) {
114
+ if (ns[key] === null) {
115
+ ns[key] = []
116
+ } else if (!Array.isArray(ns[key])) {
117
+ ns[key] = [ns[key]]
118
+ }
114
119
 
115
- ns[key] = item.value;
120
+ value !== null && ns[key].unshift(value)
116
121
  } else {
117
- values[item.id] = item.value;
122
+ ns[key] = value;
118
123
  }
119
124
  });
120
125
 
@@ -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
@@ -48,9 +89,9 @@ class Base extends Component {
48
89
  }
49
90
 
50
91
  /**
51
- * @returns {*} this.value
92
+ * @returns {*}
52
93
  */
53
- getSubmitValue() {
94
+ getValue() {
54
95
  return this.value;
55
96
  }
56
97
 
@@ -63,9 +104,9 @@ class Base extends Component {
63
104
 
64
105
  /**
65
106
  * Resets the field to a new value or null
66
- * @param {*} [value=null]
107
+ * @param {*} value=null
67
108
  */
68
- reset(value) {
109
+ reset(value=null) {
69
110
  this.value = value;
70
111
  }
71
112
 
@@ -316,6 +316,13 @@ class CheckBox extends Base {
316
316
  return `${this.id}__label`;
317
317
  }
318
318
 
319
+ /**
320
+ * @returns {String|null}
321
+ */
322
+ getValue() {
323
+ return this.checked ? this.value : null
324
+ }
325
+
319
326
  /**
320
327
  * @returns {String}
321
328
  */
@@ -356,7 +356,7 @@ class Select extends Picker {
356
356
  /**
357
357
  * @returns {Number|String}
358
358
  */
359
- getSubmitValue() {
359
+ getValue() {
360
360
  let me = this;
361
361
 
362
362
  return me.record?.[me.valueField] || me.value