neo.mjs 5.7.2 → 5.7.4
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
CHANGED
package/package.json
CHANGED
package/src/DefaultConfig.mjs
CHANGED
@@ -236,12 +236,12 @@ const DefaultConfig = {
|
|
236
236
|
useVdomWorker: true,
|
237
237
|
/**
|
238
238
|
* buildScripts/injectPackageVersion.mjs will update this value
|
239
|
-
* @default '5.7.
|
239
|
+
* @default '5.7.4'
|
240
240
|
* @memberOf! module:Neo
|
241
241
|
* @name config.version
|
242
242
|
* @type String
|
243
243
|
*/
|
244
|
-
version: '5.7.
|
244
|
+
version: '5.7.4'
|
245
245
|
};
|
246
246
|
|
247
247
|
Object.assign(DefaultConfig, {
|
@@ -259,7 +259,7 @@ class Number extends Text {
|
|
259
259
|
return false;
|
260
260
|
}
|
261
261
|
|
262
|
-
if (value
|
262
|
+
if ((value / me.stepSize) % 1 !== 0) {
|
263
263
|
return false;
|
264
264
|
}
|
265
265
|
|
@@ -280,13 +280,11 @@ class Number extends Text {
|
|
280
280
|
* @protected
|
281
281
|
*/
|
282
282
|
onFocusLeave(data) {
|
283
|
-
let me
|
284
|
-
|
285
|
-
value = me.value;
|
283
|
+
let me = this,
|
284
|
+
value = me.value;
|
286
285
|
|
287
286
|
if (value !== null) {
|
288
287
|
value = me.stepSizeDigits > 0 ? parseFloat(value) : parseInt(value);
|
289
|
-
value = value - Math.round((value % me.stepSize) * stepSizePow) / stepSizePow;
|
290
288
|
value = Math.max(me.minValue, value);
|
291
289
|
value = Math.min(me.maxValue, value);
|
292
290
|
|
@@ -383,7 +381,6 @@ class Number extends Text {
|
|
383
381
|
maxValue = me.maxValue,
|
384
382
|
minValue = me.minValue,
|
385
383
|
stepSize = me.stepSize,
|
386
|
-
stepSizePow = Math.pow(10, me.stepSizeDigits),
|
387
384
|
returnValue = super.validate(silent),
|
388
385
|
errorParam = {maxValue, minValue, stepSize, value};
|
389
386
|
|
@@ -394,7 +391,7 @@ class Number extends Text {
|
|
394
391
|
} else if (Neo.isNumber(minValue) && isNumber && value < minValue) {
|
395
392
|
me._error = me.errorTextMinValue(errorParam);
|
396
393
|
returnValue = false;
|
397
|
-
} else if ((
|
394
|
+
} else if ((value / me.stepSize) % 1 !== 0) {
|
398
395
|
me._error = me.errorTextStepSize(errorParam);
|
399
396
|
returnValue = false;
|
400
397
|
}
|
package/src/form/field/Url.mjs
CHANGED
@@ -19,107 +19,22 @@ class Url extends Text {
|
|
19
19
|
*/
|
20
20
|
ntype: 'urlfield',
|
21
21
|
/**
|
22
|
-
* @member {String}
|
22
|
+
* @member {String} errorTextInputPattern=data=>'Not a valid URL'
|
23
23
|
*/
|
24
|
-
|
24
|
+
errorTextInputPattern: data => 'Not a valid URL',
|
25
25
|
/**
|
26
|
-
*
|
27
|
-
* @member {String} inputType='url'
|
26
|
+
* @member {RegExp|null} inputPattern_=/^(https?:\/\/)?(([a-zA-Z0-9_-]+\.)*([a-zA-Z0-9_-]+\.[a-zA-Z]{2,}))(\/([a-zA-Z0-9._-]+)\/?)*$/
|
28
27
|
*/
|
29
|
-
|
28
|
+
inputPattern_: /^(https?:\/\/)?(([a-zA-Z0-9_-]+\.)*([a-zA-Z0-9_-]+\.[a-zA-Z]{2,}))(\/([a-zA-Z0-9._-]+)\/?)*$/,
|
30
29
|
/**
|
31
|
-
*
|
32
|
-
* 'none' means that user inputs like "www.google.com" will be considered as valid.
|
33
|
-
* @member {String[]} protocols=['http:','https:','none']
|
30
|
+
* @member {Boolean} inputPatternDOM=false
|
34
31
|
*/
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
* E.g. new URL("http:www.google.com").href => "http://www.google.com"
|
42
|
-
* @param {String|null} value
|
43
|
-
* @returns {String|null}
|
44
|
-
* @protected
|
45
|
-
*/
|
46
|
-
beforeGetValue(value) {
|
47
|
-
if (value) {
|
48
|
-
let me = this,
|
49
|
-
href = me.getUrl(value)?.href;
|
50
|
-
|
51
|
-
if (!href && me.protocols.includes('none')) {
|
52
|
-
href = me.getUrl(`https://${value}`)?.href;
|
53
|
-
|
54
|
-
if (href) {
|
55
|
-
href = href.replace('https://', '')
|
56
|
-
}
|
57
|
-
}
|
58
|
-
|
59
|
-
if (href) {
|
60
|
-
return href
|
61
|
-
}
|
62
|
-
}
|
63
|
-
|
64
|
-
return value
|
65
|
-
}
|
66
|
-
|
67
|
-
/**
|
68
|
-
* Returns false in case an URL could not get created
|
69
|
-
* @param {String} value
|
70
|
-
* @returns {Boolean|URL}
|
71
|
-
*/
|
72
|
-
getUrl(value) {
|
73
|
-
let url;
|
74
|
-
|
75
|
-
try {
|
76
|
-
url = new URL(value);
|
77
|
-
} catch(e) {
|
78
|
-
return false
|
79
|
-
}
|
80
|
-
|
81
|
-
return url
|
82
|
-
}
|
83
|
-
|
84
|
-
/**
|
85
|
-
* Checks for client-side field errors
|
86
|
-
* @param {Boolean} silent=true
|
87
|
-
* @returns {Boolean} Returns true in case there are no client-side errors
|
88
|
-
*/
|
89
|
-
validate(silent=true) {
|
90
|
-
let me = this,
|
91
|
-
returnValue = super.validate(silent),
|
92
|
-
value = me.value;
|
93
|
-
|
94
|
-
if (returnValue) {
|
95
|
-
if (value && !me.verifyUrl(value)) {
|
96
|
-
me._error = me.errorTextValidUrl;
|
97
|
-
returnValue = false;
|
98
|
-
}
|
99
|
-
}
|
100
|
-
|
101
|
-
!returnValue && !me.clean && me.updateError(me._error, silent);
|
102
|
-
|
103
|
-
return returnValue
|
104
|
-
}
|
105
|
-
|
106
|
-
/**
|
107
|
-
* @param {String} value
|
108
|
-
* @returns {Boolean}
|
109
|
-
*/
|
110
|
-
verifyUrl(value) {
|
111
|
-
let me = this,
|
112
|
-
url = me.getUrl(value);
|
113
|
-
|
114
|
-
if (!url && me.protocols.includes('none')) {
|
115
|
-
url = me.getUrl(`https://${value}`);console.log(url)
|
116
|
-
}
|
117
|
-
|
118
|
-
if (!url) {
|
119
|
-
return false
|
120
|
-
}
|
121
|
-
|
122
|
-
return me.protocols.includes(url.protocol)
|
32
|
+
inputPatternDOM: false,
|
33
|
+
/**
|
34
|
+
* Value for the inputType_ textfield config
|
35
|
+
* @member {String} inputType='url'
|
36
|
+
*/
|
37
|
+
inputType: 'url'
|
123
38
|
}
|
124
39
|
}
|
125
40
|
|