Skip to content

Commit edeebfd

Browse files
committed
#7076 WIP
1 parent 989dba0 commit edeebfd

6 files changed

Lines changed: 190 additions & 89 deletions

File tree

apps/portal/view/ViewportController.mjs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -319,8 +319,11 @@ class ViewportController extends Controller {
319319

320320
// enable "fast clicking" on main nav items => do not replace a cube layout with a new instance of cube
321321
if (container.layout.ntype !== 'layout-cube') {
322-
container.layout = {ntype: 'cube', activeIndex, fitContainer: true, hideInactiveCardsOnDestroy: true};
323-
await me.timeout(200);
322+
container.setSilent({
323+
layout: {ntype: 'cube', activeIndex, fitContainer: true, hideInactiveCardsOnDestroy: true}
324+
});
325+
await container.promiseUpdate();
326+
await me.timeout(50);
324327
}
325328

326329
container.layout.activeIndex = index;

src/Neo.mjs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -304,7 +304,11 @@ Neo = globalThis.Neo = Object.assign({
304304
*/
305305
createConfig(target, key, initialValue) {
306306
if (Neo.hasPropertySetter(target, key)) {
307-
throw('Config ' + key + '_ (' + target.className + ') already has a set method, use beforeGet, beforeSet & afterSet instead')
307+
throw(
308+
`Invalid config in ${target.className}: '${key}_'. The config '${key}' is already defined as reactive by a parent class.
309+
To override the default value, use '${key}' (without the underscore) in your static config.
310+
If you intended to create custom logic, use the 'beforeGet${Neo.capitalize(key)}()', 'beforeSet${Neo.capitalize(key)}()', and 'afterSet${Neo.capitalize(key)}()' hooks instead of redefining the config.`
311+
)
308312
}
309313

310314
const

src/component/Base.mjs

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1899,33 +1899,33 @@ class Component extends Base {
18991899
* @returns {Promise<*>}
19001900
*/
19011901
set(values={}, silent=false) {
1902-
let me = this,
1903-
needsRendering = values.hidden === false && values.hidden !== me.hidden;
1904-
1905-
me.silentVdomUpdate = true;
1906-
1907-
super.set(values);
1902+
const
1903+
me = this,
1904+
wasHidden = me.hidden;
19081905

1909-
me.silentVdomUpdate = false;
1906+
me.setSilent(values);
19101907

1911-
if (silent || !me.needsVdomUpdate) {
1912-
return Promise.resolve()
1913-
} else {
1914-
if (needsRendering) {
1908+
if (!silent && me.needsVdomUpdate) {
1909+
if (wasHidden && !me.hidden) {
19151910
me.show();
19161911
return Promise.resolve()
19171912
}
19181913

19191914
return me.promiseUpdate()
19201915
}
1916+
1917+
return Promise.resolve()
19211918
}
19221919

19231920
/**
1924-
* Convenience shortcut calling set() with the silent flag
1921+
* A silent version of set(), which does not trigger a vdom update at the end.
1922+
* Useful for batching multiple config changes.
19251923
* @param {Object} values={}
19261924
*/
1927-
setSilent(values = {}) {
1928-
return this.set(values, true)
1925+
setSilent(values={}) {
1926+
this.silentVdomUpdate = true;
1927+
super.set(values);
1928+
this.silentVdomUpdate = false
19291929
}
19301930

19311931
/**

src/layout/Cube.mjs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,7 @@ class Cube extends Card {
116116

117117
container.mounted && container.update();
118118

119-
me.timeout(100).then(() => {
119+
me.timeout(50).then(() => {
120120
container.addCls('neo-animate')
121121
})
122122
}

src/vdom/Helper.mjs

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,8 @@ class Helper extends Base {
5454
return deltas;
5555
}
5656

57-
let attributes, delta, value, keys, styles, add, remove;
57+
let delta = {},
58+
attributes, value, keys, styles, add, remove;
5859

5960
if (vnode.vtype === 'text' && vnode.textContent !== oldVnode.textContent) {
6061
deltas.default.push({
@@ -79,7 +80,6 @@ class Helper extends Base {
7980
});
8081

8182
keys.forEach(prop => {
82-
delta = {};
8383
value = vnode[prop];
8484

8585
switch (prop) {
@@ -145,12 +145,12 @@ class Helper extends Base {
145145
}
146146
break
147147
}
148+
});
148149

149-
if (Object.keys(delta).length > 0) {
150-
delta.id = vnode.id;
151-
deltas.default.push(delta)
152-
}
153-
})
150+
if (Object.keys(delta).length > 0) {
151+
delta.id = vnode.id;
152+
deltas.default.push(delta)
153+
}
154154
}
155155

156156
return deltas
@@ -698,7 +698,7 @@ class Helper extends Base {
698698
throw new Error('Neo.vdom.Helper: StringFromVnode is not loaded yet for updates!');
699699
}
700700
}
701-
701+
console.log(opts.vdom.id);
702702
vnode = me.createVnode(opts.vdom);
703703
deltas = me.createDeltas({oldVnode: opts.vnode, vnode});
704704

0 commit comments

Comments
 (0)