neo.mjs 10.0.0-beta.1 → 10.0.0-beta.2
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/ServiceWorker.mjs +2 -2
- package/apps/colors/view/GridContainer.mjs +1 -1
- package/apps/covid/view/AttributionComponent.mjs +1 -1
- package/apps/covid/view/HeaderContainer.mjs +6 -6
- package/apps/covid/view/MainContainerController.mjs +5 -5
- package/apps/covid/view/TableContainerController.mjs +1 -1
- package/apps/covid/view/country/Gallery.mjs +13 -13
- package/apps/covid/view/country/Helix.mjs +13 -13
- package/apps/covid/view/country/HistoricalDataTable.mjs +1 -1
- package/apps/email/view/Viewport.mjs +2 -2
- package/apps/form/view/SideNavList.mjs +1 -1
- package/apps/portal/index.html +1 -1
- package/apps/portal/resources/data/examples_dist_esm.json +1 -1
- package/apps/portal/resources/data/examples_dist_prod.json +2 -2
- package/apps/portal/view/HeaderToolbar.mjs +3 -3
- package/apps/portal/view/about/Container.mjs +2 -2
- package/apps/portal/view/about/MemberContainer.mjs +3 -3
- package/apps/portal/view/blog/List.mjs +7 -7
- package/apps/portal/view/examples/List.mjs +4 -4
- package/apps/portal/view/home/ContentBox.mjs +2 -2
- package/apps/portal/view/home/FeatureSection.mjs +3 -3
- package/apps/portal/view/home/FooterContainer.mjs +7 -7
- package/apps/portal/view/home/parts/AfterMath.mjs +3 -3
- package/apps/portal/view/home/parts/MainNeo.mjs +3 -3
- package/apps/portal/view/home/parts/References.mjs +6 -6
- package/apps/portal/view/learn/ContentComponent.mjs +3 -3
- package/apps/portal/view/learn/PageSectionsContainer.mjs +1 -1
- package/apps/portal/view/learn/PageSectionsList.mjs +2 -2
- package/apps/portal/view/services/Component.mjs +16 -16
- package/apps/realworld/view/FooterComponent.mjs +1 -1
- package/apps/realworld/view/HeaderComponent.mjs +8 -8
- package/apps/realworld/view/HomeComponent.mjs +6 -6
- package/apps/realworld/view/article/CommentComponent.mjs +4 -4
- package/apps/realworld/view/article/Component.mjs +14 -14
- package/apps/realworld/view/article/CreateCommentComponent.mjs +3 -3
- package/apps/realworld/view/article/CreateComponent.mjs +3 -3
- package/apps/realworld/view/article/PreviewComponent.mjs +1 -1
- package/apps/realworld/view/article/TagListComponent.mjs +2 -2
- package/apps/realworld/view/user/ProfileComponent.mjs +8 -8
- package/apps/realworld/view/user/SettingsComponent.mjs +4 -4
- package/apps/realworld/view/user/SignUpComponent.mjs +4 -4
- package/apps/realworld2/view/FooterComponent.mjs +1 -1
- package/apps/realworld2/view/HomeContainer.mjs +3 -3
- package/apps/realworld2/view/article/DetailsContainer.mjs +1 -1
- package/apps/realworld2/view/article/PreviewComponent.mjs +7 -7
- package/apps/realworld2/view/article/TagListComponent.mjs +2 -2
- package/apps/realworld2/view/user/ProfileContainer.mjs +1 -1
- package/apps/route/view/center/CardAdministration.mjs +2 -2
- package/apps/route/view/center/CardAdministrationDenied.mjs +1 -1
- package/apps/route/view/center/CardContact.mjs +2 -2
- package/apps/route/view/center/CardHome.mjs +1 -1
- package/apps/route/view/center/CardSection1.mjs +1 -1
- package/apps/route/view/center/CardSection2.mjs +1 -1
- package/apps/sharedcovid/view/AttributionComponent.mjs +1 -1
- package/apps/sharedcovid/view/HeaderContainer.mjs +6 -6
- package/apps/sharedcovid/view/MainContainerController.mjs +5 -5
- package/apps/sharedcovid/view/TableContainerController.mjs +1 -1
- package/apps/sharedcovid/view/country/Gallery.mjs +13 -13
- package/apps/sharedcovid/view/country/Helix.mjs +13 -13
- package/apps/sharedcovid/view/country/HistoricalDataTable.mjs +1 -1
- package/apps/shareddialog/childapps/shareddialog2/view/MainContainer.mjs +1 -1
- package/apps/shareddialog/view/MainContainer.mjs +1 -1
- package/buildScripts/createApp.mjs +2 -2
- package/learn/Glossary.md +261 -0
- package/learn/benefits/ConfigSystem.md +536 -26
- package/learn/benefits/Effort.md +47 -2
- package/learn/benefits/Features.md +50 -32
- package/learn/benefits/FormsEngine.md +54 -24
- package/learn/benefits/MultiWindow.md +31 -5
- package/learn/benefits/Quick.md +45 -12
- package/learn/benefits/RPCLayer.md +75 -0
- package/learn/benefits/Speed.md +17 -12
- package/learn/guides/ConfigSystemDeepDive.md +280 -0
- package/learn/guides/DeclarativeComponentTreesVsImperativeVdom.md +17 -17
- package/learn/guides/InstanceLifecycle.md +295 -1
- package/learn/guides/MainThreadAddons.md +475 -0
- package/learn/guides/WorkingWithVDom.md +14 -14
- package/learn/tree.json +52 -51
- package/package.json +2 -2
- package/src/DefaultConfig.mjs +2 -2
- package/src/Main.mjs +8 -7
- package/src/Neo.mjs +16 -2
- package/src/button/Base.mjs +2 -2
- package/src/calendar/view/SettingsContainer.mjs +2 -2
- package/src/calendar/view/YearComponent.mjs +9 -9
- package/src/calendar/view/calendars/ColorsList.mjs +1 -1
- package/src/calendar/view/calendars/List.mjs +1 -1
- package/src/calendar/view/month/Component.mjs +15 -15
- package/src/calendar/view/week/Component.mjs +12 -12
- package/src/calendar/view/week/EventDragZone.mjs +4 -4
- package/src/calendar/view/week/TimeAxisComponent.mjs +3 -3
- package/src/component/Base.mjs +17 -2
- package/src/component/Carousel.mjs +2 -2
- package/src/component/Chip.mjs +3 -3
- package/src/component/Circle.mjs +2 -2
- package/src/component/DateSelector.mjs +8 -8
- package/src/component/Helix.mjs +1 -1
- package/src/component/Label.mjs +3 -18
- package/src/component/Legend.mjs +3 -3
- package/src/component/MagicMoveText.mjs +6 -14
- package/src/component/Process.mjs +3 -3
- package/src/component/Progress.mjs +1 -1
- package/src/component/StatusBadge.mjs +2 -2
- package/src/component/Timer.mjs +2 -2
- package/src/component/Toast.mjs +5 -3
- package/src/container/AccordionItem.mjs +2 -2
- package/src/container/Base.mjs +1 -1
- package/src/core/Base.mjs +18 -2
- package/src/date/DayViewComponent.mjs +2 -2
- package/src/date/SelectorContainer.mjs +1 -1
- package/src/form/field/CheckBox.mjs +4 -4
- package/src/form/field/FileUpload.mjs +25 -39
- package/src/form/field/Range.mjs +1 -1
- package/src/form/field/Text.mjs +3 -3
- package/src/form/field/TextArea.mjs +2 -3
- package/src/grid/Body.mjs +6 -2
- package/src/list/Color.mjs +2 -2
- package/src/main/DeltaUpdates.mjs +157 -98
- package/src/main/addon/AmCharts.mjs +53 -73
- package/src/main/addon/Base.mjs +11 -0
- package/src/main/addon/MonacoEditor.mjs +31 -58
- package/src/manager/ClassHierarchy.mjs +114 -0
- package/src/menu/List.mjs +1 -1
- package/src/plugin/Popover.mjs +2 -2
- package/src/sitemap/Component.mjs +1 -1
- package/src/table/Body.mjs +6 -2
- package/src/tooltip/Base.mjs +1 -6
- package/src/tree/Accordion.mjs +3 -3
- package/src/vdom/Helper.mjs +19 -19
- package/src/worker/App.mjs +1 -2
- package/src/worker/Base.mjs +6 -4
- package/src/worker/Canvas.mjs +2 -3
- package/src/worker/Data.mjs +5 -7
- package/src/worker/Task.mjs +2 -3
- package/src/worker/VDom.mjs +3 -4
- package/src/worker/mixin/RemoteMethodAccess.mjs +4 -1
- package/learn/guides/MainThreadAddonExample.md +0 -15
- package/learn/guides/MainThreadAddonIntro.md +0 -44
@@ -250,7 +250,7 @@ class DateSelector extends Component {
|
|
250
250
|
|
251
251
|
me.updateHeaderDays(me.dayNameFormat, '', true);
|
252
252
|
|
253
|
-
me.getHeaderMonthEl().
|
253
|
+
me.getHeaderMonthEl().text = dt.format(me.currentDate);
|
254
254
|
|
255
255
|
me.update()
|
256
256
|
}
|
@@ -588,7 +588,7 @@ class DateSelector extends Component {
|
|
588
588
|
for (; i < len; i++) {
|
589
589
|
config =
|
590
590
|
{cls: ['neo-cell'], cn: [
|
591
|
-
{cls : ['neo-cell-content'],
|
591
|
+
{cls : ['neo-cell-content'], text: me.intlFormat_day.format(date)}
|
592
592
|
]};
|
593
593
|
|
594
594
|
day = date.getDay();
|
@@ -652,7 +652,7 @@ class DateSelector extends Component {
|
|
652
652
|
tabIndex: hasContent ? -1 : null,
|
653
653
|
cn: [{
|
654
654
|
cls : ['neo-cell-content'],
|
655
|
-
|
655
|
+
text: hasContent ? day : me.showDisabledDays ? date.getDate() : ''
|
656
656
|
}]
|
657
657
|
};
|
658
658
|
|
@@ -748,7 +748,7 @@ class DateSelector extends Component {
|
|
748
748
|
cellEl = VDomUtil.find(me.vdom, data.path[0].id),
|
749
749
|
date = me.currentDate; // cloned
|
750
750
|
|
751
|
-
date.setDate(parseInt(cellEl.vdom.cn[0].
|
751
|
+
date.setDate(parseInt(cellEl.vdom.cn[0].text));
|
752
752
|
date = DateUtil.convertToyyyymmdd(date);
|
753
753
|
|
754
754
|
// We want to always trigger a change event.
|
@@ -893,7 +893,7 @@ class DateSelector extends Component {
|
|
893
893
|
for (; i < 7; i++) {
|
894
894
|
node = centerEl.cn[i];
|
895
895
|
|
896
|
-
node.cn[0].
|
896
|
+
node.cn[0].text = me.intlFormat_day.format(date);
|
897
897
|
|
898
898
|
day = date.getDay();
|
899
899
|
|
@@ -927,7 +927,7 @@ class DateSelector extends Component {
|
|
927
927
|
headerCenterEl, y;
|
928
928
|
|
929
929
|
if (!me.mounted || !me.useAnimations) {
|
930
|
-
monthEl.
|
930
|
+
monthEl.text = currentMonth;
|
931
931
|
!silent && me.update();
|
932
932
|
return null
|
933
933
|
} else {
|
@@ -954,7 +954,7 @@ class DateSelector extends Component {
|
|
954
954
|
|
955
955
|
headerCenterEl.cn[0].cn[0].cn.push({
|
956
956
|
cls : ['neo-month-text'],
|
957
|
-
|
957
|
+
text: currentMonth
|
958
958
|
});
|
959
959
|
|
960
960
|
headerCenterEl.cn[0].cn[0].cn[slideDirection === 'top' ? 'unshift' : 'push'](headerCenterEl.cn[1]);
|
@@ -1012,7 +1012,7 @@ class DateSelector extends Component {
|
|
1012
1012
|
let me = this,
|
1013
1013
|
yearEl = me.getHeaderYearEl();
|
1014
1014
|
|
1015
|
-
yearEl.
|
1015
|
+
yearEl.text = me.currentDate.getFullYear();
|
1016
1016
|
|
1017
1017
|
!silent && me.update()
|
1018
1018
|
}
|
package/src/component/Helix.mjs
CHANGED
package/src/component/Label.mjs
CHANGED
@@ -22,25 +22,10 @@ class Label extends Component {
|
|
22
22
|
*/
|
23
23
|
baseCls: ['neo-label'],
|
24
24
|
/**
|
25
|
-
* @member {String}
|
26
|
-
|
27
|
-
text_: '',
|
28
|
-
/**
|
29
|
-
* @member {Object} _vdom={tag: 'label'}
|
25
|
+
* @member {String} tag='label'
|
26
|
+
* @protected
|
30
27
|
*/
|
31
|
-
|
32
|
-
{tag: 'label', draggable: false}
|
33
|
-
}
|
34
|
-
|
35
|
-
/**
|
36
|
-
* Triggered after the text config got changed
|
37
|
-
* @param {String} value
|
38
|
-
* @param {String} oldValue
|
39
|
-
* @protected
|
40
|
-
*/
|
41
|
-
afterSetText(value, oldValue) {
|
42
|
-
this.vdom.html = value;
|
43
|
-
this.update()
|
28
|
+
tag: 'label'
|
44
29
|
}
|
45
30
|
}
|
46
31
|
|
package/src/component/Legend.mjs
CHANGED
@@ -27,9 +27,9 @@ class Legend extends Component {
|
|
27
27
|
*/
|
28
28
|
iconCls_: 'far fa-check',
|
29
29
|
/**
|
30
|
-
* @member {String}
|
30
|
+
* @member {String} text=''
|
31
31
|
*/
|
32
|
-
|
32
|
+
text: '',
|
33
33
|
/**
|
34
34
|
* @member {Boolean} useIcon_=true
|
35
35
|
*/
|
@@ -62,7 +62,7 @@ class Legend extends Component {
|
|
62
62
|
* @protected
|
63
63
|
*/
|
64
64
|
afterSetText(value, oldValue) {
|
65
|
-
this.vdom.cn[1].
|
65
|
+
this.vdom.cn[1].text = value;
|
66
66
|
this.update()
|
67
67
|
}
|
68
68
|
|
@@ -51,10 +51,6 @@ class MagicMoveText extends Component {
|
|
51
51
|
* @member {String} fontFamily_='Helvetica Neue'
|
52
52
|
*/
|
53
53
|
fontFamily_: 'Helvetica Neue',
|
54
|
-
/**
|
55
|
-
* @member {String} text_=null
|
56
|
-
*/
|
57
|
-
text_: null,
|
58
54
|
/**
|
59
55
|
* Time in ms for the fadeIn, fadeOut and move character OPs
|
60
56
|
* @member {Number} transitionTime_=500
|
@@ -258,11 +254,7 @@ class MagicMoveText extends Component {
|
|
258
254
|
value?.split('').forEach(char => {
|
259
255
|
me.chars.push({name: char});
|
260
256
|
|
261
|
-
|
262
|
-
char = ' '
|
263
|
-
}
|
264
|
-
|
265
|
-
measureElement.cn.push({tag: 'span', html: char})
|
257
|
+
measureElement.cn.push({tag: 'span', text: char})
|
266
258
|
});
|
267
259
|
|
268
260
|
if (me.mounted) {
|
@@ -301,8 +293,8 @@ class MagicMoveText extends Component {
|
|
301
293
|
|
302
294
|
charsContainer.push({
|
303
295
|
cls : ['neo-char'],
|
304
|
-
|
305
|
-
|
296
|
+
style: {color: me.colorFadeIn, left: char.left, opacity: 0, top: char.top},
|
297
|
+
text : char.name
|
306
298
|
})
|
307
299
|
}
|
308
300
|
});
|
@@ -354,7 +346,7 @@ class MagicMoveText extends Component {
|
|
354
346
|
me.chars[index].top = `${rect.top - parentRect.top }px`;
|
355
347
|
});
|
356
348
|
|
357
|
-
measureWrapper.removeDom = true;
|
349
|
+
//measureWrapper.removeDom = true;
|
358
350
|
await me.promiseUpdate()
|
359
351
|
}
|
360
352
|
|
@@ -409,7 +401,7 @@ class MagicMoveText extends Component {
|
|
409
401
|
if (start) {
|
410
402
|
me.intervalId = setInterval(me.cycleText.bind(me), me.autoCycleInterval);
|
411
403
|
|
412
|
-
me.timeout(20).then(() => {me.cycleText()})
|
404
|
+
me.timeout(20).then(() => {me.cycleText()})
|
413
405
|
} else {
|
414
406
|
clearInterval(me.intervalId)
|
415
407
|
}
|
@@ -491,7 +483,7 @@ class MagicMoveText extends Component {
|
|
491
483
|
|
492
484
|
charsContainer.cn.length = 0;
|
493
485
|
|
494
|
-
charsContainer.cn.push({
|
486
|
+
charsContainer.cn.push({text: me.text});
|
495
487
|
await me.promiseUpdate();
|
496
488
|
|
497
489
|
me.isTransitioning = false
|
@@ -169,12 +169,12 @@ class Process extends Base {
|
|
169
169
|
curItem, content;
|
170
170
|
|
171
171
|
items.forEach((newItem) => {
|
172
|
-
curItem = Neo.clone(itemLayout, true)
|
172
|
+
curItem = Neo.clone(itemLayout, true);
|
173
173
|
content = curItem.cn[3];
|
174
174
|
|
175
175
|
content.cn[0].cls.push(newItem.iconCls);
|
176
|
-
content.cn[1].
|
177
|
-
content.cn[2].
|
176
|
+
content.cn[1].text = newItem.title;
|
177
|
+
content.cn[2].text = newItem.text;
|
178
178
|
|
179
179
|
NeoArray.add(vdomRoot.cn, curItem)
|
180
180
|
})
|
@@ -329,7 +329,7 @@ class StatusBadge extends Base {
|
|
329
329
|
break;
|
330
330
|
}
|
331
331
|
|
332
|
-
labelNode.
|
332
|
+
labelNode.text = showLabel;
|
333
333
|
|
334
334
|
me.updateStateIconNode(showStateIcon);
|
335
335
|
me.updateSideIconNode(showSideIcon)
|
@@ -382,7 +382,7 @@ class StatusBadge extends Base {
|
|
382
382
|
updateLabelNode(value) {
|
383
383
|
let labelNode = this.getVdomRoot().cn[1];
|
384
384
|
|
385
|
-
labelNode.
|
385
|
+
labelNode.text = value;
|
386
386
|
labelNode.removeDom = !Boolean(value);
|
387
387
|
|
388
388
|
this.update()
|
package/src/component/Timer.mjs
CHANGED
@@ -74,7 +74,7 @@ class Timer extends Component {
|
|
74
74
|
{tag: 'button',cls: 'fa fa-play'}
|
75
75
|
]},
|
76
76
|
{cls: 'flip-card-back', cn : [
|
77
|
-
{cls: 'runner',
|
77
|
+
{cls: 'runner', text: '00:00'}
|
78
78
|
]}
|
79
79
|
]}
|
80
80
|
]}
|
@@ -283,7 +283,7 @@ class Timer extends Component {
|
|
283
283
|
let me = this,
|
284
284
|
timer = me.vdom.cn[0].cn[1].cn[0].cn[1].cn[0];
|
285
285
|
|
286
|
-
timer.
|
286
|
+
timer.text = value;
|
287
287
|
me.update()
|
288
288
|
}
|
289
289
|
|
package/src/component/Toast.mjs
CHANGED
@@ -175,7 +175,7 @@ class Toast extends Component {
|
|
175
175
|
afterSetMsg(value, oldValue) {
|
176
176
|
let vdom = this.getTextRootVdom().cn[1];
|
177
177
|
|
178
|
-
vdom.
|
178
|
+
vdom.text = value
|
179
179
|
}
|
180
180
|
|
181
181
|
/**
|
@@ -221,8 +221,10 @@ class Toast extends Component {
|
|
221
221
|
let vdom = this.getTextRootVdom().cn[0];
|
222
222
|
|
223
223
|
vdom.removeDom = Neo.isEmpty(value);
|
224
|
-
vdom.
|
225
|
-
NeoArray
|
224
|
+
vdom.text = value;
|
225
|
+
NeoArray.toggle(vdom.cls, 'neo-toast-has-title', value);
|
226
|
+
|
227
|
+
this.update()
|
226
228
|
}
|
227
229
|
|
228
230
|
/**
|
@@ -78,7 +78,7 @@ class AccordionContainer extends Base {
|
|
78
78
|
flag : 'titleEl',
|
79
79
|
ntype : 'component',
|
80
80
|
baseCls: ['neo-accordion-header-title'],
|
81
|
-
|
81
|
+
text : title
|
82
82
|
}, {
|
83
83
|
ntype : 'component',
|
84
84
|
baseCls: ['neo-accordion-header-arrow'],
|
@@ -154,7 +154,7 @@ class AccordionContainer extends Base {
|
|
154
154
|
let titleEl = this.down({flag: 'titleEl'});
|
155
155
|
|
156
156
|
if (titleEl) {
|
157
|
-
titleEl.
|
157
|
+
titleEl.text = newValue
|
158
158
|
}
|
159
159
|
}
|
160
160
|
|
package/src/container/Base.mjs
CHANGED
package/src/core/Base.mjs
CHANGED
@@ -80,6 +80,14 @@ class Base {
|
|
80
80
|
* @member {String|null} id_=null
|
81
81
|
*/
|
82
82
|
id_: null,
|
83
|
+
/**
|
84
|
+
* An array of remote method names that should be intercepted.
|
85
|
+
* Names used here must be present inside the `remote_` config.
|
86
|
+
* If a remote call for one of these methods arrives, `onInterceptRemotes()` will be called.
|
87
|
+
* @member {String[]|null} interceptRemotes=null
|
88
|
+
* @protected
|
89
|
+
*/
|
90
|
+
interceptRemotes: null,
|
83
91
|
/**
|
84
92
|
* Neo.create() will change this flag to true after the onConstructed() chain is done.
|
85
93
|
* @member {Boolean} isConstructed=false
|
@@ -203,7 +211,7 @@ class Base {
|
|
203
211
|
if (hasManager) {
|
204
212
|
Neo.manager.Instance.register(me);
|
205
213
|
} else {
|
206
|
-
Neo.idMap
|
214
|
+
Neo.idMap ??= {};
|
207
215
|
Neo.idMap[me.id] = me
|
208
216
|
}
|
209
217
|
}
|
@@ -503,10 +511,18 @@ class Base {
|
|
503
511
|
|
504
512
|
/**
|
505
513
|
* Gets triggered after all constructors are done
|
506
|
-
* @tutorial 02_ClassSystem
|
507
514
|
*/
|
508
515
|
onConstructed() {}
|
509
516
|
|
517
|
+
/**
|
518
|
+
* Placeholder method for intercepting remote calls.
|
519
|
+
* Subclasses can override this method to implement custom interception logic.
|
520
|
+
* @param {Object} msg The remote message object.
|
521
|
+
*/
|
522
|
+
onInterceptRemotes(msg) {
|
523
|
+
// No-op in base class
|
524
|
+
}
|
525
|
+
|
510
526
|
/**
|
511
527
|
* Helper method to replace string based values containing "@config:" with the matching config value
|
512
528
|
* of this instance.
|
@@ -104,7 +104,7 @@ class DayViewComponent extends Base {
|
|
104
104
|
for (; i < len; i++) {
|
105
105
|
config =
|
106
106
|
{cls: ['neo-cell'], cn: [
|
107
|
-
{cls : ['neo-cell-content'],
|
107
|
+
{cls : ['neo-cell-content'], text: me.intlFormatDay.format(date)}
|
108
108
|
]};
|
109
109
|
|
110
110
|
day = date.getDay();
|
@@ -168,7 +168,7 @@ class DayViewComponent extends Base {
|
|
168
168
|
tabIndex: hasContent ? -1 : null,
|
169
169
|
cn: [{
|
170
170
|
cls : ['neo-cell-content'],
|
171
|
-
|
171
|
+
text: hasContent ? day : me.showDisabledDays ? date.getDate() : ''
|
172
172
|
}]
|
173
173
|
};
|
174
174
|
|
@@ -397,7 +397,7 @@ class CheckBox extends Field {
|
|
397
397
|
showLabel = !!value; // hide the label, in case value === null || value === ''
|
398
398
|
|
399
399
|
if (showLabel) {
|
400
|
-
valueLabel.
|
400
|
+
valueLabel.text = value
|
401
401
|
}
|
402
402
|
|
403
403
|
valueLabel.removeDom = !showLabel;
|
@@ -582,16 +582,16 @@ class CheckBox extends Field {
|
|
582
582
|
if (!(me.clean && !me.mounted)) {
|
583
583
|
me._error = value; // silent update
|
584
584
|
|
585
|
-
NeoArray
|
585
|
+
NeoArray.toggle(cls, 'neo-invalid', value);
|
586
586
|
me.cls = cls;
|
587
587
|
|
588
588
|
errorWrapper = me.vdom.cn[1];
|
589
589
|
errorNode = errorWrapper.cn[0];
|
590
590
|
|
591
591
|
if (showError) {
|
592
|
-
errorNode.
|
592
|
+
errorNode.text = value
|
593
593
|
} else {
|
594
|
-
delete errorNode.
|
594
|
+
delete errorNode.text
|
595
595
|
}
|
596
596
|
|
597
597
|
errorWrapper.removeDom = !showError;
|
@@ -1,6 +1,5 @@
|
|
1
|
-
import Field
|
2
|
-
import NeoArray
|
3
|
-
import StringUtil from '../../util/String.mjs';
|
1
|
+
import Field from './Base.mjs';
|
2
|
+
import NeoArray from '../../util/Array.mjs';
|
4
3
|
|
5
4
|
const
|
6
5
|
sizeRE = /^(\d+)(kb|mb|gb)?$/i,
|
@@ -352,7 +351,7 @@ class FileUpload extends Field {
|
|
352
351
|
onConstructed() {
|
353
352
|
super.onConstructed(...arguments);
|
354
353
|
|
355
|
-
this.vdom.cn[4].
|
354
|
+
this.vdom.cn[4].text = this.chooseFile;
|
356
355
|
}
|
357
356
|
|
358
357
|
/**
|
@@ -392,12 +391,9 @@ class FileUpload extends Field {
|
|
392
391
|
*/
|
393
392
|
onInputValueChange({ files }) {
|
394
393
|
const
|
395
|
-
me
|
396
|
-
{
|
397
|
-
|
398
|
-
cls
|
399
|
-
} = me,
|
400
|
-
body = me.vdom.cn[1];
|
394
|
+
me = this,
|
395
|
+
{cls, types} = me,
|
396
|
+
body = me.vdom.cn[1];
|
401
397
|
|
402
398
|
if (files.length) {
|
403
399
|
NeoArray.remove(cls, 'neo-field-empty');
|
@@ -406,17 +402,16 @@ class FileUpload extends Field {
|
|
406
402
|
const
|
407
403
|
file = files.item(0),
|
408
404
|
pointPos = file.name.lastIndexOf('.'),
|
409
|
-
type = pointPos > -1 ? file.name.slice(pointPos + 1) : ''
|
410
|
-
escapedFileName = StringUtil.escapeHtml(file.name);
|
405
|
+
type = pointPos > -1 ? file.name.slice(pointPos + 1) : '';
|
411
406
|
|
412
407
|
if (me.types && !types[type]) {
|
413
|
-
body.cn[0].
|
414
|
-
body.cn[1].
|
408
|
+
body.cn[0].text = file.name;
|
409
|
+
body.cn[1].text = `${me.invalidFileFormat} (.${type}) ${me.formatSize(file.size)}`;
|
415
410
|
me.error = me.pleaseUseTheseTypes?.replace('{allowedFileTypes}', Object.keys(types).join(' .'))
|
416
411
|
}
|
417
412
|
else if (file.size > me.maxSize) {
|
418
|
-
body.cn[0].
|
419
|
-
body.cn[1].
|
413
|
+
body.cn[0].text = file.name;
|
414
|
+
body.cn[1].text = me.formatSize(file.size);
|
420
415
|
me.error = me.fileSizeMoreThan?.replace('{allowedFileSize}', String(me._maxSize).toUpperCase());
|
421
416
|
}
|
422
417
|
// If it passes the type and maxSize check, upload it
|
@@ -448,7 +443,7 @@ class FileUpload extends Field {
|
|
448
443
|
await me.timeout(100);
|
449
444
|
me.focus(me.vdom.cn[2].id);
|
450
445
|
|
451
|
-
me.vdom.cn[1].cn[0].
|
446
|
+
me.vdom.cn[1].cn[0].text = file.name;
|
452
447
|
me.update();
|
453
448
|
me.state = 'uploading';
|
454
449
|
|
@@ -492,10 +487,10 @@ class FileUpload extends Field {
|
|
492
487
|
|
493
488
|
(vdom.style || (vdom.style = {}))['--upload-progress'] = `${progress}turn`;
|
494
489
|
|
495
|
-
vdom.cn[1].cn[1].
|
490
|
+
vdom.cn[1].cn[1].text = `${this.uploading}... (${Math.round(progress * 100)}%)`;
|
496
491
|
|
497
492
|
this.uploadSize = loaded;
|
498
|
-
this.update()
|
493
|
+
this.update()
|
499
494
|
}
|
500
495
|
|
501
496
|
onUploadAbort(e) {
|
@@ -665,15 +660,15 @@ class FileUpload extends Field {
|
|
665
660
|
afterSetDocument(document) {
|
666
661
|
if (document) {
|
667
662
|
const
|
668
|
-
me
|
669
|
-
{
|
663
|
+
me = this,
|
664
|
+
{cls} = me;
|
670
665
|
|
671
666
|
NeoArray.remove(cls, 'neo-field-empty');
|
672
667
|
me.cls = cls;
|
673
668
|
|
674
669
|
me.documentId = document.id;
|
675
670
|
me.fileSize = me.formatSize(document.size);
|
676
|
-
me.vdom.cn[1].cn[0].
|
671
|
+
me.vdom.cn[1].cn[0].text = document.fileName;
|
677
672
|
me.state = me.documentStatusMap[document.status];
|
678
673
|
}
|
679
674
|
}
|
@@ -704,15 +699,15 @@ class FileUpload extends Field {
|
|
704
699
|
isChangeEventNeeded = true;
|
705
700
|
break;
|
706
701
|
case 'upload-failed':
|
707
|
-
status.
|
702
|
+
status.text = `${me.uploadFailed}${isNaN(me.progress) ? '' : `... (${Math.round(me.progress * 100)}%)`}`;
|
708
703
|
isChangeEventNeeded = true;
|
709
704
|
break;
|
710
705
|
case 'processing':
|
711
|
-
status.
|
706
|
+
status.text = `${me.scanning}... (${me.formatSize(me.uploadSize)})`;
|
712
707
|
vdom.inert = true;
|
713
708
|
break;
|
714
709
|
case 'scan-failed':
|
715
|
-
status.
|
710
|
+
status.text = `${me.malwareFoundInFile}. \u2022 ${me.fileSize}`;
|
716
711
|
me.error = me.pleaseCheck;
|
717
712
|
isChangeEventNeeded = true;
|
718
713
|
break;
|
@@ -721,19 +716,19 @@ class FileUpload extends Field {
|
|
721
716
|
anchor.href = me.createUrl(me.downloadUrl, {
|
722
717
|
[me.documentIdParameter] : me.documentId
|
723
718
|
});
|
724
|
-
status.
|
719
|
+
status.text = me.fileSize;
|
725
720
|
isChangeEventNeeded = true;
|
726
721
|
break;
|
727
722
|
case 'not-downloadable':
|
728
|
-
status.
|
723
|
+
status.text = me.document ? me.fileSize : `${me.successfullyUploaded} \u2022 ${me.fileSize}`;
|
729
724
|
isChangeEventNeeded = true;
|
730
725
|
break;
|
731
726
|
case 'deleted':
|
732
|
-
status.
|
727
|
+
status.text = me.fileWasDeleted;
|
733
728
|
isChangeEventNeeded = true;
|
734
729
|
break;
|
735
730
|
case 'error':
|
736
|
-
status.
|
731
|
+
status.text = me.fileIsInAnErrorState;
|
737
732
|
me.error = me.pleaseCheck;
|
738
733
|
isChangeEventNeeded = true;
|
739
734
|
}
|
@@ -812,16 +807,7 @@ class FileUpload extends Field {
|
|
812
807
|
}
|
813
808
|
|
814
809
|
afterSetError(text) {
|
815
|
-
|
816
|
-
this.vdom.cn[5].cn = [{
|
817
|
-
vtype : 'text',
|
818
|
-
html : text
|
819
|
-
}];
|
820
|
-
}
|
821
|
-
else {
|
822
|
-
this.vdom.cn[5].cn = [];
|
823
|
-
}
|
824
|
-
|
810
|
+
this.vdom.cn[5].cn = text ? [{vtype : 'text', text}] : [];
|
825
811
|
this.validate();
|
826
812
|
this.update();
|
827
813
|
}
|
package/src/form/field/Range.mjs
CHANGED
package/src/form/field/Text.mjs
CHANGED
@@ -788,8 +788,8 @@ class Text extends Field {
|
|
788
788
|
showLabel = me.labelPosition === 'top',
|
789
789
|
subLabel = me.vdom.cn[1];
|
790
790
|
|
791
|
-
subLabel.html = value;
|
792
791
|
subLabel.removeDom = !showLabel;
|
792
|
+
subLabel.text = value;
|
793
793
|
|
794
794
|
me.update()
|
795
795
|
}
|
@@ -1494,9 +1494,9 @@ class Text extends Field {
|
|
1494
1494
|
errorNode = errorWrapper.cn[0];
|
1495
1495
|
|
1496
1496
|
if (value) {
|
1497
|
-
errorNode.
|
1497
|
+
errorNode.text = value
|
1498
1498
|
} else {
|
1499
|
-
delete errorNode.
|
1499
|
+
delete errorNode.text
|
1500
1500
|
}
|
1501
1501
|
|
1502
1502
|
errorWrapper.removeDom = !value;
|
@@ -1,5 +1,4 @@
|
|
1
|
-
import
|
2
|
-
import Text from './Text.mjs';
|
1
|
+
import Text from './Text.mjs';
|
3
2
|
|
4
3
|
/**
|
5
4
|
*
|
@@ -162,7 +161,7 @@ class TextArea extends Text {
|
|
162
161
|
inputEl = me.getInputEl();
|
163
162
|
|
164
163
|
if (inputEl) {
|
165
|
-
inputEl.
|
164
|
+
inputEl.text = value
|
166
165
|
}
|
167
166
|
|
168
167
|
super.afterSetValue(value, oldValue);
|
package/src/grid/Body.mjs
CHANGED
@@ -460,7 +460,7 @@ class GridBody extends Component {
|
|
460
460
|
|
461
461
|
switch (Neo.typeOf(rendererOutput)) {
|
462
462
|
case 'Object': {
|
463
|
-
if (rendererOutput.html) {
|
463
|
+
if (rendererOutput.html || rendererOutput.text) {
|
464
464
|
rendererOutput.cls && cellCls.push(...rendererOutput.cls);
|
465
465
|
} else {
|
466
466
|
rendererOutput = [rendererOutput];
|
@@ -521,7 +521,11 @@ class GridBody extends Component {
|
|
521
521
|
}
|
522
522
|
|
523
523
|
if (Neo.typeOf(rendererOutput) === 'Object') {
|
524
|
-
|
524
|
+
if (Object.hasOwn(rendererOutput, 'html')) {
|
525
|
+
cellConfig.html = rendererOutput.html || ''
|
526
|
+
} else {
|
527
|
+
cellConfig.text = rendererOutput.text || ''
|
528
|
+
}
|
525
529
|
} else {
|
526
530
|
cellConfig.cn = rendererOutput
|
527
531
|
}
|