efront 3.17.2 → 3.18.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/apps/pivot/api/edit.js +1 -0
- package/apps/pivot/api/list.js +20 -0
- package/apps/pivot/api.yml +8 -4
- package/apps/pivot/dict/edit.js +1 -0
- package/apps/pivot/dict/list.js +12 -0
- package/apps/pivot/link/chat.js +32 -0
- package/apps/pivot/link/chat.less +5 -0
- package/apps/pivot/link/list.html +6 -3
- package/apps/pivot/link/list.js +23 -2
- package/apps/pivot/link/list.less +10 -2
- package/apps/pivot/menu.yml +4 -1
- package/apps/pivot/proxy/list.js +9 -8
- package/apps/pivot/task/list.js +1 -1
- package/apps/pivot/user/api.html +2 -0
- package/apps/pivot/user/api.js +14 -0
- package/apps/pivot/user/api.less +0 -0
- package/coms/basic/Speed.js +0 -1
- package/coms/basic/assert.js +5 -3
- package/coms/basic/lazy.js +19 -9
- package/coms/basic/lazy_test.js +62 -0
- package/coms/basic/parseURL.js +21 -2
- package/coms/basic/refilm_decode.js +4 -2
- package/coms/frame/chat.html +19 -0
- package/coms/frame/chat.js +60 -0
- package/coms/frame/chat.less +177 -0
- package/coms/frame/design.html +7 -0
- package/coms/frame/design.js +23 -0
- package/coms/frame/design.less +17 -0
- package/coms/frame/dict.js +21 -0
- package/coms/frame/edit.js +1 -1
- package/coms/frame/list.js +1 -1
- package/coms/frame/route.js +1 -0
- package/coms/kugou/song.html +1 -1
- package/coms/kugou/song.js +2 -1
- package/coms/pivot/pedit.js +3 -3
- package/coms/pivot/plist.js +2 -2
- package/coms/zimoli/HexEditor.js +1 -0
- package/coms/zimoli/HexEditor.less +2 -2
- package/coms/zimoli/Item.js +5 -0
- package/coms/zimoli/cloneVisible.js +1 -0
- package/coms/zimoli/container.js +13 -7
- package/coms/zimoli/data.js +26 -12
- package/coms/zimoli/design.html +5 -4
- package/coms/zimoli/design.less +8 -3
- package/coms/zimoli/drag.js +1 -1
- package/coms/zimoli/field.html +1 -1
- package/coms/zimoli/grid.js +69 -19
- package/coms/zimoli/list.js +5 -5
- package/coms/zimoli/menu.js +7 -6
- package/coms/zimoli/menuItem.js +1 -1
- package/coms/zimoli/menuList.js +2 -1
- package/coms/zimoli/model.js +4 -3
- package/coms/zimoli/render.js +70 -32
- package/coms/zimoli/tree.js +1 -1
- package/coms/zimoli/vbox.js +2 -2
- package/coms/zimoli/zimoli.js +12 -2
- package/package.json +1 -1
- package/public/efront.js +1 -1
package/coms/zimoli/grid.js
CHANGED
|
@@ -202,6 +202,21 @@ var resizeView = function (event) {
|
|
|
202
202
|
}
|
|
203
203
|
grid.reshape();
|
|
204
204
|
};
|
|
205
|
+
var clearResizer = function (grid) {
|
|
206
|
+
var target = grid.editting.target;
|
|
207
|
+
if (target) target.style.zIndex = null;
|
|
208
|
+
var { clientX, clientY } = grid.editting;
|
|
209
|
+
if (clientX) {
|
|
210
|
+
clientX[1].forEach(e => removeClass(e, 'border-right'));
|
|
211
|
+
clientX[2].forEach(e => removeClass(e, 'border-left'));
|
|
212
|
+
}
|
|
213
|
+
if (clientY) {
|
|
214
|
+
clientY[1].forEach(e => removeClass(e, "border-bottom"));
|
|
215
|
+
clientY[2].forEach(e => removeClass(e, "border-top"));
|
|
216
|
+
}
|
|
217
|
+
grid.editting = null;
|
|
218
|
+
};
|
|
219
|
+
|
|
205
220
|
var resizer = function (event) {
|
|
206
221
|
var grid = this;
|
|
207
222
|
if (!grid.direction) return;
|
|
@@ -227,24 +242,7 @@ var resizer = function (event) {
|
|
|
227
242
|
//右边
|
|
228
243
|
generateResizeParameters.call(grid, "x", "left", "right", "width", area.right, event, 1, resize);
|
|
229
244
|
}
|
|
230
|
-
grid.editting = resize;
|
|
231
|
-
var cancelup = onmouseup(window, function () {
|
|
232
|
-
var target = grid.editting.target;
|
|
233
|
-
if (target) target.style.zIndex = null;
|
|
234
|
-
var { clientX, clientY } = resize;
|
|
235
|
-
resize = null;
|
|
236
|
-
if (clientX) {
|
|
237
|
-
clientX[1].forEach(e => removeClass(e, 'border-right'));
|
|
238
|
-
clientX[2].forEach(e => removeClass(e, 'border-left'));
|
|
239
|
-
}
|
|
240
|
-
if (clientY) {
|
|
241
|
-
clientY[1].forEach(e => removeClass(e, "border-bottom"));
|
|
242
|
-
clientY[2].forEach(e => removeClass(e, "border-top"));
|
|
243
|
-
}
|
|
244
|
-
grid.editting = null;
|
|
245
|
-
|
|
246
|
-
cancelup();
|
|
247
|
-
});
|
|
245
|
+
return grid.editting = resize;
|
|
248
246
|
};
|
|
249
247
|
var gridListener = function () {
|
|
250
248
|
var grid = this;
|
|
@@ -261,7 +259,14 @@ var gridListener = function () {
|
|
|
261
259
|
/**
|
|
262
260
|
* 指针按下
|
|
263
261
|
*/
|
|
264
|
-
var offmousedown = onmousedown(grid,
|
|
262
|
+
var offmousedown = onmousedown(grid, function (event) {
|
|
263
|
+
if (!resizer.call(this, event)) return;
|
|
264
|
+
var that = this;
|
|
265
|
+
var cancelup = onmouseup(window, function () {
|
|
266
|
+
clearResizer(that);
|
|
267
|
+
cancelup();
|
|
268
|
+
});
|
|
269
|
+
});
|
|
265
270
|
|
|
266
271
|
var offremove = onremove(grid, function () {
|
|
267
272
|
offremove();
|
|
@@ -359,6 +364,51 @@ var bindToOrderedSpliters = function (split_points, target, value, side) {
|
|
|
359
364
|
return split_points;
|
|
360
365
|
};
|
|
361
366
|
var grid_prototype = {
|
|
367
|
+
resizeCell(cell, side, delta) {
|
|
368
|
+
side = side.toLowerCase();
|
|
369
|
+
var { left, top, right, bottom } = getScreenPosition(cell);
|
|
370
|
+
var clientX, clientY, targetX, targetY;
|
|
371
|
+
var direction;
|
|
372
|
+
switch (side.toLowerCase()[0]) {
|
|
373
|
+
case "l":
|
|
374
|
+
case "w":
|
|
375
|
+
direction = 'w';
|
|
376
|
+
clientX = left;
|
|
377
|
+
targetX = left + delta;
|
|
378
|
+
targetY = clientY = top + bottom >> 1;
|
|
379
|
+
break;
|
|
380
|
+
case "t":
|
|
381
|
+
case "n":
|
|
382
|
+
direction = 'n';
|
|
383
|
+
clientY = top;
|
|
384
|
+
targetY = top + delta;
|
|
385
|
+
targetX = clientX = left + right >> 1;
|
|
386
|
+
break;
|
|
387
|
+
case "r":
|
|
388
|
+
case "e":
|
|
389
|
+
direction = 'e';
|
|
390
|
+
clientX = right;
|
|
391
|
+
targetX = right + delta;
|
|
392
|
+
targetY = clientY = left + right >> 1;
|
|
393
|
+
|
|
394
|
+
break;
|
|
395
|
+
case "b":
|
|
396
|
+
case "s":
|
|
397
|
+
direction = 's';
|
|
398
|
+
clientX = bottom;
|
|
399
|
+
targetY = bottom + delta;
|
|
400
|
+
targetX = clientX = left + right >> 1;
|
|
401
|
+
break;
|
|
402
|
+
default:
|
|
403
|
+
throw new Error("参数不支持", side);
|
|
404
|
+
}
|
|
405
|
+
this.direction = direction;
|
|
406
|
+
var e = resizer.call(this, { clientX, clientY, target: cell });
|
|
407
|
+
if (!e) return;
|
|
408
|
+
resizeView.call(this, { clientX: targetX, clientY: targetY, target: cell });
|
|
409
|
+
clearResizer(this);
|
|
410
|
+
this.direction = '';
|
|
411
|
+
},
|
|
362
412
|
setGrid(breakpoints, bounds) {
|
|
363
413
|
var grid = this;
|
|
364
414
|
if (!bounds) {
|
package/coms/zimoli/list.js
CHANGED
|
@@ -379,12 +379,12 @@ function ylist(container, generator, $Y) {
|
|
|
379
379
|
if (deltay >= delta) {
|
|
380
380
|
return false;
|
|
381
381
|
}
|
|
382
|
-
if (deltay <
|
|
383
|
-
else if (deltay > count || deltay > 3) {
|
|
384
|
-
y = last_y + Math.max(2 * (target_y > last_y ? .8 : -.8));
|
|
385
|
-
}
|
|
382
|
+
if (deltay < 2) y = target_y;
|
|
386
383
|
else {
|
|
387
|
-
|
|
384
|
+
var speed = Math.abs(spd.read()[0]);
|
|
385
|
+
if (speed < 1) speed = 1;
|
|
386
|
+
if (deltay < 3) speed = .5;
|
|
387
|
+
y = last_y + (target_y > last_y ? speed : -speed);
|
|
388
388
|
}
|
|
389
389
|
list.Top(y);
|
|
390
390
|
if (target_y === y) {
|
package/coms/zimoli/menu.js
CHANGED
|
@@ -48,19 +48,20 @@ var getArrayNodes = function (elem) {
|
|
|
48
48
|
var nodeName = node.children.length > 1 ? node.children[0].innerHTML : node.innerHTML;
|
|
49
49
|
deep++;
|
|
50
50
|
if (nodeName) {
|
|
51
|
-
nodes.push({
|
|
51
|
+
nodes.push(new Item({
|
|
52
52
|
name: nodeName,
|
|
53
53
|
tab: deep,
|
|
54
54
|
href: node.getAttribute("path") || node.getAttribute("href"),
|
|
55
55
|
class: node.className,
|
|
56
56
|
closed: true
|
|
57
|
-
});
|
|
57
|
+
}));
|
|
58
58
|
}
|
|
59
59
|
var index = nodes.length - 1;
|
|
60
60
|
if (node.children.length > 1) {
|
|
61
61
|
[].forEach.call(node.children[1].children, run);
|
|
62
62
|
}
|
|
63
|
-
nodes[index].
|
|
63
|
+
nodes[index].push.apply(nodes[index], nodes.splice(index + 1, nodes.length - index));
|
|
64
|
+
nodes[index].children = nodes[index];
|
|
64
65
|
deep--;
|
|
65
66
|
};
|
|
66
67
|
[].forEach.call(elem.children, run);
|
|
@@ -93,7 +94,7 @@ var getTreeNodes = function (elem) {
|
|
|
93
94
|
var emitEvent = function (item, event) {
|
|
94
95
|
event.preventDefault(true);
|
|
95
96
|
if (item.disabled) return;
|
|
96
|
-
active(this, item, item, createItemTarget.call(this, item));
|
|
97
|
+
active(this, item, item, this.$src ? createItemTarget.call(this, item) : this);
|
|
97
98
|
}
|
|
98
99
|
function bindGlobalkey(elem, keymap, emit) {
|
|
99
100
|
if (elem.keymap) {
|
|
@@ -194,8 +195,8 @@ function main(elem, mode) {
|
|
|
194
195
|
case "y":
|
|
195
196
|
case "vertical":
|
|
196
197
|
if (!direction) mode = "vertical", direction = 'y';
|
|
197
|
-
var emit = function (item) {
|
|
198
|
-
active(elem, item.value, item, createItemTarget.call(elem, item.value));
|
|
198
|
+
var emit = function (item, target) {
|
|
199
|
+
active(elem, item.value, item, elem.$src ? createItemTarget.call(elem, item.value) : target);
|
|
199
200
|
};
|
|
200
201
|
if ("$src" in elem) {
|
|
201
202
|
getGenerator(elem, 'menu-item');
|
package/coms/zimoli/menuItem.js
CHANGED
|
@@ -17,7 +17,7 @@ function main(elem, scope, hasIcon) {
|
|
|
17
17
|
else {
|
|
18
18
|
item.removeAttribute("disabled");
|
|
19
19
|
}
|
|
20
|
-
render(item.children, scope, hasIcon instanceof Array ? hasIcon : [{ useIcon: hasIcon, hasIcon, name, icon }],
|
|
20
|
+
render(item.children, scope, hasIcon instanceof Array ? hasIcon : [{ useIcon: hasIcon, hasIcon, name, icon }], 0);
|
|
21
21
|
if (scope.line) item.setAttribute("line", ''), on("click")(item, preventDefault);
|
|
22
22
|
if (scope.hotkey) bindAccesskey(item, scope.hotkey);
|
|
23
23
|
return item;
|
package/coms/zimoli/menuList.js
CHANGED
|
@@ -286,6 +286,7 @@ function main(page, items, active, direction = 'y') {
|
|
|
286
286
|
};
|
|
287
287
|
var $scope = {
|
|
288
288
|
"menu-item"(e, s) {
|
|
289
|
+
if (e && s === e.$scope) s = itemName ? s[itemName] : s.menu;
|
|
289
290
|
var a = button(
|
|
290
291
|
menuItem(e, s.value, this.hasIcon)
|
|
291
292
|
);
|
|
@@ -293,7 +294,7 @@ function main(page, items, active, direction = 'y') {
|
|
|
293
294
|
page.firstMenu = a;
|
|
294
295
|
page.total = items.length;
|
|
295
296
|
}
|
|
296
|
-
a.menu = s
|
|
297
|
+
a.menu = s;
|
|
297
298
|
return a;
|
|
298
299
|
},
|
|
299
300
|
menus: items,
|
package/coms/zimoli/model.js
CHANGED
|
@@ -212,9 +212,9 @@ function main(elem) {
|
|
|
212
212
|
if (create) {
|
|
213
213
|
var e = create(elem, data, field_ref);
|
|
214
214
|
if (isNode(e)) {
|
|
215
|
-
appendChild(elem, e);
|
|
215
|
+
if (e !== elem) appendChild(elem, e);
|
|
216
216
|
}
|
|
217
|
-
else {
|
|
217
|
+
else if (!isEmpty(e)) {
|
|
218
218
|
elem.innerHTML = e;
|
|
219
219
|
}
|
|
220
220
|
return;
|
|
@@ -222,6 +222,7 @@ function main(elem) {
|
|
|
222
222
|
elem.innerHTML = '<span ng-bind=get()></span>';
|
|
223
223
|
render(elem, {
|
|
224
224
|
get() {
|
|
225
|
+
if (!field.key) return;
|
|
225
226
|
var value = seek(data, field.key);
|
|
226
227
|
if (field.options) {
|
|
227
228
|
if (!field.optionsMap) {
|
|
@@ -243,7 +244,7 @@ function main(elem) {
|
|
|
243
244
|
}
|
|
244
245
|
} else {
|
|
245
246
|
var create = field_type === "function" ? field_editor : constructors[field_type];
|
|
246
|
-
var ipt = create ? create(elem, field_ref) : input();
|
|
247
|
+
var ipt = create ? create(elem, field_ref) : field.key ? input() : null;
|
|
247
248
|
|
|
248
249
|
if (ipt) {
|
|
249
250
|
if (ipt !== elem) appendChild(elem, ipt);
|
package/coms/zimoli/render.js
CHANGED
|
@@ -1,17 +1,26 @@
|
|
|
1
1
|
var hasOwnProperty = {}.hasOwnProperty;
|
|
2
2
|
var renderElements = Object.create(null);
|
|
3
3
|
var presets = Object.create(null);
|
|
4
|
+
var createTemplateNodes = function (text) {
|
|
5
|
+
var node = document.createElement(this.parentNode.tagName || "div");
|
|
6
|
+
node.innerHTML = text;
|
|
7
|
+
remove(this.with);
|
|
8
|
+
this.with = [].slice.call(node.childNodes, 0);
|
|
9
|
+
appendChild.after(this, this.with);
|
|
10
|
+
renderElement(this.with, this.$scope, this.$parentScopes, this.renderid === 9);
|
|
11
|
+
};
|
|
4
12
|
presets.template = function (t) {
|
|
5
13
|
var comment = document.createComment('template');
|
|
6
14
|
comment.$scope = t.$scope;
|
|
7
15
|
comment.$parentScopes = t.$parentScopes;
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
16
|
+
if (!t.innerHTML) {
|
|
17
|
+
care(comment, createTemplateNodes)
|
|
18
|
+
}
|
|
19
|
+
else {
|
|
20
|
+
once("append")(comment, function () {
|
|
21
|
+
createTemplateNodes.call(comment, t.innerHTML);
|
|
22
|
+
});
|
|
23
|
+
}
|
|
15
24
|
return comment;
|
|
16
25
|
};
|
|
17
26
|
window.renderElements = renderElements;
|
|
@@ -20,8 +29,11 @@ var renderidClosed = 0;
|
|
|
20
29
|
var addRenderElement = function () {
|
|
21
30
|
var element = this;
|
|
22
31
|
if (!isNode(element)) return;
|
|
23
|
-
if (element.renderid
|
|
24
|
-
|
|
32
|
+
if (element.renderid !== 9) {
|
|
33
|
+
// 只渲染一次
|
|
34
|
+
if (element.renderid < 10 && element.renderid > 0) element.renderid = ++renderidOffset;
|
|
35
|
+
renderElements[element.renderid] = element;
|
|
36
|
+
}
|
|
25
37
|
rebuild(element);
|
|
26
38
|
};
|
|
27
39
|
var removeRenderElement = function () {
|
|
@@ -78,12 +90,19 @@ var createGetter = function (search, isprop = true) {
|
|
|
78
90
|
var initialComment = function (renders, type, expression) {
|
|
79
91
|
var comment = document.createComment(`${type} ${expression}`);
|
|
80
92
|
comment.renders = renders;
|
|
81
|
-
comment.renderid = ++renderidOffset;
|
|
82
|
-
onappend(comment, addRenderElement);
|
|
83
|
-
onremove(comment, removeRenderElement);
|
|
84
93
|
appendChild.after(this, comment);
|
|
85
94
|
if (!/if/i.test(type)) remove(this);
|
|
86
|
-
|
|
95
|
+
if (!this.$struct.once) {
|
|
96
|
+
comment.renderid = ++renderidOffset;
|
|
97
|
+
onmounted(comment, addRenderElement);
|
|
98
|
+
onremove(comment, removeRenderElement);
|
|
99
|
+
if (isMounted(comment) || eagermount) rebuild(comment);
|
|
100
|
+
}
|
|
101
|
+
else {
|
|
102
|
+
comment.renderid = 9;
|
|
103
|
+
rebuild(comment);
|
|
104
|
+
remove(comment);
|
|
105
|
+
}
|
|
87
106
|
return comment;
|
|
88
107
|
};
|
|
89
108
|
var parseRepeat = function (expression) {
|
|
@@ -442,7 +461,7 @@ var directives = {
|
|
|
442
461
|
} else if (/^(select|input|textarea)$/i.test(this.tagName) || "value" in this) {
|
|
443
462
|
this.renders.push(setter || function () {
|
|
444
463
|
var value = getter();
|
|
445
|
-
if (value
|
|
464
|
+
if (isEmpty(value)) value = "";
|
|
446
465
|
if (deepEqual(oldValue, value)) return;
|
|
447
466
|
oldValue = value;
|
|
448
467
|
if (this.value !== value) this.value = value;
|
|
@@ -599,17 +618,17 @@ function getFromScopes(key, scope, parentScopes) {
|
|
|
599
618
|
}
|
|
600
619
|
}
|
|
601
620
|
|
|
602
|
-
function renderElement(element, scope = element.$scope, parentScopes = element.$parentScopes,
|
|
621
|
+
function renderElement(element, scope = element.$scope, parentScopes = element.$parentScopes, once) {
|
|
603
622
|
if (!isNode(element) && element.length) {
|
|
604
623
|
return [].concat.apply([], element).map(function (element) {
|
|
605
|
-
return renderElement(element, scope, parentScopes);
|
|
624
|
+
return renderElement(element, scope, parentScopes, once);
|
|
606
625
|
});
|
|
607
626
|
}
|
|
608
627
|
if (!isElement(element)) {
|
|
609
628
|
return element;
|
|
610
629
|
}
|
|
611
630
|
if (!isNumber(element.renderid)) {
|
|
612
|
-
renderStructure(element, scope, parentScopes);
|
|
631
|
+
renderStructure(element, scope, parentScopes, once);
|
|
613
632
|
}
|
|
614
633
|
var elementid = element.getAttribute("renderid") || element.getAttribute("elementid") || element.getAttribute("id");
|
|
615
634
|
if (elementid) {
|
|
@@ -631,7 +650,8 @@ function renderElement(element, scope = element.$scope, parentScopes = element.$
|
|
|
631
650
|
if (parentNode.renderid > 1 || isMounted(parentNode)) element.renderid = 2;
|
|
632
651
|
}
|
|
633
652
|
element.renders = element.renders ? [].concat(element.renders) : [];
|
|
634
|
-
var { ons, copys, attrs, props, binds, context: withContext, ids } = element.$struct;
|
|
653
|
+
var { ons, copys, attrs, props, binds, context: withContext, ids, once } = element.$struct;
|
|
654
|
+
if (once) element.renderid = 9;
|
|
635
655
|
delete element.$struct;
|
|
636
656
|
if (binds.src) {
|
|
637
657
|
element.$src = parseRepeat(binds.src);
|
|
@@ -671,7 +691,9 @@ function renderElement(element, scope = element.$scope, parentScopes = element.$
|
|
|
671
691
|
}
|
|
672
692
|
});
|
|
673
693
|
replacer.renderid = element.renderid;
|
|
674
|
-
|
|
694
|
+
var renders = element.renders;
|
|
695
|
+
if (replacer.renders) renders = renders.concat(replacer.renders);
|
|
696
|
+
replacer.renders = renders;
|
|
675
697
|
if (binds.src) replacer.$src = element.$src;
|
|
676
698
|
element = replacer;
|
|
677
699
|
element.$scope = scope;
|
|
@@ -679,8 +701,10 @@ function renderElement(element, scope = element.$scope, parentScopes = element.$
|
|
|
679
701
|
}
|
|
680
702
|
}
|
|
681
703
|
}
|
|
682
|
-
if (element.children && element.children.length) renderElement(element.children, scope, parentScopes);
|
|
704
|
+
if (element.children && element.children.length) renderElement(element.children, scope, parentScopes, once);
|
|
683
705
|
if (!isFirstRender) return element;
|
|
706
|
+
var renders = element.renders;
|
|
707
|
+
element.renders = [];
|
|
684
708
|
for (var k in binds) {
|
|
685
709
|
if (directives.hasOwnProperty(k)) {
|
|
686
710
|
directives[k].call(element, [withContext, binds[k]])
|
|
@@ -698,11 +722,17 @@ function renderElement(element, scope = element.$scope, parentScopes = element.$
|
|
|
698
722
|
} catch (e) { }
|
|
699
723
|
}
|
|
700
724
|
ons.forEach(([on, key, value]) => on.call(element, key, [withContext, value]));
|
|
725
|
+
if (renders.length) element.renders.push.apply(element.renders, renders);
|
|
701
726
|
if (element.renders.length) {
|
|
702
|
-
|
|
703
|
-
|
|
704
|
-
|
|
705
|
-
|
|
727
|
+
if (element.renderid !== 9) {
|
|
728
|
+
onmounted(element, addRenderElement);
|
|
729
|
+
onremove(element, removeRenderElement);
|
|
730
|
+
if (isMounted(element) || element.renderid > 1) addRenderElement.call(element);
|
|
731
|
+
else if (eagermount) rebuild(element);
|
|
732
|
+
}
|
|
733
|
+
else {
|
|
734
|
+
rebuild(element);
|
|
735
|
+
}
|
|
706
736
|
}
|
|
707
737
|
if (elementid) scope[elementid] = element;
|
|
708
738
|
for (var id of ids) {
|
|
@@ -710,7 +740,7 @@ function renderElement(element, scope = element.$scope, parentScopes = element.$
|
|
|
710
740
|
}
|
|
711
741
|
return element;
|
|
712
742
|
}
|
|
713
|
-
function renderStructure(element, scope, parentScopes = []) {
|
|
743
|
+
function renderStructure(element, scope, parentScopes = [], once) {
|
|
714
744
|
// 处理结构流
|
|
715
745
|
if (parentScopes !== null && !isArray(parentScopes)) {
|
|
716
746
|
throw new Error('父级作用域链应以数组的类型传入');
|
|
@@ -791,25 +821,33 @@ function renderStructure(element, scope, parentScopes = []) {
|
|
|
791
821
|
if (!/\-/.test(name) || value === '') {
|
|
792
822
|
copys.push(attr);
|
|
793
823
|
}
|
|
794
|
-
|
|
824
|
+
var k = name.replace(/\-(\w)/g, (_, w) => w.toUpperCase());
|
|
825
|
+
if (!(k in element)) {
|
|
826
|
+
props[k] = value === "" ? true : value;
|
|
827
|
+
}
|
|
828
|
+
else {
|
|
829
|
+
props[k] = element[k];
|
|
830
|
+
}
|
|
795
831
|
}
|
|
796
832
|
}
|
|
797
|
-
if (
|
|
833
|
+
if (props["zimoli"] || props["fresh"] || props["once"]) once = true;
|
|
834
|
+
else if (props["refresh"] || props["digest"] || props["mount"]) once = false;
|
|
835
|
+
if (!element.$struct) element.$struct = { ons, copys, binds, attrs: attr1, props, context: withContext, ids, once };
|
|
798
836
|
if (element.renderid <= -1) createStructure.call(element, types.if, types.repeat, withContext);
|
|
799
837
|
}
|
|
800
838
|
var eagermount = false, renderlock = false;
|
|
801
839
|
function render(element, scope, parentScopes, lazy = true) {
|
|
802
840
|
var if_top_length = if_top.length;
|
|
803
841
|
var haslock = false;
|
|
842
|
+
if (isFinite(scope) && arguments.length === 2) lazy = scope, scope = undefined;
|
|
843
|
+
else if (isFinite(parentScopes) && arguments.length === 3) lazy = parentScopes, parentScopes = undefined;
|
|
844
|
+
var renderonce = lazy === 0;
|
|
804
845
|
if (!renderlock) {
|
|
805
846
|
haslock = true;
|
|
806
847
|
renderlock = true;
|
|
807
|
-
|
|
808
|
-
else if (isBoolean(parentScopes) && arguments.length === 3) lazy = +parentScopes, parentScopes = undefined;
|
|
809
|
-
else lazy = +lazy;
|
|
810
|
-
eagermount = !lazy;
|
|
848
|
+
eagermount = !+lazy;
|
|
811
849
|
}
|
|
812
|
-
var e = renderElement(element, scope, parentScopes);
|
|
850
|
+
var e = renderElement(element, scope, parentScopes, renderonce);
|
|
813
851
|
if (haslock) {
|
|
814
852
|
renderlock = false;
|
|
815
853
|
eagermount = false;
|
package/coms/zimoli/tree.js
CHANGED
|
@@ -224,7 +224,7 @@ function tree() {
|
|
|
224
224
|
_div.refresh();
|
|
225
225
|
onclick(_div, function (event) {
|
|
226
226
|
var isClosed = com.isClosed();
|
|
227
|
-
if (!active(banner, com.value, com,
|
|
227
|
+
if (!active(banner, com.value, com, banner.$src ? createItemTarget.call(banner, com.value) : _div)) {
|
|
228
228
|
return;
|
|
229
229
|
}
|
|
230
230
|
if (isClosed === com.isClosed() && com.length) {
|
package/coms/zimoli/vbox.js
CHANGED
|
@@ -84,7 +84,7 @@ function ybox(generator) {
|
|
|
84
84
|
var stop = _box.stopY;
|
|
85
85
|
var stop2 = lazy(function () {
|
|
86
86
|
scrollY.smooth(stop);
|
|
87
|
-
},
|
|
87
|
+
}, 40);
|
|
88
88
|
var decrease = function () {
|
|
89
89
|
var res = _decrease(increaser_t) + _decrease(increaser_b);
|
|
90
90
|
if (!res) {
|
|
@@ -128,7 +128,7 @@ function ybox(generator) {
|
|
|
128
128
|
} else {
|
|
129
129
|
var wheelTime = 0;
|
|
130
130
|
onmousewheel(_box, function (event) {
|
|
131
|
-
if (event.timeStamp - wheelTime >
|
|
131
|
+
if (event.timeStamp - wheelTime > 40 && Math.abs(event.deltaY) < 12) {
|
|
132
132
|
wheelTime = event.timeStamp;
|
|
133
133
|
return;
|
|
134
134
|
}
|
package/coms/zimoli/zimoli.js
CHANGED
|
@@ -127,7 +127,13 @@ function go(pagepath, args, history_name, oldpagepath) {
|
|
|
127
127
|
} else {
|
|
128
128
|
var { roles, options, id } = getZimoliParams(pagepath);
|
|
129
129
|
}
|
|
130
|
-
if (!pagepath)
|
|
130
|
+
if (!pagepath) {
|
|
131
|
+
if (isNode(history_name)) {
|
|
132
|
+
remove(history_name.activateNode);
|
|
133
|
+
history_name.activate = pagepath;
|
|
134
|
+
}
|
|
135
|
+
return true;
|
|
136
|
+
}
|
|
131
137
|
setZimoliParams(pagepath, { data: args, from: oldpagepath, options, roles, id });
|
|
132
138
|
prepare(pagepath, function (res) {
|
|
133
139
|
if (!res.roles || res.roles === true) res.roles = !!roles;
|
|
@@ -594,7 +600,11 @@ function addGlobal(element, name = null, isDestroy) {
|
|
|
594
600
|
}
|
|
595
601
|
global[name] = element;
|
|
596
602
|
} else if (isNode(name)) {
|
|
597
|
-
if (
|
|
603
|
+
if (name.nodeType !== 1) {
|
|
604
|
+
appendChild.after(name, element);
|
|
605
|
+
name.with = [element];
|
|
606
|
+
}
|
|
607
|
+
else if (isDestroy) appendChild.insert(name, element);
|
|
598
608
|
else appendChild(name, element);
|
|
599
609
|
} else if (isFunction(name)) {
|
|
600
610
|
name(element);
|