neo.mjs 6.18.2 → 6.19.0
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/README.md +28 -214
- package/apps/ServiceWorker.mjs +2 -2
- package/apps/colors/view/ViewportController.mjs +7 -3
- package/apps/portal/data/blog.json +13 -0
- package/apps/portal/view/HeaderToolbar.mjs +2 -2
- package/apps/portal/view/Viewport.mjs +4 -2
- package/apps/portal/view/ViewportController.mjs +89 -8
- package/apps/portal/view/blog/Container.mjs +8 -8
- package/apps/portal/view/blog/List.mjs +6 -6
- package/apps/portal/view/home/MainContainer.mjs +9 -10
- package/apps/portal/view/home/parts/BaseContainer.mjs +8 -1
- package/apps/portal/view/home/parts/Colors.mjs +4 -4
- package/apps/portal/view/home/parts/Helix.mjs +2 -2
- package/apps/portal/view/home/parts/How.mjs +3 -3
- package/apps/portal/view/home/parts/MainNeo.mjs +6 -7
- package/apps/portal/view/home/parts/References.mjs +88 -0
- package/apps/portal/view/learn/ContentView.mjs +3 -1
- package/apps/portal/view/learn/MainContainer.mjs +3 -2
- package/apps/portal/view/learn/MainContainerController.mjs +11 -0
- package/apps/portal/view/learn/PageContainer.mjs +5 -3
- package/apps/portal/view/services/Component.mjs +73 -0
- package/apps/website/data/blog.json +13 -0
- package/examples/ServiceWorker.mjs +2 -2
- package/examples/component/carousel/MainContainer.mjs +42 -33
- package/examples/layout/cube/MainContainer.mjs +217 -0
- package/examples/layout/cube/app.mjs +6 -0
- package/examples/layout/cube/index.html +11 -0
- package/examples/layout/cube/neo-config.json +6 -0
- package/package.json +7 -7
- package/resources/data/deck/learnneo/pages/2023-10-14T19-25-08-153Z.md +2 -2
- package/resources/data/deck/learnneo/pages/ComponentModels.md +6 -6
- package/resources/data/deck/learnneo/pages/ComponentsAndContainers.md +10 -10
- package/resources/data/deck/learnneo/pages/Config.md +6 -6
- package/resources/data/deck/learnneo/pages/CustomComponents.md +4 -4
- package/resources/data/deck/learnneo/pages/DescribingTheUI.md +4 -4
- package/resources/data/deck/learnneo/pages/Earthquakes-01-goals.md +32 -0
- package/resources/data/deck/learnneo/pages/Earthquakes-Lab-01-generate-a-workspace.md +47 -0
- package/resources/data/deck/learnneo/pages/Earthquakes-Lab-02-generate-the-starter-app.md +150 -0
- package/resources/data/deck/learnneo/pages/Earthquakes-Lab-03-debugging.md +136 -0
- package/resources/data/deck/learnneo/pages/Earthquakes-Lab-04-fetch-data.md +146 -0
- package/resources/data/deck/learnneo/pages/Earthquakes-Lab-05-refactor-the-table.md +146 -0
- package/resources/data/deck/learnneo/pages/Earthquakes-Lab-06-use-a-view-model.md +301 -0
- package/resources/data/deck/learnneo/pages/Earthquakes-Lab-07-use-the-google-maps-addon.md +175 -0
- package/resources/data/deck/learnneo/pages/Earthquakes-Lab-08-events.md +38 -0
- package/resources/data/deck/learnneo/pages/Earthquakes.md +10 -10
- package/resources/data/deck/learnneo/pages/Events.md +7 -7
- package/resources/data/deck/learnneo/pages/Extending.md +7 -7
- package/resources/data/deck/learnneo/pages/Glossary.md +0 -0
- package/resources/data/deck/learnneo/pages/GuideEvents.md +97 -19
- package/resources/data/deck/learnneo/pages/GuideViewModels.md +21 -21
- package/resources/data/deck/learnneo/pages/References.md +8 -8
- package/resources/data/deck/learnneo/pages/TestLivePreview.md +5 -4
- package/resources/data/deck/learnneo/pages/TodoList.md +9 -9
- package/resources/data/deck/learnneo/pages/Welcome.md +3 -3
- package/resources/data/deck/learnneo/pages/WhyNeo-Multi-Window.md +2 -2
- package/resources/data/deck/learnneo/pages/WhyNeo-Speed.md +2 -2
- package/resources/data/deck/learnneo/tree.json +2 -1
- package/resources/images/apps/portal/neo-references.png +0 -0
- package/resources/scss/src/apps/portal/HeaderToolbar.scss +0 -46
- package/resources/scss/src/apps/portal/Viewport.scss +16 -1
- package/resources/scss/src/apps/portal/blog/Container.scss +7 -7
- package/resources/scss/src/apps/portal/blog/List.scss +20 -16
- package/resources/scss/src/apps/portal/home/parts/BaseContainer.scss +33 -4
- package/resources/scss/src/apps/portal/home/parts/MainNeo.scss +4 -5
- package/resources/scss/src/apps/portal/home/parts/References.scss +46 -0
- package/resources/scss/src/apps/portal/learn/ContentTreeList.scss +20 -0
- package/resources/scss/src/apps/portal/learn/ContentView.scss +4 -0
- package/resources/scss/src/apps/portal/learn/MainContainer.scss +1 -1
- package/resources/scss/src/apps/portal/learn/PageContainer.scss +22 -16
- package/resources/scss/src/apps/portal/services/Component.scss +20 -0
- package/resources/scss/src/{apps/portal/learn → code}/LivePreview.scss +1 -1
- package/resources/scss/src/component/Carousel.scss +21 -0
- package/resources/scss/src/component/Helix.scss +1 -2
- package/resources/scss/src/examples/layout/cube/MainContainer.scss +7 -0
- package/resources/scss/src/layout/Cube.scss +80 -0
- package/resources/scss/src/tab/Container.scss +10 -10
- package/resources/scss/theme-neo-light/apps/portal/blog/Container.scss +3 -0
- package/resources/scss/theme-neo-light/form/field/Search.scss +1 -1
- package/resources/scss/theme-neo-light/tooltip/Base.scss +1 -1
- package/src/DefaultConfig.mjs +2 -2
- package/src/Main.mjs +15 -1
- package/src/Neo.mjs +14 -3
- package/{apps/portal/view/learn → src/code}/LivePreview.mjs +43 -27
- package/src/component/Base.mjs +18 -1
- package/src/container/Base.mjs +3 -1
- package/src/dialog/Base.mjs +1 -2
- package/src/layout/Base.mjs +43 -6
- package/src/layout/Card.mjs +21 -59
- package/src/layout/Cube.mjs +428 -0
- package/src/layout/Fit.mjs +9 -38
- package/src/layout/Flexbox.mjs +16 -17
- package/src/layout/Form.mjs +13 -70
- package/src/layout/Grid.mjs +6 -18
- package/src/main/addon/ResizeObserver.mjs +18 -2
- package/src/main/mixin/DeltaUpdates.mjs +16 -3
- package/src/util/Array.mjs +36 -0
- package/src/vdom/Helper.mjs +328 -445
- package/src/vdom/VNode.mjs +12 -1
- package/test/siesta/siesta.js +16 -1
- package/test/siesta/tests/VdomCalendar.mjs +2111 -37
- package/test/siesta/tests/VdomHelper.mjs +283 -47
- package/test/siesta/tests/vdom/Advanced.mjs +367 -0
- package/test/siesta/tests/vdom/layout/Cube.mjs +189 -0
- package/test/siesta/tests/vdom/table/Container.mjs +133 -0
- package/apps/portal/view/home/parts/HelloWorld.mjs +0 -83
- package/apps/portal/view/home/preview/PageCodeContainer.mjs +0 -55
- package/resources/scss/src/apps/portal/home/preview/PageCodeContainer.scss +0 -115
- package/resources/scss/theme-neo-light/apps/portal/learn/ContentTreeList.scss +0 -23
@@ -41,7 +41,7 @@ StartTest(t => {
|
|
41
41
|
vdom.cls = ['neo-component'];
|
42
42
|
t.diag("vdom.cls = ['neo-component'];");
|
43
43
|
|
44
|
-
output = VdomHelper.update({vdom
|
44
|
+
output = VdomHelper.update({vdom, vnode}); deltas = output.deltas; vnode = output.vnode;
|
45
45
|
|
46
46
|
t.isDeeplyStrict(vnode, {
|
47
47
|
attributes: {},
|
@@ -54,18 +54,14 @@ StartTest(t => {
|
|
54
54
|
vtype : 'vnode'
|
55
55
|
}, 'vnode got updated successfully');
|
56
56
|
|
57
|
-
t.isDeeplyStrict(deltas, [
|
58
|
-
id
|
59
|
-
cls: {
|
60
|
-
add : ['neo-component'],
|
61
|
-
remove: []
|
62
|
-
}
|
57
|
+
t.isDeeplyStrict(deltas, [
|
58
|
+
{id: 'neo-vnode-1', cls: {add: ['neo-component']}
|
63
59
|
}], 'deltas got created successfully');
|
64
60
|
|
65
61
|
vdom.cls = ['neo-panel', 'neo-container', 'neo-component'];
|
66
62
|
t.diag("vdom.cls = ['neo-panel', 'neo-container', 'neo-component'];");
|
67
63
|
|
68
|
-
output = VdomHelper.update({vdom
|
64
|
+
output = VdomHelper.update({vdom, vnode}); deltas = output.deltas; vnode = output.vnode;
|
69
65
|
|
70
66
|
t.isDeeplyStrict(vnode, {
|
71
67
|
attributes: {},
|
@@ -78,18 +74,14 @@ StartTest(t => {
|
|
78
74
|
vtype : 'vnode'
|
79
75
|
}, 'vnode got updated successfully');
|
80
76
|
|
81
|
-
t.isDeeplyStrict(deltas, [
|
82
|
-
id
|
83
|
-
cls: {
|
84
|
-
add : ['neo-panel', 'neo-container'],
|
85
|
-
remove: []
|
86
|
-
}
|
77
|
+
t.isDeeplyStrict(deltas, [
|
78
|
+
{id: 'neo-vnode-1', cls: {add: ['neo-panel', 'neo-container']}
|
87
79
|
}], 'deltas got created successfully');
|
88
80
|
|
89
81
|
vdom.cls = ['neo-container'];
|
90
82
|
t.diag("vdom.cls = ['neo-container'];");
|
91
83
|
|
92
|
-
output = VdomHelper.update({vdom
|
84
|
+
output = VdomHelper.update({vdom, vnode}); deltas = output.deltas; vnode = output.vnode;
|
93
85
|
|
94
86
|
t.isDeeplyStrict(vnode, {
|
95
87
|
attributes: {},
|
@@ -102,12 +94,8 @@ StartTest(t => {
|
|
102
94
|
vtype : 'vnode'
|
103
95
|
}, 'vnode got updated successfully');
|
104
96
|
|
105
|
-
t.isDeeplyStrict(deltas, [
|
106
|
-
id
|
107
|
-
cls: {
|
108
|
-
add : [],
|
109
|
-
remove: ['neo-panel', 'neo-component']
|
110
|
-
}
|
97
|
+
t.isDeeplyStrict(deltas, [
|
98
|
+
{id: 'neo-vnode-1', cls: {remove: ['neo-panel', 'neo-component']}
|
111
99
|
}], 'deltas got created successfully');
|
112
100
|
});
|
113
101
|
|
@@ -115,7 +103,7 @@ StartTest(t => {
|
|
115
103
|
vdom.style = {backgroundColor: 'red'};
|
116
104
|
t.diag("vdom.style = {backgroundColor: 'red'};");
|
117
105
|
|
118
|
-
output = VdomHelper.update({vdom
|
106
|
+
output = VdomHelper.update({vdom, vnode}); deltas = output.deltas; vnode = output.vnode;
|
119
107
|
|
120
108
|
t.isDeeplyStrict(vnode, {
|
121
109
|
attributes: {},
|
@@ -138,7 +126,7 @@ StartTest(t => {
|
|
138
126
|
vdom.style = {backgroundColor: 'red', color: 'green', height: '100px'};
|
139
127
|
t.diag("vdom.style = {backgroundColor: 'red', color: 'green', height: '100px'};");
|
140
128
|
|
141
|
-
output = VdomHelper.update({vdom
|
129
|
+
output = VdomHelper.update({vdom, vnode}); deltas = output.deltas; vnode = output.vnode;
|
142
130
|
|
143
131
|
t.isDeeplyStrict(vnode, {
|
144
132
|
attributes: {},
|
@@ -162,7 +150,7 @@ StartTest(t => {
|
|
162
150
|
vdom.style = {color: 'green'};
|
163
151
|
t.diag("vdom.style = {color: 'green'};");
|
164
152
|
|
165
|
-
output = VdomHelper.update({vdom
|
153
|
+
output = VdomHelper.update({vdom, vnode}); deltas = output.deltas; vnode = output.vnode;
|
166
154
|
|
167
155
|
t.isDeeplyStrict(vnode, {
|
168
156
|
attributes: {},
|
@@ -188,7 +176,7 @@ StartTest(t => {
|
|
188
176
|
vdom.tabIndex = -1;
|
189
177
|
t.diag("vdom.tabIndex = -1;");
|
190
178
|
|
191
|
-
output = VdomHelper.update({vdom
|
179
|
+
output = VdomHelper.update({vdom, vnode}); deltas = output.deltas; vnode = output.vnode;
|
192
180
|
|
193
181
|
t.isDeeplyStrict(vnode, {
|
194
182
|
attributes: {tabIndex: '-1'},
|
@@ -211,7 +199,7 @@ StartTest(t => {
|
|
211
199
|
vdom.tabIndex = 0;
|
212
200
|
t.diag("vdom.tabIndex = 0;");
|
213
201
|
|
214
|
-
output = VdomHelper.update({vdom
|
202
|
+
output = VdomHelper.update({vdom, vnode}); deltas = output.deltas; vnode = output.vnode;
|
215
203
|
|
216
204
|
t.isDeeplyStrict(vnode, {
|
217
205
|
attributes: {tabIndex: '0'},
|
@@ -234,7 +222,7 @@ StartTest(t => {
|
|
234
222
|
delete vdom.tabIndex;
|
235
223
|
t.diag("delete vdom.tabIndex;");
|
236
224
|
|
237
|
-
output = VdomHelper.update({vdom
|
225
|
+
output = VdomHelper.update({vdom, vnode}); deltas = output.deltas; vnode = output.vnode;
|
238
226
|
|
239
227
|
t.isDeeplyStrict(vnode, {
|
240
228
|
attributes: {},
|
@@ -259,7 +247,7 @@ StartTest(t => {
|
|
259
247
|
vdom.cn = [{tag: 'div'}, {tag: 'div', id: 'neo-button-1'}, {tag: 'div'}];
|
260
248
|
t.diag("vdom.cn = [{tag: 'div'}, {tag: 'div', id: 'neo-button-1'}, {tag: 'div'}];");
|
261
249
|
|
262
|
-
output = VdomHelper.update({vdom
|
250
|
+
output = VdomHelper.update({vdom, vnode}); deltas = output.deltas; vnode = output.vnode;
|
263
251
|
VDomUtil.syncVdomIds(vnode, vdom);
|
264
252
|
|
265
253
|
t.isDeeplyStrict(vnode, {
|
@@ -279,15 +267,15 @@ StartTest(t => {
|
|
279
267
|
}, 'vnode got updated successfully');
|
280
268
|
|
281
269
|
t.isDeeplyStrict(deltas, [
|
282
|
-
{action: 'insertNode',
|
283
|
-
{action: 'insertNode',
|
284
|
-
{action: 'insertNode',
|
270
|
+
{action: 'insertNode', index: 0, outerHTML: '<div id="neo-vnode-2"></div>', parentId: 'neo-vnode-1'},
|
271
|
+
{action: 'insertNode', index: 1, outerHTML: '<div id="neo-button-1"></div>', parentId: 'neo-vnode-1'},
|
272
|
+
{action: 'insertNode', index: 2, outerHTML: '<div id="neo-vnode-3"></div>', parentId: 'neo-vnode-1'}
|
285
273
|
], 'deltas got created successfully');
|
286
274
|
|
287
275
|
tmp = vdom.cn[0]; vdom.cn[0] = vdom.cn[2]; vdom.cn[2] = tmp;
|
288
276
|
t.diag("tmp = vdom.cn[0]; vdom.cn[0] = vdom.cn[2]; vdom.cn[2] = tmp;");
|
289
277
|
|
290
|
-
output = VdomHelper.update({vdom
|
278
|
+
output = VdomHelper.update({vdom, vnode}); deltas = output.deltas; vnode = output.vnode;
|
291
279
|
|
292
280
|
t.isDeeplyStrict(vnode, {
|
293
281
|
attributes: {},
|
@@ -313,7 +301,7 @@ StartTest(t => {
|
|
313
301
|
vdom.cn.push(vdom.cn.shift()); // left shift
|
314
302
|
t.diag("vdom.cn.push(vdom.cn.shift());");
|
315
303
|
|
316
|
-
output = VdomHelper.update({vdom
|
304
|
+
output = VdomHelper.update({vdom, vnode}); deltas = output.deltas; vnode = output.vnode;
|
317
305
|
|
318
306
|
t.isDeeplyStrict(vnode, {
|
319
307
|
attributes: {},
|
@@ -339,7 +327,7 @@ StartTest(t => {
|
|
339
327
|
vdom.cn.unshift(vdom.cn.pop()); // right shift
|
340
328
|
t.diag("vdom.cn.unshift(vdom.cn.pop());");
|
341
329
|
|
342
|
-
output = VdomHelper.update({vdom
|
330
|
+
output = VdomHelper.update({vdom, vnode}); deltas = output.deltas; vnode = output.vnode;
|
343
331
|
|
344
332
|
t.isDeeplyStrict(vnode, {
|
345
333
|
attributes: {},
|
@@ -412,7 +400,7 @@ StartTest(t => {
|
|
412
400
|
{tag: 'li', cls: ['neo-list-item'], html: 'Tobias', id: 'neo-list-1__tobiu', tabIndex: -1}
|
413
401
|
];
|
414
402
|
|
415
|
-
output = VdomHelper.update({vdom
|
403
|
+
output = VdomHelper.update({vdom, vnode}); deltas = output.deltas; vnode = output.vnode;
|
416
404
|
|
417
405
|
t.isDeeplyStrict(vnode, {
|
418
406
|
attributes: {},
|
@@ -430,8 +418,10 @@ StartTest(t => {
|
|
430
418
|
]
|
431
419
|
}, 'vnode got updated successfully');
|
432
420
|
|
421
|
+
t.is(deltas.length, 3, 'Count deltas equals 3');
|
422
|
+
|
433
423
|
t.isDeeplyStrict(deltas, [
|
434
|
-
{action: 'removeNode', id: 'neo-list-1__jsakalos'
|
424
|
+
{action: 'removeNode', id: 'neo-list-1__jsakalos'},
|
435
425
|
{action: 'removeNode', id: 'neo-list-1__mrsunshine'},
|
436
426
|
{action: 'removeNode', id: 'neo-list-1__rwaters'}
|
437
427
|
], 'deltas got created successfully');
|
@@ -447,7 +437,7 @@ StartTest(t => {
|
|
447
437
|
{tag: 'li', cls: ['neo-list-item'], html: 'Tobias', id: 'neo-list-1__tobiu', tabIndex: -1}
|
448
438
|
];
|
449
439
|
|
450
|
-
output = VdomHelper.update({vdom
|
440
|
+
output = VdomHelper.update({vdom, vnode}); deltas = output.deltas; vnode = output.vnode;
|
451
441
|
|
452
442
|
t.isDeeplyStrict(vnode, {
|
453
443
|
attributes: {},
|
@@ -468,10 +458,12 @@ StartTest(t => {
|
|
468
458
|
]
|
469
459
|
}, 'vnode got updated successfully');
|
470
460
|
|
461
|
+
t.is(deltas.length, 3, 'Count deltas equals 3');
|
462
|
+
|
471
463
|
t.isDeeplyStrict(deltas, [
|
472
|
-
{action: 'insertNode',
|
473
|
-
{action: 'insertNode',
|
474
|
-
{action: 'insertNode',
|
464
|
+
{action: 'insertNode', index: 2, outerHTML: '<li class="neo-list-item" id="neo-list-1__jsakalos" tabIndex="-1">Jozef</li>', parentId: 'neo-list-1'},
|
465
|
+
{action: 'insertNode', index: 3, outerHTML: '<li class="neo-list-item" id="neo-list-1__mrsunshine" tabIndex="-1">Nils</li>', parentId: 'neo-list-1'},
|
466
|
+
{action: 'insertNode', index: 4, outerHTML: '<li class="neo-list-item" id="neo-list-1__rwaters" tabIndex="-1">Rich</li>', parentId: 'neo-list-1'}
|
475
467
|
], 'deltas got created successfully');
|
476
468
|
|
477
469
|
t.diag("remove items at index: 2, 4, switch nils & tobi");
|
@@ -483,7 +475,7 @@ StartTest(t => {
|
|
483
475
|
{tag: 'li', cls: ['neo-list-item'], html: 'Nils', id: 'neo-list-1__mrsunshine', tabIndex: -1}
|
484
476
|
];
|
485
477
|
|
486
|
-
output = VdomHelper.update({vdom
|
478
|
+
output = VdomHelper.update({vdom, vnode}); deltas = output.deltas; vnode = output.vnode;
|
487
479
|
|
488
480
|
t.isDeeplyStrict(vnode, {
|
489
481
|
attributes: {},
|
@@ -504,7 +496,7 @@ StartTest(t => {
|
|
504
496
|
|
505
497
|
t.isDeeplyStrict(deltas, [
|
506
498
|
{action: 'moveNode', id: 'neo-list-1__tobiu', index: 2, parentId: 'neo-list-1'},
|
507
|
-
{action: 'removeNode', id: 'neo-list-1__jsakalos'
|
499
|
+
{action: 'removeNode', id: 'neo-list-1__jsakalos'},
|
508
500
|
{action: 'removeNode', id: 'neo-list-1__rwaters'}
|
509
501
|
], 'deltas got created successfully');
|
510
502
|
|
@@ -512,7 +504,7 @@ StartTest(t => {
|
|
512
504
|
|
513
505
|
vdom.cn.splice(0, 1);
|
514
506
|
|
515
|
-
output = VdomHelper.update({vdom
|
507
|
+
output = VdomHelper.update({vdom, vnode}); deltas = output.deltas; vnode = output.vnode;
|
516
508
|
|
517
509
|
t.isDeeplyStrict(vnode.childNodes, [
|
518
510
|
{attributes: {tabIndex: '-1'}, childNodes: [], className: ['neo-list-item'], id: 'neo-list-1__camtnbikerrwc', innerHTML: 'Gerard', nodeName: 'li', style: {}, vtype: 'vnode'},
|
@@ -521,7 +513,7 @@ StartTest(t => {
|
|
521
513
|
], 'vnode got updated successfully');
|
522
514
|
|
523
515
|
t.isDeeplyStrict(deltas, [
|
524
|
-
{action: 'removeNode', id: 'neo-list-1__bhaustein'
|
516
|
+
{action: 'removeNode', id: 'neo-list-1__bhaustein'}
|
525
517
|
], 'deltas got created successfully');
|
526
518
|
|
527
519
|
t.diag("restore the initial list state");
|
@@ -535,7 +527,7 @@ StartTest(t => {
|
|
535
527
|
{tag: 'li', cls: ['neo-list-item'], html: 'Tobias', id: 'neo-list-1__tobiu', tabIndex: -1}
|
536
528
|
];
|
537
529
|
|
538
|
-
output = VdomHelper.update({vdom
|
530
|
+
output = VdomHelper.update({vdom, vnode}); deltas = output.deltas; vnode = output.vnode;
|
539
531
|
|
540
532
|
t.isDeeplyStrict(vnode.childNodes, [
|
541
533
|
{attributes: {tabIndex: '-1'}, childNodes: [], className: ['neo-list-item'], id: 'neo-list-1__bhaustein', innerHTML: 'Bastian', nodeName: 'li', style: {}, vtype: 'vnode'},
|
@@ -603,7 +595,7 @@ StartTest(t => {
|
|
603
595
|
{id: '0', html: 'g'}
|
604
596
|
];
|
605
597
|
|
606
|
-
output = VdomHelper.update({vdom
|
598
|
+
output = VdomHelper.update({vdom, vnode}); deltas = output.deltas; vnode = output.vnode;
|
607
599
|
|
608
600
|
t.isDeeplyStrict(vnode, {
|
609
601
|
attributes: {},
|
@@ -628,6 +620,250 @@ StartTest(t => {
|
|
628
620
|
]
|
629
621
|
}, 'vnode got updated successfully');
|
630
622
|
|
631
|
-
console.log(deltas);
|
623
|
+
//console.log(deltas);
|
624
|
+
});
|
625
|
+
|
626
|
+
t.it('Replacing a parent node with one child', t => {
|
627
|
+
t.diag("Creating the tree");
|
628
|
+
|
629
|
+
vdom =
|
630
|
+
{id: 'level-1', cn: [
|
631
|
+
{id: 'level-2', cn: [
|
632
|
+
{id: 'level-3'}
|
633
|
+
]}
|
634
|
+
]};
|
635
|
+
|
636
|
+
vnode = VdomHelper.create(vdom);
|
637
|
+
|
638
|
+
t.isDeeplyStrict(vnode, {
|
639
|
+
attributes: {},
|
640
|
+
className : [],
|
641
|
+
id : 'level-1',
|
642
|
+
innerHTML : undefined,
|
643
|
+
nodeName : 'div',
|
644
|
+
outerHTML : t.any(String),
|
645
|
+
style : {},
|
646
|
+
vtype : 'vnode',
|
647
|
+
|
648
|
+
childNodes: [{
|
649
|
+
id : 'level-2',
|
650
|
+
attributes: {},
|
651
|
+
className : [],
|
652
|
+
innerHTML : undefined,
|
653
|
+
nodeName : 'div',
|
654
|
+
style : {},
|
655
|
+
vtype : 'vnode',
|
656
|
+
|
657
|
+
childNodes: [{
|
658
|
+
id : 'level-3',
|
659
|
+
attributes: {},
|
660
|
+
childNodes: [],
|
661
|
+
className : [],
|
662
|
+
innerHTML : undefined,
|
663
|
+
nodeName : 'div',
|
664
|
+
style : {},
|
665
|
+
vtype : 'vnode'
|
666
|
+
}]
|
667
|
+
}]
|
668
|
+
}, 'vnode got created successfully');
|
669
|
+
|
670
|
+
// replace level 2 with level 3
|
671
|
+
vdom.cn = vdom.cn[0].cn;
|
672
|
+
|
673
|
+
output = VdomHelper.update({vdom, vnode}); deltas = output.deltas; vnode = output.vnode;
|
674
|
+
|
675
|
+
t.isDeeplyStrict(vnode, {
|
676
|
+
attributes: {},
|
677
|
+
className : [],
|
678
|
+
id : 'level-1',
|
679
|
+
innerHTML : undefined,
|
680
|
+
nodeName : 'div',
|
681
|
+
style : {},
|
682
|
+
vtype : 'vnode',
|
683
|
+
|
684
|
+
childNodes:[{
|
685
|
+
id : 'level-3',
|
686
|
+
attributes: {},
|
687
|
+
childNodes: [],
|
688
|
+
className : [],
|
689
|
+
innerHTML : undefined,
|
690
|
+
nodeName : 'div',
|
691
|
+
style : {},
|
692
|
+
vtype : 'vnode'
|
693
|
+
}]
|
694
|
+
}, 'vnode got updated successfully');
|
695
|
+
|
696
|
+
t.is(deltas.length, 2, 'Count deltas equals 2');
|
697
|
+
|
698
|
+
t.isDeeplyStrict(deltas, [
|
699
|
+
{action: 'moveNode', id: 'level-3', index: 0, parentId: 'level-1'},
|
700
|
+
{action: 'removeNode', id: 'level-2'}
|
701
|
+
], 'deltas got created successfully');
|
702
|
+
});
|
703
|
+
|
704
|
+
t.it('Replacing a parent node with multiple children', t => {
|
705
|
+
t.diag("Creating the tree");
|
706
|
+
|
707
|
+
vdom =
|
708
|
+
{id: 'level-1', cn: [
|
709
|
+
{id: 'level-2', cn: [
|
710
|
+
{id: 'level-3-1'},
|
711
|
+
{id: 'level-3-2'}
|
712
|
+
]}
|
713
|
+
]};
|
714
|
+
|
715
|
+
vnode = VdomHelper.create(vdom);
|
716
|
+
|
717
|
+
t.isDeeplyStrict(vnode, {
|
718
|
+
attributes: {},
|
719
|
+
className : [],
|
720
|
+
id : 'level-1',
|
721
|
+
innerHTML : undefined,
|
722
|
+
nodeName : 'div',
|
723
|
+
outerHTML : t.any(String),
|
724
|
+
style : {},
|
725
|
+
vtype : 'vnode',
|
726
|
+
|
727
|
+
childNodes: [{
|
728
|
+
id : 'level-2',
|
729
|
+
attributes: {},
|
730
|
+
className : [],
|
731
|
+
innerHTML : undefined,
|
732
|
+
nodeName : 'div',
|
733
|
+
style : {},
|
734
|
+
vtype : 'vnode',
|
735
|
+
|
736
|
+
childNodes: [{
|
737
|
+
id : 'level-3-1',
|
738
|
+
attributes: {},
|
739
|
+
childNodes: [],
|
740
|
+
className : [],
|
741
|
+
innerHTML : undefined,
|
742
|
+
nodeName : 'div',
|
743
|
+
style : {},
|
744
|
+
vtype : 'vnode'
|
745
|
+
}, {
|
746
|
+
id : 'level-3-2',
|
747
|
+
attributes: {},
|
748
|
+
childNodes: [],
|
749
|
+
className : [],
|
750
|
+
innerHTML : undefined,
|
751
|
+
nodeName : 'div',
|
752
|
+
style : {},
|
753
|
+
vtype : 'vnode'
|
754
|
+
}]
|
755
|
+
}]
|
756
|
+
}, 'vnode got created successfully');
|
757
|
+
|
758
|
+
// replace level 2 with level 3
|
759
|
+
vdom.cn = vdom.cn[0].cn;
|
760
|
+
|
761
|
+
output = VdomHelper.update({vdom, vnode}); deltas = output.deltas; vnode = output.vnode;
|
762
|
+
|
763
|
+
t.isDeeplyStrict(vnode, {
|
764
|
+
attributes: {},
|
765
|
+
className : [],
|
766
|
+
id : 'level-1',
|
767
|
+
innerHTML : undefined,
|
768
|
+
nodeName : 'div',
|
769
|
+
style : {},
|
770
|
+
vtype : 'vnode',
|
771
|
+
|
772
|
+
childNodes:[{
|
773
|
+
id : 'level-3-1',
|
774
|
+
attributes: {},
|
775
|
+
childNodes: [],
|
776
|
+
className : [],
|
777
|
+
innerHTML : undefined,
|
778
|
+
nodeName : 'div',
|
779
|
+
style : {},
|
780
|
+
vtype : 'vnode'
|
781
|
+
}, {
|
782
|
+
id : 'level-3-2',
|
783
|
+
attributes: {},
|
784
|
+
childNodes: [],
|
785
|
+
className : [],
|
786
|
+
innerHTML : undefined,
|
787
|
+
nodeName : 'div',
|
788
|
+
style : {},
|
789
|
+
vtype : 'vnode'
|
790
|
+
}]
|
791
|
+
}, 'vnode got updated successfully');
|
792
|
+
|
793
|
+
t.isDeeplyStrict(deltas, [
|
794
|
+
{action: 'moveNode', id: 'level-3-1', index: 0, parentId: 'level-1'},
|
795
|
+
{action: 'moveNode', id: 'level-3-2', index: 1, parentId: 'level-1'},
|
796
|
+
{action: 'removeNode', id: 'level-2'}
|
797
|
+
], 'deltas got created successfully');
|
798
|
+
});
|
799
|
+
|
800
|
+
t.it('Replacing a parent node with multiple children & adding a new node', t => {
|
801
|
+
t.diag("Creating the tree");
|
802
|
+
|
803
|
+
vdom =
|
804
|
+
{id: 'level-1', cn: [
|
805
|
+
{id: 'level-2', cn: [
|
806
|
+
{id: 'level-3-1'},
|
807
|
+
{id: 'level-3-2'}
|
808
|
+
]}
|
809
|
+
]};
|
810
|
+
|
811
|
+
vnode = VdomHelper.create(vdom);
|
812
|
+
|
813
|
+
// replace level 2 with level 3
|
814
|
+
vdom.cn = vdom.cn[0].cn;
|
815
|
+
|
816
|
+
// adding a new node
|
817
|
+
vdom.cn.splice(1, 0, {id: 'new-node'})
|
818
|
+
|
819
|
+
output = VdomHelper.update({vdom, vnode}); deltas = output.deltas; vnode = output.vnode;
|
820
|
+
|
821
|
+
t.isDeeplyStrict(vnode, {
|
822
|
+
attributes: {},
|
823
|
+
className : [],
|
824
|
+
id : 'level-1',
|
825
|
+
innerHTML : undefined,
|
826
|
+
nodeName : 'div',
|
827
|
+
style : {},
|
828
|
+
vtype : 'vnode',
|
829
|
+
|
830
|
+
childNodes:[{
|
831
|
+
id : 'level-3-1',
|
832
|
+
attributes: {},
|
833
|
+
childNodes: [],
|
834
|
+
className : [],
|
835
|
+
innerHTML : undefined,
|
836
|
+
nodeName : 'div',
|
837
|
+
style : {},
|
838
|
+
vtype : 'vnode'
|
839
|
+
}, {
|
840
|
+
id : 'new-node',
|
841
|
+
attributes: {},
|
842
|
+
childNodes: [],
|
843
|
+
className : [],
|
844
|
+
innerHTML : undefined,
|
845
|
+
nodeName : 'div',
|
846
|
+
style : {},
|
847
|
+
vtype : 'vnode'
|
848
|
+
}, {
|
849
|
+
id : 'level-3-2',
|
850
|
+
attributes: {},
|
851
|
+
childNodes: [],
|
852
|
+
className : [],
|
853
|
+
innerHTML : undefined,
|
854
|
+
nodeName : 'div',
|
855
|
+
style : {},
|
856
|
+
vtype : 'vnode'
|
857
|
+
}]
|
858
|
+
}, 'vnode got updated successfully');
|
859
|
+
|
860
|
+
t.is(deltas.length, 4, 'Count deltas equals 4');
|
861
|
+
|
862
|
+
t.isDeeplyStrict(deltas, [
|
863
|
+
{action: 'moveNode', id: 'level-3-1', index: 0, parentId: 'level-1'},
|
864
|
+
{action: 'insertNode', index: 1, parentId: 'level-1', outerHTML: t.any(String)},
|
865
|
+
{action: 'moveNode', id: 'level-3-2', index: 2, parentId: 'level-1'},
|
866
|
+
{action: 'removeNode', id: 'level-2'}
|
867
|
+
], 'deltas got created successfully');
|
632
868
|
});
|
633
869
|
});
|