neo.mjs 5.8.0 → 5.9.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.8.0'
23
+ * @member {String} version='5.9.0'
24
24
  */
25
- version: '5.8.0'
25
+ version: '5.9.0'
26
26
  }
27
27
 
28
28
  /**
@@ -75,7 +75,8 @@ class FormContainer extends BaseFormContainer {
75
75
  {module: () => import('./pages/Page11.mjs')},
76
76
  {module: () => import('./pages/Page12.mjs')},
77
77
  {module: () => import('./pages/Page13.mjs')},
78
- {module: () => import('./pages/Page14.mjs')}
78
+ {module: () => import('./pages/Page14.mjs')},
79
+ {module: () => import('./pages/Page15.mjs')}
79
80
  ]
80
81
  }, {
81
82
  module: Toolbar,
@@ -0,0 +1,34 @@
1
+ import CurrencyField from '../../../../src/form/field/Currency.mjs';
2
+ import FormPageContainer from '../FormPageContainer.mjs';
3
+
4
+ /**
5
+ * @class Form.view.pages.Page15
6
+ * @extends Form.view.FormPageContainer
7
+ */
8
+ class Page15 extends FormPageContainer {
9
+ static config = {
10
+ /**
11
+ * @member {String} className='Form.view.pages.Page15'
12
+ * @protected
13
+ */
14
+ className: 'Form.view.pages.Page15',
15
+ /**
16
+ * @member {Object[]} items
17
+ */
18
+ items: [{
19
+ module : CurrencyField,
20
+ labelText: 'Amount in €',
21
+ name : 'page15.field1',
22
+ value : 15.00
23
+ }, {
24
+ module : CurrencyField,
25
+ labelText: 'Amount in $',
26
+ name : 'page15.field2',
27
+ value : 16.10
28
+ }]
29
+ }
30
+ }
31
+
32
+ Neo.applyClassConfig(Page15);
33
+
34
+ export default Page15;
@@ -20,9 +20,9 @@ class ServiceWorker extends ServiceBase {
20
20
  */
21
21
  singleton: true,
22
22
  /**
23
- * @member {String} version='5.8.0'
23
+ * @member {String} version='5.9.0'
24
24
  */
25
- version: '5.8.0'
25
+ version: '5.9.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.8.0",
3
+ "version": "5.9.0",
4
4
  "description": "The webworkers driven UI framework",
5
5
  "type": "module",
6
6
  "repository": {
@@ -19,6 +19,7 @@
19
19
  {"id": 15, "cardIndex": 10, "isHeader": false, "isValid": null, "name": "ZipCodeFields"},
20
20
  {"id": 16, "cardIndex": 11, "isHeader": false, "isValid": null, "name": "EmailFields"},
21
21
  {"id": 17, "cardIndex": 12, "isHeader": false, "isValid": null, "name": "UrlFields"},
22
- {"id": 18, "cardIndex": 13, "isHeader": false, "isValid": null, "name": "PhoneFields"}
22
+ {"id": 18, "cardIndex": 13, "isHeader": false, "isValid": null, "name": "PhoneFields"},
23
+ {"id": 19, "cardIndex": 14, "isHeader": false, "isValid": null, "name": "CurrencyFields"}
23
24
  ]
24
25
  }
@@ -236,12 +236,12 @@ const DefaultConfig = {
236
236
  useVdomWorker: true,
237
237
  /**
238
238
  * buildScripts/injectPackageVersion.mjs will update this value
239
- * @default '5.8.0'
239
+ * @default '5.9.0'
240
240
  * @memberOf! module:Neo
241
241
  * @name config.version
242
242
  * @type String
243
243
  */
244
- version: '5.8.0'
244
+ version: '5.9.0'
245
245
  };
246
246
 
247
247
  Object.assign(DefaultConfig, {
@@ -0,0 +1,54 @@
1
+ import Number from './Number.mjs';
2
+
3
+ /**
4
+ * @class Neo.form.field.Currency
5
+ * @extends Neo.form.field.Number
6
+ */
7
+ class Currency extends Number {
8
+ static config = {
9
+ /**
10
+ * @member {String} className='Neo.form.field.Currency'
11
+ * @protected
12
+ */
13
+ className: 'Neo.form.field.Currency',
14
+ /**
15
+ * @member {String} ntype='currencyfield'
16
+ * @protected
17
+ */
18
+ ntype: 'currencyfield',
19
+ /**
20
+ * @member {Number} stepSize=0.01
21
+ */
22
+ stepSize: 0.01
23
+ }
24
+
25
+ /**
26
+ * @param {Number|null} value
27
+ * @returns {Number}
28
+ */
29
+ inputValueAdjustor(value) {
30
+ if (Neo.isString(value)) {
31
+ value = parseFloat(value).toFixed(2);
32
+
33
+ return parseInt(value.replace('.', '')) / 100
34
+ }
35
+
36
+ return value
37
+ }
38
+
39
+ /**
40
+ * @param {Number|null} value
41
+ * @returns {String}
42
+ */
43
+ inputValueRenderer(value) {
44
+ if (value === null) {
45
+ return null
46
+ }
47
+
48
+ return value.toFixed(2)
49
+ }
50
+ }
51
+
52
+ Neo.applyClassConfig(Currency);
53
+
54
+ export default Currency;
@@ -243,6 +243,18 @@ class Number extends Text {
243
243
  return value
244
244
  }
245
245
 
246
+ /**
247
+ * @param {Number|null} value
248
+ * @returns {Boolean}
249
+ */
250
+ fitsStepSize(value) {
251
+ if (value === null) {
252
+ return true
253
+ }
254
+
255
+ return (parseInt(value.toString().replace('.', '')) * (1 / this.stepSize)) % 1 === 0
256
+ }
257
+
246
258
  /**
247
259
  * @returns {Boolean}
248
260
  */
@@ -261,7 +273,7 @@ class Number extends Text {
261
273
  return false;
262
274
  }
263
275
 
264
- if ((value / me.stepSize) % 1 !== 0) {
276
+ if (!me.fitsStepSize(value)) {
265
277
  return false;
266
278
  }
267
279
 
@@ -393,7 +405,7 @@ class Number extends Text {
393
405
  } else if (Neo.isNumber(minValue) && isNumber && value < minValue) {
394
406
  me._error = me.errorTextMinValue(errorParam);
395
407
  returnValue = false;
396
- } else if ((value / me.stepSize) % 1 !== 0) {
408
+ } else if (!me.fitsStepSize(value)) {
397
409
  me._error = me.errorTextStepSize(errorParam);
398
410
  returnValue = false;
399
411
  }
@@ -780,7 +780,7 @@ class Text extends Base {
780
780
 
781
781
  me.silentVdomUpdate = true;
782
782
 
783
- me.getInputEl().value = value;
783
+ me.getInputEl().value = me.inputValueRenderer(value);
784
784
 
785
785
  me.validate(); // silent
786
786
 
@@ -1104,6 +1104,26 @@ class Text extends Base {
1104
1104
  return false
1105
1105
  }
1106
1106
 
1107
+ /**
1108
+ * Transform an input node value before applied to this.value.
1109
+ * Override as needed
1110
+ * @param {*} value
1111
+ * @returns {*}
1112
+ */
1113
+ inputValueAdjustor(value) {
1114
+ return value
1115
+ }
1116
+
1117
+ /**
1118
+ * Transform a value before getting rendered.
1119
+ * Override as needed
1120
+ * @param {*} value
1121
+ * @returns {*}
1122
+ */
1123
+ inputValueRenderer(value) {
1124
+ return value
1125
+ }
1126
+
1107
1127
  /**
1108
1128
  * @returns {Boolean}
1109
1129
  */
@@ -1202,7 +1222,7 @@ class Text extends Base {
1202
1222
  vnode.vnode.attributes.value = value;
1203
1223
  }
1204
1224
 
1205
- me.value = value
1225
+ me.value = me.inputValueAdjustor(value)
1206
1226
  }
1207
1227
 
1208
1228
  /**