neo.mjs 4.0.88 → 4.0.91

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "neo.mjs",
3
- "version": "4.0.88",
3
+ "version": "4.0.91",
4
4
  "description": "The webworkers driven UI framework",
5
5
  "type": "module",
6
6
  "repository": {
@@ -0,0 +1,3 @@
1
+ .neo-iframe {
2
+ border: none;
3
+ }
@@ -5,7 +5,7 @@
5
5
  .neo-action {
6
6
  color : inherit;
7
7
  display : block;
8
- margin : 1em 0;
8
+ margin : 1.1em 0;
9
9
  text-decoration: none;
10
10
  }
11
11
 
@@ -163,9 +163,9 @@ class Base extends CoreBase {
163
163
  /**
164
164
  * Used for hide and show and defines if the component
165
165
  * should use css visibility:'hidden' or vdom:removeDom
166
- * @member {String} hideMode_='visibility'
166
+ * @member {String} hideMode_='removeDom'
167
167
  */
168
- hideMode_: 'visibility',
168
+ hideMode_: 'removeDom',
169
169
  /**
170
170
  * The top level innerHTML of the component
171
171
  * @member {String|null} html_=null
@@ -1121,10 +1121,9 @@ class Base extends CoreBase {
1121
1121
  * @param {Number} timeout
1122
1122
  */
1123
1123
  hide(timeout) {
1124
- let me = this,
1125
- doRemove = me.hideMode !== 'visibility';
1124
+ let me = this;
1126
1125
 
1127
- if (doRemove) {
1126
+ if (me.hideMode !== 'visibility') {
1128
1127
  let removeFn = function() {
1129
1128
  let vdom = me.vdom;
1130
1129
  vdom.removeDom = true;
@@ -1142,7 +1141,7 @@ class Base extends CoreBase {
1142
1141
  me.style = style;
1143
1142
  }
1144
1143
 
1145
- this._hidden = true;
1144
+ me._hidden = true;
1146
1145
  }
1147
1146
 
1148
1147
  /**
@@ -1505,10 +1504,9 @@ class Base extends CoreBase {
1505
1504
  * hideMode: 'visibility' uses css visibility.
1506
1505
  */
1507
1506
  show() {
1508
- let me = this,
1509
- doAdd = me.hideMode !== 'visibility';
1507
+ let me = this;
1510
1508
 
1511
- if (doAdd) {
1509
+ if (me.hideMode !== 'visibility') {
1512
1510
  let vdom = me.vdom;
1513
1511
  vdom.removeDom = false;
1514
1512
  me.vdom = vdom;
@@ -1518,7 +1516,7 @@ class Base extends CoreBase {
1518
1516
  me.style = style;
1519
1517
  }
1520
1518
 
1521
- this._hidden = false;
1519
+ me._hidden = false;
1522
1520
  }
1523
1521
 
1524
1522
  /**
@@ -0,0 +1,42 @@
1
+ import Base from '../component/Base.mjs';
2
+
3
+ /**
4
+ * @class Neo.component.Iframe
5
+ * @extends Neo.component.Base
6
+ */
7
+ class Iframe extends Base {
8
+ static getConfig() {return {
9
+ /*
10
+ * @member {String} className='Neo.component.Iframe'
11
+ * @protected
12
+ */
13
+ className: 'Neo.component.Iframe',
14
+ /*
15
+ * @member {String[]} cls=['neo-iframe']
16
+ */
17
+ cls: ['neo-iframe'],
18
+ /*
19
+ * @member {String|null} src_=null
20
+ */
21
+ src_: null,
22
+ /*
23
+ * @member {Object} _vdom
24
+ */
25
+ _vdom:
26
+ {tag: 'iframe'}
27
+ }}
28
+
29
+ /**
30
+ * Triggered after the src config got changed
31
+ * @param {String|null} value
32
+ * @param {String|null} oldValue
33
+ * @protected
34
+ */
35
+ afterSetSrc(value, oldValue) {
36
+ this.changeVdomRootKey('src', value);
37
+ }
38
+ }
39
+
40
+ Neo.applyClassConfig(Iframe);
41
+
42
+ export default Iframe;
@@ -278,6 +278,10 @@ class RecordFactory extends Base {
278
278
  return new Date(value);
279
279
  }
280
280
 
281
+ if (type === 'html' && value) {
282
+ value = value + '';
283
+ }
284
+
281
285
  if (type === 'string' && value) {
282
286
  value = value + '';
283
287
  value = value.replace(/(<([^>]+)>)/ig, '');
package/src/list/Base.mjs CHANGED
@@ -405,9 +405,10 @@ class Base extends Component {
405
405
  getItemRecordId(vnodeId) {
406
406
  let itemId = vnodeId.split('__')[1],
407
407
  model = this.store.model,
408
- keyField = model?.getField(model.keyProperty);
408
+ keyField = model?.getField(model.keyProperty),
409
+ keyType = keyField?.type.toLowerCase();
409
410
 
410
- if (keyField?.type.toLowerCase() === 'integer' || keyField?.type.toLowerCase() === 'number') {
411
+ if (keyType === 'integer' || keyType === 'number') {
411
412
  itemId = parseInt(itemId);
412
413
  }
413
414
 
@@ -55,6 +55,20 @@ class Container extends Base {
55
55
  layout: {ntype: 'hbox', align: 'stretch'}
56
56
  }}
57
57
 
58
+ /**
59
+ * @param {Object} config
60
+ */
61
+ construct(config) {
62
+ super.construct(config);
63
+
64
+ let me = this,
65
+ domListeners = me.domListeners;
66
+
67
+ domListeners.push({click: me.onItemClick, delegate: '.neo-action', scope: me});
68
+
69
+ me.domListeners = domListeners;
70
+ }
71
+
58
72
  /**
59
73
  * Triggered after the itemStore config got changed
60
74
  * @param {Neo.sitemap.store.Items|null} value
@@ -163,6 +177,29 @@ class Container extends Base {
163
177
  return `${this.id}__${recordId}`;
164
178
  }
165
179
 
180
+ /**
181
+ * @param {String} vnodeId
182
+ * @returns {String|Number} itemId
183
+ */
184
+ getItemRecordId(vnodeId) {
185
+ let itemId = vnodeId.split('__')[1],
186
+ model = this.itemStore.model,
187
+ keyField = model?.getField(model.keyProperty),
188
+ keyType = keyField?.type.toLowerCase();
189
+
190
+ if (keyType === 'integer' || keyType === 'number') {
191
+ itemId = parseInt(itemId);
192
+ }
193
+
194
+ return itemId;
195
+ }
196
+
197
+ /**
198
+ * Override as needed
199
+ * @param {Object} data
200
+ */
201
+ onItemClick(data) {}
202
+
166
203
  /**
167
204
  *
168
205
  */
@@ -41,7 +41,7 @@ class Item extends Model {
41
41
  type : 'Number'
42
42
  }, {
43
43
  name: 'name',
44
- type: 'String'
44
+ type: 'Html'
45
45
  }]
46
46
  }}
47
47
  }