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.
- package/apps/ServiceWorker.mjs +2 -2
- package/apps/form/view/pages/Page9.mjs +15 -8
- package/examples/ServiceWorker.mjs +2 -2
- package/package.json +3 -3
- package/resources/examples/data/formSideNav.json +1 -1
- package/src/DefaultConfig.mjs +2 -2
- package/src/form/Fieldset.mjs +7 -7
- package/src/form/field/Hidden.mjs +28 -0
- package/src/form/field/Number.mjs +55 -0
package/apps/ServiceWorker.mjs
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
import FormPageContainer from '../FormPageContainer.mjs';
|
2
|
-
import
|
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
|
20
|
-
|
21
|
-
|
22
|
-
|
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
|
25
|
-
|
26
|
-
|
31
|
+
module: HiddenField,
|
32
|
+
name : 'field2',
|
33
|
+
value : 'bar'
|
27
34
|
}]
|
28
35
|
}
|
29
36
|
}
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "neo.mjs",
|
3
|
-
"version": "5.
|
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
|
-
"webpack": "^5.
|
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": "
|
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"},
|
package/src/DefaultConfig.mjs
CHANGED
@@ -237,12 +237,12 @@ const DefaultConfig = {
|
|
237
237
|
useVdomWorker: true,
|
238
238
|
/**
|
239
239
|
* buildScripts/injectPackageVersion.mjs will update this value
|
240
|
-
* @default '5.
|
240
|
+
* @default '5.4.0'
|
241
241
|
* @memberOf! module:Neo
|
242
242
|
* @name config.version
|
243
243
|
* @type String
|
244
244
|
*/
|
245
|
-
version: '5.
|
245
|
+
version: '5.4.0'
|
246
246
|
};
|
247
247
|
|
248
248
|
Object.assign(DefaultConfig, {
|
package/src/form/Fieldset.mjs
CHANGED
@@ -1,12 +1,12 @@
|
|
1
|
-
import
|
2
|
-
import Legend
|
3
|
-
import NeoArray
|
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.
|
7
|
+
* @extends Neo.form.Container
|
8
8
|
*/
|
9
|
-
class Fieldset extends
|
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}
|
70
|
+
* @member {Object} vdom={tag:'fieldset',cn:[]}
|
71
71
|
*/
|
72
|
-
|
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);
|