neo.mjs 5.3.16 → 5.4.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.
@@ -20,9 +20,9 @@ class ServiceWorker extends ServiceBase {
20
20
  */
21
21
  singleton: true,
22
22
  /**
23
- * @member {String} version='5.3.16'
23
+ * @member {String} version='5.4.0'
24
24
  */
25
- version: '5.3.16'
25
+ version: '5.4.0'
26
26
  }
27
27
 
28
28
  /**
@@ -1,5 +1,6 @@
1
1
  import FormPageContainer from '../FormPageContainer.mjs';
2
- import TextField from '../../../../src/form/field/Text.mjs';
2
+ import HiddenField from '../../../../src/form/field/Hidden.mjs';
3
+ import Label from '../../../../src/component/Label.mjs';
3
4
 
4
5
  /**
5
6
  * @class Form.view.pages.Page9
@@ -12,18 +13,24 @@ class Page9 extends FormPageContainer {
12
13
  * @protected
13
14
  */
14
15
  className: 'Form.view.pages.Page9',
16
+ /**
17
+ * @member {String} formGroup='page9'
18
+ */
19
+ formGroup: 'page9',
15
20
  /**
16
21
  * @member {Object[]} items
17
22
  */
18
23
  items: [{
19
- module : TextField,
20
- labelText: 'Page 9 Field 1',
21
- name : 'page9field1',
22
- required : true
24
+ module: Label,
25
+ text : 'Hidden fields will not get mounted. Inspect the DOM.'
26
+ }, {
27
+ module: HiddenField,
28
+ name : 'field1',
29
+ value : 'foo'
23
30
  }, {
24
- module : TextField,
25
- labelText: 'Page 9 Field 2',
26
- name : 'page9field2'
31
+ module: HiddenField,
32
+ name : 'field2',
33
+ value : 'bar'
27
34
  }]
28
35
  }
29
36
  }
@@ -20,9 +20,9 @@ class ServiceWorker extends ServiceBase {
20
20
  */
21
21
  singleton: true,
22
22
  /**
23
- * @member {String} version='5.3.16'
23
+ * @member {String} version='5.4.0'
24
24
  */
25
- version: '5.3.16'
25
+ version: '5.4.0'
26
26
  }
27
27
 
28
28
  /**
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "neo.mjs",
3
- "version": "5.3.16",
3
+ "version": "5.4.0",
4
4
  "description": "The webworkers driven UI framework",
5
5
  "type": "module",
6
6
  "repository": {
@@ -56,8 +56,8 @@
56
56
  "neo-jsdoc": "^1.0.1",
57
57
  "neo-jsdoc-x": "^1.0.5",
58
58
  "postcss": "^8.4.21",
59
- "sass": "^1.60.0",
60
- "webpack": "^5.77.0",
59
+ "sass": "^1.61.0",
60
+ "webpack": "^5.78.0",
61
61
  "webpack-cli": "^5.0.1",
62
62
  "webpack-dev-server": "4.13.2",
63
63
  "webpack-hook-plugin": "^1.0.7",
@@ -13,7 +13,7 @@
13
13
  {"id": 9, "cardIndex": 6, "isHeader": false, "isValid": null, "name": "Fieldsets"},
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": "NumberFields"},
16
- {"id": 12, "cardIndex": 8, "isHeader": false, "isValid": null, "name": "Page 9"},
16
+ {"id": 12, "cardIndex": 8, "isHeader": false, "isValid": null, "name": "HiddenFields"},
17
17
  {"id": 13, "cardIndex": 9, "isHeader": false, "isValid": null, "name": "Page 10"},
18
18
  {"id": 14, "cardIndex": null, "isHeader": true, "isValid": null, "name": "3. Optional data"},
19
19
  {"id": 15, "cardIndex": 10, "isHeader": false, "isValid": null, "name": "Page 11"},
@@ -237,12 +237,12 @@ const DefaultConfig = {
237
237
  useVdomWorker: true,
238
238
  /**
239
239
  * buildScripts/injectPackageVersion.mjs will update this value
240
- * @default '5.3.16'
240
+ * @default '5.4.0'
241
241
  * @memberOf! module:Neo
242
242
  * @name config.version
243
243
  * @type String
244
244
  */
245
- version: '5.3.16'
245
+ version: '5.4.0'
246
246
  };
247
247
 
248
248
  Object.assign(DefaultConfig, {
@@ -1,12 +1,12 @@
1
- import Container from '../container/Base.mjs';
2
- import Legend from '../component/Legend.mjs';
3
- import NeoArray from '../util/Array.mjs';
1
+ import FormContainer from '../form/Container.mjs';
2
+ import Legend from '../component/Legend.mjs';
3
+ import NeoArray from '../util/Array.mjs';
4
4
 
5
5
  /**
6
6
  * @class Neo.form.Fieldset
7
- * @extends Neo.container.Base
7
+ * @extends Neo.form.Container
8
8
  */
9
- class Fieldset extends Container {
9
+ class Fieldset extends FormContainer {
10
10
  static config = {
11
11
  /**
12
12
  * @member {String} className='Neo.form.Fieldset'
@@ -67,9 +67,9 @@ class Fieldset extends Container {
67
67
  */
68
68
  title_: '',
69
69
  /**
70
- * @member {Object} _vdom={tag:'fieldset',cn:[]}
70
+ * @member {Object} vdom={tag:'fieldset',cn:[]}
71
71
  */
72
- _vdom:
72
+ vdom:
73
73
  {tag: 'fieldset', cn: []}
74
74
  }
75
75
 
@@ -0,0 +1,28 @@
1
+ import Base from './Base.mjs';
2
+
3
+ /**
4
+ * @class Neo.form.field.Hidden
5
+ * @extends Neo.form.field.Base
6
+ */
7
+ class Hidden extends Base {
8
+ static config = {
9
+ /**
10
+ * @member {String} className='Neo.form.field.Hidden'
11
+ * @protected
12
+ */
13
+ className: 'Neo.form.field.Hidden',
14
+ /**
15
+ * @member {String} ntype='hiddenfield'
16
+ * @protected
17
+ */
18
+ ntype: 'hiddenfield',
19
+ /**
20
+ * @member {Boolean} hidden=true
21
+ */
22
+ hidden: true
23
+ }
24
+ }
25
+
26
+ Neo.applyClassConfig(Hidden);
27
+
28
+ export default Hidden;
@@ -32,6 +32,20 @@ class Number extends Text {
32
32
  * @member {String[]} baseCls=['neo-numberfield','neo-textfield']
33
33
  */
34
34
  baseCls: ['neo-numberfield', 'neo-textfield'],
35
+ /**
36
+ * data passes maxLength, minLength & valueLength properties
37
+ * @member {Function} errorTextMaxValue=data=>`Max value violation: ${data.value} / ${data.maxValue}`
38
+ */
39
+ errorTextMaxValue: data => `Max value violation: ${data.value} / ${data.maxValue}`,
40
+ /**
41
+ * data passes maxLength, minLength & valueLength properties
42
+ * @member {Function} errorTextMinValue=data=>`Min value violation: ${data.value} / ${data.minValue}`
43
+ */
44
+ errorTextMinValue: data => `Min value violation: ${data.value} / ${data.minValue}`,
45
+ /**
46
+ * @member {String} errorTextStepSize='Required'
47
+ */
48
+ errorTextStepSize: data => `step-size violation: ${data.value} / ${data.stepSize}`,
35
49
  /**
36
50
  * @member {Number[]|null} excluded=null
37
51
  */
@@ -322,6 +336,47 @@ class Number extends Text {
322
336
 
323
337
  me.triggers = triggers;
324
338
  }
339
+
340
+ /**
341
+ * Checks for client-side field errors
342
+ * @param {Boolean} silent=true
343
+ * @returns {Boolean} Returns true in case there are no client-side errors
344
+ */
345
+ validate(silent=true) {
346
+ let me = this,
347
+ errorField = silent ? '_error' : 'error',
348
+ value = me.value,
349
+ isNumber = Neo.isNumber(value),
350
+ maxValue = me.maxValue,
351
+ minValue = me.minValue,
352
+ stepSize = me.stepSize,
353
+ returnValue = true,
354
+ errorParam = {maxValue, minValue, stepSize, value};
355
+
356
+ if (!silent) {
357
+ // in case we manually call validate(false) on a form or field before it is mounted, we do want to see errors.
358
+ me.clean = false;
359
+ }
360
+
361
+ if (Neo.isNumber(maxValue) && isNumber && value > maxValue) {
362
+ me[errorField] = me.errorTextMaxValue(errorParam);
363
+ returnValue = false;
364
+ } else if (Neo.isNumber(minValue) && isNumber && value < minValue) {
365
+ me[errorField] = me.errorTextMinValue(errorParam);
366
+ returnValue = false;
367
+ } else if (value % me.stepSize !== 0) {
368
+ me[errorField] = me.errorTextStepSize(errorParam);
369
+ returnValue = false;
370
+ }
371
+
372
+ if (returnValue) {
373
+ me[errorField] = null;
374
+ }
375
+
376
+ !me.clean && me.updateError(me[errorField], silent);
377
+
378
+ return !returnValue ? false : super.validate(silent);
379
+ }
325
380
  }
326
381
 
327
382
  Neo.applyClassConfig(Number);