neo.mjs 4.8.8 → 4.8.9

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.9",
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
  }