neo.mjs 4.8.8 → 4.8.10
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.
@@ -49,6 +49,12 @@ class MainContainer extends ConfigurationViewport {
|
|
49
49
|
listeners: {change: me.onConfigChange.bind(me, 'error')},
|
50
50
|
reference: 'error-field',
|
51
51
|
value : me.exampleComponent.error
|
52
|
+
}, {
|
53
|
+
module : TextField,
|
54
|
+
clearable: true,
|
55
|
+
labelText: 'errorTextRequired',
|
56
|
+
listeners: {change: me.onConfigChange.bind(me, 'errorTextRequired')},
|
57
|
+
value : me.exampleComponent.errorTextRequired
|
52
58
|
}, {
|
53
59
|
module : CheckBox,
|
54
60
|
checked : me.exampleComponent.hideLabel,
|
package/package.json
CHANGED
@@ -88,6 +88,20 @@ class Picker extends Text {
|
|
88
88
|
}]
|
89
89
|
}}
|
90
90
|
|
91
|
+
/**
|
92
|
+
* @param {Object} config
|
93
|
+
*/
|
94
|
+
construct(config) {
|
95
|
+
super.construct(config);
|
96
|
+
|
97
|
+
let me = this;
|
98
|
+
|
99
|
+
me.addDomListeners({
|
100
|
+
click: me.onInputClick,
|
101
|
+
scope: me
|
102
|
+
});
|
103
|
+
}
|
104
|
+
|
91
105
|
/**
|
92
106
|
* Triggered after the editable config got changed
|
93
107
|
* @param {Boolean} value
|
@@ -244,6 +258,20 @@ class Picker extends Text {
|
|
244
258
|
}
|
245
259
|
}
|
246
260
|
|
261
|
+
/**
|
262
|
+
* @param {Object} data
|
263
|
+
*/
|
264
|
+
onInputClick(data) {
|
265
|
+
let me = this;
|
266
|
+
|
267
|
+
if (!me.editable) {
|
268
|
+
me.togglePicker();
|
269
|
+
|
270
|
+
// stay in sync to the trigger-click logic
|
271
|
+
!me.pickerIsMounted && me.focus()
|
272
|
+
}
|
273
|
+
}
|
274
|
+
|
247
275
|
/**
|
248
276
|
* @param {Object} data
|
249
277
|
* @param {Function} [callback]
|
@@ -267,13 +295,7 @@ class Picker extends Text {
|
|
267
295
|
* @protected
|
268
296
|
*/
|
269
297
|
onPickerTriggerClick() {
|
270
|
-
|
271
|
-
|
272
|
-
if (me.pickerIsMounted) {
|
273
|
-
me.hidePicker();
|
274
|
-
} else {
|
275
|
-
me.getClientRectsThenShow();
|
276
|
-
}
|
298
|
+
this.editable && this.togglePicker();
|
277
299
|
}
|
278
300
|
|
279
301
|
/**
|
@@ -296,6 +318,19 @@ class Picker extends Text {
|
|
296
318
|
|
297
319
|
picker.render(true);
|
298
320
|
}
|
321
|
+
|
322
|
+
/**
|
323
|
+
*
|
324
|
+
*/
|
325
|
+
togglePicker() {
|
326
|
+
let me = this;
|
327
|
+
|
328
|
+
if (me.pickerIsMounted) {
|
329
|
+
me.hidePicker();
|
330
|
+
} else {
|
331
|
+
me.getClientRectsThenShow();
|
332
|
+
}
|
333
|
+
}
|
299
334
|
}
|
300
335
|
|
301
336
|
Neo.applyClassConfig(Picker);
|
package/src/form/field/Text.mjs
CHANGED
@@ -10,6 +10,20 @@ import VNodeUtil from '../../util/VNode.mjs';
|
|
10
10
|
* @extends Neo.form.field.Base
|
11
11
|
*/
|
12
12
|
class Text extends Base {
|
13
|
+
/**
|
14
|
+
* data passes maxLength, minLength & valueLength properties
|
15
|
+
* @member {Function} errorTextMaxLength=data=>`Max length violation: ${valueLength} / ${maxLength}`
|
16
|
+
*/
|
17
|
+
errorTextMaxLength = data => `Max length violation: ${data.valueLength} / ${data.maxLength}`
|
18
|
+
/**
|
19
|
+
* data passes maxLength, minLength & valueLength properties
|
20
|
+
* @member {Function} errorTextMinLength=data=>`Min length violation: ${data.valueLength} / ${data.minLength}`
|
21
|
+
*/
|
22
|
+
errorTextMinLength = data => `Min length violation: ${data.valueLength} / ${data.minLength}`
|
23
|
+
/**
|
24
|
+
* @member {String} errorTextRequired='Required'
|
25
|
+
*/
|
26
|
+
errorTextRequired = 'Required'
|
13
27
|
/**
|
14
28
|
* Set this value to false, in case a field should display errors up front
|
15
29
|
* @member {Boolean} validBeforeMount=true
|
@@ -1275,19 +1289,20 @@ class Text extends Base {
|
|
1275
1289
|
returnValue = true,
|
1276
1290
|
value = me.value,
|
1277
1291
|
valueLength = value?.toString().length,
|
1278
|
-
isEmpty = !value || valueLength < 1
|
1292
|
+
isEmpty = !value || valueLength < 1,
|
1293
|
+
errorParam = {maxLength, minLength, valueLength};
|
1279
1294
|
|
1280
1295
|
if (required && isEmpty) {
|
1281
|
-
me[errorField] =
|
1296
|
+
me[errorField] = me.errorTextRequired;
|
1282
1297
|
returnValue = false;
|
1283
1298
|
} else if (Neo.isNumber(maxLength) && valueLength > maxLength) {
|
1284
1299
|
if (required || !isEmpty) {
|
1285
|
-
me[errorField] =
|
1300
|
+
me[errorField] = me.errorTextMaxLength(errorParam);
|
1286
1301
|
returnValue = false;
|
1287
1302
|
}
|
1288
1303
|
} else if (Neo.isNumber(minLength) && valueLength < minLength) {
|
1289
1304
|
if (required || !isEmpty) {
|
1290
|
-
me[errorField] =
|
1305
|
+
me[errorField] = me.errorTextMinLength(errorParam);
|
1291
1306
|
returnValue = false;
|
1292
1307
|
}
|
1293
1308
|
}
|
package/src/main/DomAccess.mjs
CHANGED
@@ -45,6 +45,7 @@ class DomAccess extends Base {
|
|
45
45
|
app: [
|
46
46
|
'addScript',
|
47
47
|
'applyBodyCls',
|
48
|
+
'blur',
|
48
49
|
'execCommand',
|
49
50
|
'focus',
|
50
51
|
'getAttributes',
|
@@ -124,6 +125,17 @@ class DomAccess extends Base {
|
|
124
125
|
document.body.classList.add(...cls);
|
125
126
|
}
|
126
127
|
|
128
|
+
/**
|
129
|
+
* Calls blur() on a node for a given dom node id
|
130
|
+
* @param {Object} data
|
131
|
+
* @returns {Object} obj.id => the passed id
|
132
|
+
*/
|
133
|
+
blur(data) {
|
134
|
+
this.getElement(data.id)?.blur();
|
135
|
+
|
136
|
+
return {id: data.id};
|
137
|
+
}
|
138
|
+
|
127
139
|
/**
|
128
140
|
* @param {Object} data
|
129
141
|
* @param {String} data.command
|
@@ -135,7 +147,7 @@ class DomAccess extends Base {
|
|
135
147
|
}
|
136
148
|
|
137
149
|
/**
|
138
|
-
* Calls focus on a node for a given dom node id
|
150
|
+
* Calls focus() on a node for a given dom node id
|
139
151
|
* @param {Object} data
|
140
152
|
* @returns {Object} obj.id => the passed id
|
141
153
|
*/
|
@@ -139,13 +139,16 @@ class GoogleMaps extends Base {
|
|
139
139
|
* @returns {Object}
|
140
140
|
*/
|
141
141
|
async geocode(data) {
|
142
|
-
let me = this
|
142
|
+
let me = this,
|
143
|
+
response;
|
143
144
|
|
144
145
|
if (!me.geoCoder) {
|
145
146
|
me.geoCoder = new google.maps.Geocoder();
|
146
147
|
}
|
147
148
|
|
148
|
-
|
149
|
+
response = await me.geoCoder.geocode(data);
|
150
|
+
|
151
|
+
return JSON.parse(JSON.stringify(response));
|
149
152
|
}
|
150
153
|
|
151
154
|
/**
|