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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "neo.mjs",
3
- "version": "4.8.8",
3
+ "version": "4.8.10",
4
4
  "description": "The webworkers driven UI framework",
5
5
  "type": "module",
6
6
  "repository": {
@@ -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
- let me = this;
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);
@@ -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] = 'Required';
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] = `Max length violation: ${valueLength} / ${maxLength}`;
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] = `Min length violation: ${valueLength} / ${minLength}`;
1305
+ me[errorField] = me.errorTextMinLength(errorParam);
1291
1306
  returnValue = false;
1292
1307
  }
1293
1308
  }
@@ -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
- return await me.geoCoder.geocode(data);
149
+ response = await me.geoCoder.geocode(data);
150
+
151
+ return JSON.parse(JSON.stringify(response));
149
152
  }
150
153
 
151
154
  /**