neo.mjs 6.5.2 → 6.5.3

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='6.5.2'
23
+ * @member {String} version='6.5.3'
24
24
  */
25
- version: '6.5.2'
25
+ version: '6.5.3'
26
26
  }
27
27
 
28
28
  /**
@@ -19,12 +19,10 @@ class FormContainerController extends Component {
19
19
  onComponentConstructed() {
20
20
  super.onComponentConstructed();
21
21
 
22
- this.component.on('fieldFocusLeave', data => {
23
- console.log('fieldFocusLeave', data);
24
- })
25
-
26
- this.component.on('fieldChange', data => {
27
- console.log('fieldChange', data);
22
+ this.component.on({
23
+ fieldChange : data => console.log('fieldChange' , data),
24
+ fieldFocusLeave: data => console.log('fieldFocusLeave', data),
25
+ fieldUserChange: data => console.log('fieldUserChange', data)
28
26
  })
29
27
  }
30
28
 
@@ -20,9 +20,9 @@ class ServiceWorker extends ServiceBase {
20
20
  */
21
21
  singleton: true,
22
22
  /**
23
- * @member {String} version='6.5.2'
23
+ * @member {String} version='6.5.3'
24
24
  */
25
- version: '6.5.2'
25
+ version: '6.5.3'
26
26
  }
27
27
 
28
28
  /**
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "neo.mjs",
3
- "version": "6.5.2",
3
+ "version": "6.5.3",
4
4
  "description": "The webworkers driven UI framework",
5
5
  "type": "module",
6
6
  "repository": {
@@ -53,11 +53,11 @@
53
53
  "envinfo": "^7.10.0",
54
54
  "fs-extra": "^11.1.1",
55
55
  "highlightjs-line-numbers.js": "^2.8.0",
56
- "inquirer": "^9.2.10",
56
+ "inquirer": "^9.2.11",
57
57
  "neo-jsdoc": "1.0.1",
58
58
  "neo-jsdoc-x": "1.0.5",
59
59
  "postcss": "^8.4.29",
60
- "sass": "^1.66.1",
60
+ "sass": "^1.67.0",
61
61
  "showdown": "^2.1.0",
62
62
  "webpack": "^5.88.2",
63
63
  "webpack-cli": "^5.1.4",
@@ -67,7 +67,7 @@
67
67
  },
68
68
  "devDependencies": {
69
69
  "siesta-lite": "5.5.2",
70
- "url": "^0.11.1"
70
+ "url": "^0.11.2"
71
71
  },
72
72
  "funding": {
73
73
  "type": "GitHub Sponsors",
@@ -236,12 +236,12 @@ const DefaultConfig = {
236
236
  useVdomWorker: true,
237
237
  /**
238
238
  * buildScripts/injectPackageVersion.mjs will update this value
239
- * @default '6.5.2'
239
+ * @default '6.5.3'
240
240
  * @memberOf! module:Neo
241
241
  * @name config.version
242
242
  * @type String
243
243
  */
244
- version: '6.5.2'
244
+ version: '6.5.3'
245
245
  };
246
246
 
247
247
  Object.assign(DefaultConfig, {
@@ -7,6 +7,16 @@ import ComponentManager from '../../manager/Component.mjs';
7
7
  * @extends Neo.component.Base
8
8
  */
9
9
  class Base extends Component {
10
+ /**
11
+ * @member {Object} delayable
12
+ * @protected
13
+ * @static
14
+ */
15
+ static delayable = {
16
+ fireChangeEvent : {type: 'debounce', timer: 300},
17
+ fireUserChangeEvent: {type: 'debounce', timer: 300}
18
+ }
19
+
10
20
  static config = {
11
21
  /**
12
22
  * @member {String} className='Neo.form.field.Base'
@@ -127,29 +137,49 @@ class Base extends Component {
127
137
 
128
138
  /**
129
139
  * Override this method as needed
130
- * @param {*} value
131
- * @param {*} oldValue
140
+ * @param {*} value
141
+ * @param {*} oldValue
142
+ * @param {String} eventName
132
143
  */
133
- fireChangeEvent(value, oldValue) {
144
+ doFireChangeEvent(value, oldValue, eventName) {
134
145
  let me = this,
135
146
  FormContainer = Neo.form?.Container,
147
+ formEvent = 'field' + Neo.capitalize(eventName),
136
148
  opts = {component: me, oldValue, value};
137
149
 
138
150
  if (Neo.isFunction(me.getGroupValue)) {
139
151
  opts.groupValue = me.getGroupValue()
140
152
  }
141
153
 
142
- me.fire('change', opts);
154
+ me.fire(eventName, opts);
143
155
 
144
156
  if (!me.suspendEvents) {
145
157
  ComponentManager.getParents(me).forEach(parent => {
146
158
  if (FormContainer && parent instanceof FormContainer) {
147
- parent.fire('fieldChange', opts)
159
+ parent.fire(formEvent, opts)
148
160
  }
149
161
  })
150
162
  }
151
163
  }
152
164
 
165
+ /**
166
+ * Override this method as needed
167
+ * @param {*} value
168
+ * @param {*} oldValue
169
+ */
170
+ fireChangeEvent(value, oldValue) {
171
+ this.doFireChangeEvent(value, oldValue, 'change')
172
+ }
173
+
174
+ /**
175
+ * Override this method as needed
176
+ * @param {*} value
177
+ * @param {*} oldValue
178
+ */
179
+ fireUserChangeEvent(value, oldValue) {
180
+ this.doFireChangeEvent(value, oldValue, 'userChange')
181
+ }
182
+
153
183
  /**
154
184
  * Forms in neo can be nested. This method will return the closest parent which is a form.Container or null.
155
185
  * @returns {Neo.form.Container|null}
@@ -525,7 +525,9 @@ class CheckBox extends Base {
525
525
  // keep the vdom & vnode in sync for future updates
526
526
  me.vnode.childNodes[0].childNodes[me.hideLabel ? 0 : 1].attributes.checked = `${checked}`;
527
527
 
528
- me.checked = checked
528
+ me.checked = checked;
529
+
530
+ me.fireUserChangeEvent(me.getValue(), me.getOldValue())
529
531
  }
530
532
 
531
533
  /**
@@ -1242,16 +1242,19 @@ class Text extends Base {
1242
1242
  * @protected
1243
1243
  */
1244
1244
  onInputValueChange(data) {
1245
- let me = this,
1246
- value = data.value,
1247
- vnode = VNodeUtil.findChildVnode(me.vnode, {nodeName: 'input'});
1245
+ let me = this,
1246
+ oldValue = me.value,
1247
+ value = data.value,
1248
+ vnode = VNodeUtil.findChildVnode(me.vnode, {nodeName: 'input'});
1248
1249
 
1249
1250
  if (vnode) {
1250
1251
  // required for validation -> revert a wrong user input
1251
1252
  vnode.vnode.attributes.value = value;
1252
1253
  }
1253
1254
 
1254
- me.value = me.inputValueAdjustor(value)
1255
+ me.value = me.inputValueAdjustor(value);
1256
+
1257
+ me.fireUserChangeEvent(value, oldValue)
1255
1258
  }
1256
1259
 
1257
1260
  /**
@@ -47,7 +47,7 @@ export function createSequence(target, methodName, fn, scope) {
47
47
  /**
48
48
  * @param {Function} func
49
49
  * @param {Neo.core.Base} scope
50
- * @param {Number} timeout
50
+ * @param {Number} timeout=300
51
51
  * @returns {Function}
52
52
  */
53
53
  export function debounce(func, scope, timeout=300) {