efront 3.16.0 → 3.17.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/log/boot.js +13 -10
- package/apps/pivot/main.less +1 -0
- package/coms/basic/JSAM.js +22 -8
- package/coms/basic/Speed.js +2 -2
- package/coms/basic/lazy.js +6 -2
- package/coms/frame/left.html +1 -1
- package/coms/kugou/song.js +3 -3
- package/coms/zimoli/Item.js +40 -25
- package/coms/zimoli/appendChild.js +6 -8
- package/coms/zimoli/container.js +10 -0
- package/coms/zimoli/createItemTarget.js +7 -0
- package/coms/zimoli/drag.js +4 -2
- package/coms/zimoli/getGenerator.js +4 -4
- package/coms/zimoli/getTreeFromData.js +3 -0
- package/coms/zimoli/list.js +1 -1
- package/coms/zimoli/menu.js +16 -13
- package/coms/zimoli/menuItem.js +2 -2
- package/coms/zimoli/menuList.html +1 -1
- package/coms/zimoli/menuList.js +14 -14
- package/coms/zimoli/menuList.less +1 -1
- package/coms/zimoli/on.js +1 -1
- package/coms/zimoli/once.js +6 -5
- package/coms/zimoli/onmounted.js +1 -1
- package/coms/zimoli/render.js +19 -6
- package/coms/zimoli/renderDefaults.js +1 -0
- package/coms/zimoli/resize.js +18 -0
- package/coms/zimoli/scrollbar.js +20 -8
- package/coms/zimoli/scrollbar.less +22 -1
- package/coms/zimoli/tree.js +3 -3
- package/coms/zimoli/vbox.js +7 -3
- package/coms/zimoli/zimoli.js +1 -1
- package/package.json +1 -1
- package/public/efront.js +1 -1
package/apps/pivot/log/boot.js
CHANGED
|
@@ -11,9 +11,9 @@ var fields = refilm`
|
|
|
11
11
|
appendChild(e, l);
|
|
12
12
|
};
|
|
13
13
|
if (e.data.address) setAddress(e.data.address);
|
|
14
|
-
else data.from("iplocation", { ip: m[0] }, function (a) {
|
|
15
|
-
e.data.address = a.address;
|
|
14
|
+
else e.data.address = data.from("iplocation", { ip: m[0] }, function (a) {
|
|
16
15
|
setAddress(a.address);
|
|
16
|
+
return a.address;
|
|
17
17
|
});
|
|
18
18
|
}
|
|
19
19
|
return e;
|
|
@@ -24,8 +24,11 @@ var fields = refilm`
|
|
|
24
24
|
端口/port ${async function (e) {
|
|
25
25
|
var { data, field } = e;
|
|
26
26
|
var ports = data[field.key].split(/,/);
|
|
27
|
-
var loaded =
|
|
28
|
-
|
|
27
|
+
var loaded = data.loaded || ports;
|
|
28
|
+
data.loaded = loaded;
|
|
29
|
+
e.innerHTML = loaded.join(' ');
|
|
30
|
+
if (data.loaded === ports) for (let cx = 0, dx = ports.length; cx < dx; cx++) {
|
|
31
|
+
var p = ports[cx];
|
|
29
32
|
var p0 = p;
|
|
30
33
|
var protocol = /^https/.test(p) ? "https://" : "http://";
|
|
31
34
|
p = p.replace(/[^\d]+/g, '');
|
|
@@ -40,18 +43,18 @@ var fields = refilm`
|
|
|
40
43
|
}
|
|
41
44
|
var xhr = await cross("options", `${protocol}${ip}${p}/:version`);
|
|
42
45
|
if (xhr.responseText === 'efront ' + data.version) {
|
|
43
|
-
loaded
|
|
46
|
+
loaded[cx] = (`<span style="color:green">${p0}</span>`);
|
|
44
47
|
} else {
|
|
45
|
-
loaded
|
|
48
|
+
loaded[cx] = (`<span style="color:red">${p0}</span>`);
|
|
46
49
|
}
|
|
47
50
|
} catch (e) {
|
|
48
|
-
loaded
|
|
51
|
+
loaded[cx] = (`<span style="color:gray">${p0}</span>`);
|
|
49
52
|
}
|
|
50
|
-
e.innerHTML = loaded.join('');
|
|
53
|
+
e.innerHTML = loaded.join(' ');
|
|
51
54
|
}
|
|
52
55
|
}}
|
|
53
|
-
|
|
54
|
-
|
|
56
|
+
版本/version input
|
|
57
|
+
进程/pid
|
|
55
58
|
`;
|
|
56
59
|
function main() {
|
|
57
60
|
var page = div();
|
package/apps/pivot/main.less
CHANGED
package/coms/basic/JSAM.js
CHANGED
|
@@ -42,6 +42,11 @@ var join = function (o) {
|
|
|
42
42
|
return s;
|
|
43
43
|
};
|
|
44
44
|
function stringify(memery, preload) {
|
|
45
|
+
if (!isEmpty(preload)) {
|
|
46
|
+
preload = [].concat(preload);
|
|
47
|
+
var i = preload.indexOf(memery) + 1;
|
|
48
|
+
if (i > 0) return i + ',';
|
|
49
|
+
}
|
|
45
50
|
if (memery === undefined) return '';
|
|
46
51
|
if (check(memery)) return String(memery);
|
|
47
52
|
if (typeof memery === 'symbol') return symbol(memery);
|
|
@@ -57,17 +62,22 @@ function stringify(memery, preload) {
|
|
|
57
62
|
var trimed = [memery instanceof Array ? [] : {}];
|
|
58
63
|
var objects = [trimed[0]];
|
|
59
64
|
if (!isEmpty(preload)) dist = dist.concat(preload);
|
|
65
|
+
var preload_used = false;
|
|
60
66
|
while (rest.length) {
|
|
61
67
|
var memery = rest.shift();
|
|
62
68
|
var o = objects.shift();
|
|
63
69
|
var inc = 0, arr = [];
|
|
64
70
|
o[""] = arr;
|
|
65
71
|
o._ = dist.indexOf(memery.constructor);
|
|
72
|
+
if (o._ > 0) preload_used = true;
|
|
66
73
|
for (var k in memery) {
|
|
67
74
|
var m = memery[k];
|
|
68
75
|
f: if (typeof m === 'function') {
|
|
69
76
|
for (var k in m) break f;
|
|
70
|
-
if (dist.indexOf(m) >= 0)
|
|
77
|
+
if (dist.indexOf(m) >= 0) {
|
|
78
|
+
preload_used = true;
|
|
79
|
+
break f;
|
|
80
|
+
}
|
|
71
81
|
continue;
|
|
72
82
|
}
|
|
73
83
|
if (inc === +k && k !== '') {
|
|
@@ -113,7 +123,7 @@ function stringify(memery, preload) {
|
|
|
113
123
|
}
|
|
114
124
|
}
|
|
115
125
|
var result = trimed.map(join).join(',');
|
|
116
|
-
if (trimed.length === 1) result += ',';
|
|
126
|
+
if (trimed.length === 1 && preload_used) result += ',';
|
|
117
127
|
return result;
|
|
118
128
|
}
|
|
119
129
|
var create = function (a, dst) {
|
|
@@ -181,7 +191,7 @@ function parse(string, preload) {
|
|
|
181
191
|
reg4.lastIndex = cx;
|
|
182
192
|
var m = reg4.exec(string);
|
|
183
193
|
o._ = typeid || string.slice(cx, m.index);
|
|
184
|
-
cx =
|
|
194
|
+
cx = m.index;
|
|
185
195
|
}
|
|
186
196
|
break;
|
|
187
197
|
case "/":
|
|
@@ -212,12 +222,10 @@ function parse(string, preload) {
|
|
|
212
222
|
trimed.push(s);
|
|
213
223
|
break;
|
|
214
224
|
default:
|
|
215
|
-
reg4.lastIndex = cx
|
|
225
|
+
reg4.lastIndex = cx;
|
|
216
226
|
var match = reg4.exec(string);
|
|
217
227
|
var index = match.index;
|
|
218
|
-
|
|
219
228
|
var s = string.slice(cx, index);
|
|
220
|
-
cx = index;
|
|
221
229
|
switch (s) {
|
|
222
230
|
case "null":
|
|
223
231
|
s = null;
|
|
@@ -244,8 +252,10 @@ function parse(string, preload) {
|
|
|
244
252
|
|
|
245
253
|
}
|
|
246
254
|
trimed.push(s);
|
|
255
|
+
cx = index;
|
|
247
256
|
}
|
|
248
257
|
}
|
|
258
|
+
if (string.charAt(string.length - 1) === ',') trimed.push(undefined);
|
|
249
259
|
var dist = [trimed[0]];
|
|
250
260
|
if (!isEmpty(preload)) dist = dist.concat(preload);
|
|
251
261
|
var preloads_length = dist.length - 1;
|
|
@@ -264,7 +274,8 @@ function parse(string, preload) {
|
|
|
264
274
|
var t = dist[index];
|
|
265
275
|
var arr = o[""];
|
|
266
276
|
delete o[""];
|
|
267
|
-
|
|
277
|
+
delete o._;
|
|
278
|
+
if (arr) for (var k in arr) {
|
|
268
279
|
t[k] = dist[arr[k]];
|
|
269
280
|
}
|
|
270
281
|
for (var k in o) {
|
|
@@ -272,12 +283,15 @@ function parse(string, preload) {
|
|
|
272
283
|
t[dist[k]] = dist[v];
|
|
273
284
|
}
|
|
274
285
|
}
|
|
286
|
+
if (trimed.length > 1 && typeof trimed[0] === 'number') {
|
|
287
|
+
return dist[trimed[0]];
|
|
288
|
+
}
|
|
275
289
|
return dist[0];
|
|
276
290
|
}
|
|
277
291
|
module.exports = {
|
|
278
292
|
stringify,
|
|
279
293
|
parse(data, preload) {
|
|
280
|
-
if (!/^\s*([\[\{]|\[\s*\]|\{\s*\})
|
|
294
|
+
if (!/^\s*([\[\{]|\[\s*\]|\{\s*\})$/.test(data)) return parse(data, preload);
|
|
281
295
|
if (/^\s*\{[\d\,\:\s]*\}\s*,/.test(data)) return parse(data, preload);
|
|
282
296
|
if (/^\s*\[[\d\,\:\s]*\]\s*,/.test(data)) return parse(data, preload);
|
|
283
297
|
return JSON.parse(data, preload);
|
package/coms/basic/Speed.js
CHANGED
|
@@ -22,12 +22,12 @@ function inertia(gun) {
|
|
|
22
22
|
}
|
|
23
23
|
var smooth = function () {
|
|
24
24
|
var args = spd.read();
|
|
25
|
-
if (decrease && args.filter(a => Math.abs(a) >
|
|
25
|
+
if (decrease && args.filter(a => Math.abs(a) > 2).length === 0) {
|
|
26
26
|
spd.reset();
|
|
27
27
|
_decrease();
|
|
28
28
|
return;
|
|
29
29
|
}
|
|
30
|
-
if (args.filter(a => Math.abs(a) > .
|
|
30
|
+
if (args.filter(a => Math.abs(a) > .5).length === 0) {
|
|
31
31
|
spd.reset();
|
|
32
32
|
return;
|
|
33
33
|
}
|
package/coms/basic/lazy.js
CHANGED
|
@@ -8,9 +8,13 @@ function lazy(run, time = false) {
|
|
|
8
8
|
var fire = function () {
|
|
9
9
|
if (time >= 0) {
|
|
10
10
|
if (ing === true) {
|
|
11
|
-
ing = wait(fire, +time);
|
|
11
|
+
ing = wait(fire, +time / 2);
|
|
12
12
|
}
|
|
13
|
-
else if (isFinite(ing)) {
|
|
13
|
+
else if (isFinite(ing) && ing !== 0) {
|
|
14
|
+
wait(fire, +time);
|
|
15
|
+
ing = 0;
|
|
16
|
+
}
|
|
17
|
+
else if (ing === 0) {
|
|
14
18
|
ing = run.apply(that, args);
|
|
15
19
|
}
|
|
16
20
|
else {
|
package/coms/frame/left.html
CHANGED
|
@@ -9,5 +9,5 @@
|
|
|
9
9
|
<span ng-bind="user.roles"></span>
|
|
10
10
|
</span>
|
|
11
11
|
</header>
|
|
12
|
-
<ylist mode=inline ng-src="menu in menus" class="sidebar-menu" ng-active="menus.open(
|
|
12
|
+
<ylist mode=inline ng-src="menu in menus" class="sidebar-menu" ng-active="menus.open(menu)">
|
|
13
13
|
</ylist>
|
package/coms/kugou/song.js
CHANGED
|
@@ -1,15 +1,14 @@
|
|
|
1
1
|
function main(elem) {
|
|
2
2
|
elem = elem || document.createElement("song");
|
|
3
|
-
if (!elem.innerHTML) elem.innerHTML = song;
|
|
4
3
|
var $scope = {
|
|
5
4
|
filterTime,
|
|
6
5
|
png: img,
|
|
7
6
|
playState: kugou$playState,
|
|
8
7
|
song: {},
|
|
9
|
-
musicList:kugou$musicList,
|
|
8
|
+
musicList: kugou$musicList,
|
|
10
9
|
};
|
|
11
|
-
render(elem, $scope);
|
|
12
10
|
care(elem, function (item) {
|
|
11
|
+
if (!elem.innerHTML) elem.innerHTML = song;
|
|
13
12
|
var songName = String(item.name || item.songName || item.songname_original || '');
|
|
14
13
|
var singerName = String(item.singer || item.singerName || item.singername || '');
|
|
15
14
|
if (~songName.indexOf(singerName)) {
|
|
@@ -24,6 +23,7 @@ function main(elem) {
|
|
|
24
23
|
songMarked: mark(songName, elem.mark),
|
|
25
24
|
singerMarked: mark(singerName, elem.mark)
|
|
26
25
|
};
|
|
26
|
+
render(elem.children, $scope);
|
|
27
27
|
});
|
|
28
28
|
return block(elem);
|
|
29
29
|
}
|
package/coms/zimoli/Item.js
CHANGED
|
@@ -1,32 +1,39 @@
|
|
|
1
1
|
var id = 0;
|
|
2
2
|
function Item(value) {
|
|
3
|
-
this.value = isObject(value) ? value : Object.create(value);
|
|
4
|
-
this.valueOf = function () {
|
|
5
|
-
return value;
|
|
6
|
-
};
|
|
7
|
-
this.toString = function () {
|
|
8
|
-
return String(value);
|
|
9
|
-
};
|
|
10
3
|
this.children = this;
|
|
11
|
-
if (value.children instanceof Array) {
|
|
12
|
-
var children = value.children.map(item => new Item(item));
|
|
13
|
-
children.forEach(item => item.parent = item);
|
|
14
|
-
this.push.apply(this, children);
|
|
15
|
-
}
|
|
16
|
-
if (isObject(value)) {
|
|
17
|
-
this.name = value.name;
|
|
18
|
-
this.tab = value.tab;
|
|
19
|
-
this.icon = value.icon;
|
|
20
|
-
this.color = value.color;
|
|
21
|
-
this.test = value.test;
|
|
22
|
-
this.line = value.line;
|
|
23
|
-
}
|
|
24
4
|
this.count = 0;//子项中的叶子节点数
|
|
25
5
|
this.total = 0;//子项中的节点数
|
|
26
6
|
this.crack = 0;
|
|
27
7
|
this.id = ++id;
|
|
8
|
+
this.extends(value);
|
|
28
9
|
}
|
|
29
10
|
Item.prototype = extend([], {
|
|
11
|
+
extends(value) {
|
|
12
|
+
this.value = value;
|
|
13
|
+
if (value.children instanceof Array) {
|
|
14
|
+
var children = value.children.map(item => new Item(item));
|
|
15
|
+
children.forEach(item => item.parent = item);
|
|
16
|
+
this.push.apply(this, children);
|
|
17
|
+
}
|
|
18
|
+
if (isObject(value)) {
|
|
19
|
+
this.name = value.name;
|
|
20
|
+
this.tab = value.tab;
|
|
21
|
+
this.icon = value.icon;
|
|
22
|
+
this.color = value.color;
|
|
23
|
+
this.test = value.test;
|
|
24
|
+
this.line = value.line;
|
|
25
|
+
}
|
|
26
|
+
else {
|
|
27
|
+
this.name = value;
|
|
28
|
+
}
|
|
29
|
+
},
|
|
30
|
+
|
|
31
|
+
valueOf() {
|
|
32
|
+
return this.value;
|
|
33
|
+
},
|
|
34
|
+
toString() {
|
|
35
|
+
return String(this.value);
|
|
36
|
+
},
|
|
30
37
|
isClosed() {
|
|
31
38
|
return !!this.value.closed;
|
|
32
39
|
},
|
|
@@ -34,14 +41,21 @@ Item.prototype = extend([], {
|
|
|
34
41
|
this.value.closed = value;
|
|
35
42
|
},
|
|
36
43
|
isActive() {
|
|
37
|
-
|
|
44
|
+
if (isObject(this.value)) {
|
|
45
|
+
if ("active" in this.value) return this.value.active;
|
|
46
|
+
if ('actived' in this.value) return this.value.actived;
|
|
47
|
+
}
|
|
48
|
+
return !!this.actived;
|
|
38
49
|
},
|
|
39
50
|
setActive(value) {
|
|
40
|
-
if (
|
|
41
|
-
this.value
|
|
42
|
-
|
|
43
|
-
|
|
51
|
+
if (isObject(this.value)) {
|
|
52
|
+
if ('active' in this.value) {
|
|
53
|
+
this.value.active = value;
|
|
54
|
+
} else {
|
|
55
|
+
this.value.actived = value;
|
|
56
|
+
}
|
|
44
57
|
}
|
|
58
|
+
this.actived = value;
|
|
45
59
|
},
|
|
46
60
|
isSelected() {
|
|
47
61
|
return !!this.value.selected;
|
|
@@ -53,3 +67,4 @@ Item.prototype = extend([], {
|
|
|
53
67
|
return !!this.value.class;
|
|
54
68
|
}
|
|
55
69
|
});
|
|
70
|
+
Item.prototype.isActived = Item.prototype.isActive;
|
|
@@ -11,26 +11,24 @@ function hasEnterStyle(e) {
|
|
|
11
11
|
return e.initialStyle || e.enterStyle || e.leavingStyle || e.leaveStyle;
|
|
12
12
|
}
|
|
13
13
|
|
|
14
|
-
function _onappend(node,
|
|
14
|
+
function _onappend(node, append = createEvent("append"), mount = createEvent("mounted")) {
|
|
15
15
|
if (node.isMounted) return;
|
|
16
16
|
if (node.nodeType === 1 || node.nodeType === 8) node.isMounted = true;
|
|
17
|
-
|
|
18
|
-
event = createEvent("append");
|
|
19
|
-
}
|
|
20
|
-
dispatch(node, event);
|
|
17
|
+
dispatch(node, append);
|
|
21
18
|
var onappend = node.onappend;
|
|
22
19
|
if (isArray(onappend)) {
|
|
23
20
|
onappend.map(function (append_handler) {
|
|
24
|
-
append_handler.call(this,
|
|
21
|
+
append_handler.call(this, append);
|
|
25
22
|
}, node);
|
|
26
23
|
}
|
|
27
24
|
if (isFunction(onappend)) {
|
|
28
|
-
onappend.call(node,
|
|
25
|
+
onappend.call(node, append);
|
|
29
26
|
}
|
|
30
27
|
var children = [].concat.apply([], node.childNodes);
|
|
31
28
|
if (children) for (var cx = 0, dx = children.length; cx < dx; cx++) {
|
|
32
|
-
_onappend(children[cx],
|
|
29
|
+
_onappend(children[cx], append, mount);
|
|
33
30
|
}
|
|
31
|
+
dispatch(node, mount);
|
|
34
32
|
}
|
|
35
33
|
function appendChild(parent, obj, transition) {
|
|
36
34
|
if (transition === false) {
|
package/coms/zimoli/container.js
CHANGED
|
@@ -1,7 +1,17 @@
|
|
|
1
1
|
var change = function (data) {
|
|
2
2
|
zimoli.go(data, this.params, this);
|
|
3
3
|
};
|
|
4
|
+
var gosrc = function () {
|
|
5
|
+
if (this.hasAttribute('src')) {
|
|
6
|
+
var src = this.getAttribute('src');
|
|
7
|
+
if (src !== this.src) {
|
|
8
|
+
this.src = src;
|
|
9
|
+
if (src) cast(this, this.getAttribute('src'));
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
};
|
|
4
13
|
function container(element) {
|
|
5
14
|
care(element, change);
|
|
15
|
+
element.renders = [gosrc];
|
|
6
16
|
return element;
|
|
7
17
|
}
|
package/coms/zimoli/drag.js
CHANGED
|
@@ -22,12 +22,15 @@ var setZIndex = function () {
|
|
|
22
22
|
if (!isElement(target)) return;
|
|
23
23
|
var computed = getComputedStyle(target);
|
|
24
24
|
var z0 = zIndex(0);
|
|
25
|
-
if (!z || computed.zIndex < z0) {
|
|
25
|
+
if (!z || +computed.zIndex < z0) {
|
|
26
26
|
z = zIndex();
|
|
27
27
|
if (/^(absolute|fixed)$/i.test(computed.position)) {
|
|
28
28
|
css(target, { zIndex: z });
|
|
29
29
|
}
|
|
30
30
|
}
|
|
31
|
+
else if (z < +computed.zIndex) {
|
|
32
|
+
z = +computed.zIndex;
|
|
33
|
+
}
|
|
31
34
|
};
|
|
32
35
|
function drag(target, initialEvent, preventOverflow, isMovingSource) {
|
|
33
36
|
if (/^(?:select|input|textarea)$/i.test(initialEvent.target.tagName)) return;
|
|
@@ -39,7 +42,6 @@ function drag(target, initialEvent, preventOverflow, isMovingSource) {
|
|
|
39
42
|
} else {
|
|
40
43
|
var extraTargets = target.with ? [].concat(target.with) : [];
|
|
41
44
|
}
|
|
42
|
-
|
|
43
45
|
var target_offset = getOffset(target);
|
|
44
46
|
var saved_delta = { x: target_offset[0] - initialEvent.screenX, y: target_offset[1] - initialEvent.screenY };
|
|
45
47
|
var clone;
|
|
@@ -47,8 +47,8 @@ var getGenerator = function (container, tagName = 'item') {
|
|
|
47
47
|
[itemName || '$item']: com,
|
|
48
48
|
[indexName || '$index']: index
|
|
49
49
|
};
|
|
50
|
-
var newItem = render(element, newScope, scopes);
|
|
51
|
-
if (element.with) newItem.with = render(element.with, newScope, scopes);
|
|
50
|
+
var newItem = render(element, newScope, scopes, false);
|
|
51
|
+
if (element.with) newItem.with = render(element.with, newScope, scopes, false);
|
|
52
52
|
} else {
|
|
53
53
|
var newScope = container.src[index];
|
|
54
54
|
if (!isObject(newScope)) newScope = {
|
|
@@ -68,8 +68,8 @@ var getGenerator = function (container, tagName = 'item') {
|
|
|
68
68
|
return this.$item;
|
|
69
69
|
}
|
|
70
70
|
}
|
|
71
|
-
var newItem = render(element, newScope, scopes);
|
|
72
|
-
if (element.with) newItem.with = render(newItem.with = element.with, newScope, scopes);
|
|
71
|
+
var newItem = render(element, newScope, scopes, false);
|
|
72
|
+
if (element.with) newItem.with = render(newItem.with = element.with, newScope, scopes, false);
|
|
73
73
|
}
|
|
74
74
|
return newItem;
|
|
75
75
|
};
|
|
@@ -5,8 +5,10 @@ function getTreeFromData(array) {
|
|
|
5
5
|
root.count = 0;
|
|
6
6
|
var map = {};
|
|
7
7
|
array = array.filter(a => !!a);
|
|
8
|
+
var active_item = null;
|
|
8
9
|
array.forEach(function (data) {
|
|
9
10
|
var item = new Item(data);
|
|
11
|
+
if (!active_item && item.isActived()) active_item = item;
|
|
10
12
|
if (data.id) {
|
|
11
13
|
map[data.id] = item;
|
|
12
14
|
} else {
|
|
@@ -46,5 +48,6 @@ function getTreeFromData(array) {
|
|
|
46
48
|
return item.count = count;
|
|
47
49
|
};
|
|
48
50
|
run(root);
|
|
51
|
+
root.actived = active_item;
|
|
49
52
|
return root;
|
|
50
53
|
}
|
package/coms/zimoli/list.js
CHANGED
|
@@ -381,7 +381,7 @@ function ylist(container, generator, $Y) {
|
|
|
381
381
|
}
|
|
382
382
|
if (deltay < 1) y = target_y;
|
|
383
383
|
else if (deltay > count || deltay > 3) {
|
|
384
|
-
y = last_y + (target_y > last_y ? .8 : -.8);
|
|
384
|
+
y = last_y + Math.max(2 * (target_y > last_y ? .8 : -.8));
|
|
385
385
|
}
|
|
386
386
|
else {
|
|
387
387
|
y = (target_y + last_y) / 2;
|
package/coms/zimoli/menu.js
CHANGED
|
@@ -90,7 +90,11 @@ var getTreeNodes = function (elem) {
|
|
|
90
90
|
[].forEach.call(elem.children, run);
|
|
91
91
|
return nodes;
|
|
92
92
|
};
|
|
93
|
-
|
|
93
|
+
var emitEvent = function (item, event) {
|
|
94
|
+
event.preventDefault(true);
|
|
95
|
+
if (item.disabled) return;
|
|
96
|
+
active(this, item, item, createItemTarget.call(this, item));
|
|
97
|
+
}
|
|
94
98
|
function bindGlobalkey(elem, keymap, emit) {
|
|
95
99
|
if (elem.keymap) {
|
|
96
100
|
for (var off of elem.keyoff) {
|
|
@@ -99,14 +103,6 @@ function bindGlobalkey(elem, keymap, emit) {
|
|
|
99
103
|
}
|
|
100
104
|
if (!keymap) return;
|
|
101
105
|
var keyoff = [];
|
|
102
|
-
var emitEvent = function (item, event) {
|
|
103
|
-
event.preventDefault(true);
|
|
104
|
-
var $scope = {};
|
|
105
|
-
var { itemName } = this.$src;
|
|
106
|
-
if (itemName) $scope[itemName] = item;
|
|
107
|
-
else $scope.menu = item, $scope.$item = item;
|
|
108
|
-
emit(item, { $scope });
|
|
109
|
-
}
|
|
110
106
|
for (let k in keymap) {
|
|
111
107
|
keyoff.push(bind("keydown." + k)(elem, emitEvent.bind(elem, keymap[k])));
|
|
112
108
|
}
|
|
@@ -153,10 +149,10 @@ function main(elem, mode) {
|
|
|
153
149
|
mode = "inline";
|
|
154
150
|
if (elem) {
|
|
155
151
|
var generator = getGenerator(elem, 'menu-item');
|
|
156
|
-
tree(elem, function (index, item) {
|
|
152
|
+
tree(elem, function (index, item, menu) {
|
|
157
153
|
var e = generator(index, item);
|
|
158
154
|
if (!e || e.children.length) return e;
|
|
159
|
-
var m = menuItem(e,
|
|
155
|
+
var m = menuItem(e, menu, elem.useIcon);
|
|
160
156
|
return m;
|
|
161
157
|
});
|
|
162
158
|
care(elem, function (data) {
|
|
@@ -198,8 +194,8 @@ function main(elem, mode) {
|
|
|
198
194
|
case "y":
|
|
199
195
|
case "vertical":
|
|
200
196
|
if (!direction) mode = "vertical", direction = 'y';
|
|
201
|
-
var emit = function (item
|
|
202
|
-
active(elem, item.value, item,
|
|
197
|
+
var emit = function (item) {
|
|
198
|
+
active(elem, item.value, item, createItemTarget.call(elem, item.value));
|
|
203
199
|
};
|
|
204
200
|
if ("$src" in elem) {
|
|
205
201
|
getGenerator(elem, 'menu-item');
|
|
@@ -209,6 +205,13 @@ function main(elem, mode) {
|
|
|
209
205
|
bindGlobalkey(elem, src.keymap, emit);
|
|
210
206
|
src0.splice(0, src0.length);
|
|
211
207
|
var s = getTreeFromData(src);
|
|
208
|
+
if (s.actived) {
|
|
209
|
+
elem.selected = s.actived;
|
|
210
|
+
}
|
|
211
|
+
else if (direction === 't') {
|
|
212
|
+
elem.selected = s[0];
|
|
213
|
+
if (elem.selected) elem.selected.setActive(true);
|
|
214
|
+
}
|
|
212
215
|
var i = 0;
|
|
213
216
|
while (i < s.length) {
|
|
214
217
|
src0.push.apply(src0, s.slice(i, i += 1000));
|
package/coms/zimoli/menuItem.js
CHANGED
|
@@ -4,7 +4,7 @@ function main(elem, scope, hasIcon) {
|
|
|
4
4
|
item.innerHTML = menuItem;
|
|
5
5
|
if (isObject(scope) && scope !== item.$scope) {
|
|
6
6
|
}
|
|
7
|
-
else {
|
|
7
|
+
else if (item.$scope) {
|
|
8
8
|
var scope = item.$scope;
|
|
9
9
|
}
|
|
10
10
|
if (scope.menu) scope = scope.menu;
|
|
@@ -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 }], false);
|
|
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;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
<menu-item ng-repeat="menu in menus" ng-if="!menu.hidden" ng-click="open.call(this)" ng-mouseleave="cancel()"
|
|
2
2
|
ng-mouseenter="popMenu.call(this)" ng-mousedown="popMenu1.call(this,event)" ng-class="{'has-children':menu.children&&menu.children.length,
|
|
3
3
|
'warn':menu.type==='danger'||menu.type==='warn'||menu.type==='red',
|
|
4
|
-
'
|
|
4
|
+
'actived':menu.isActived()
|
|
5
5
|
}">
|
|
6
6
|
</menu-item>
|
package/coms/zimoli/menuList.js
CHANGED
|
@@ -166,18 +166,19 @@ function register() {
|
|
|
166
166
|
}
|
|
167
167
|
function main(page, items, active, direction = 'y') {
|
|
168
168
|
if (!isNode(page)) {
|
|
169
|
-
var page =
|
|
169
|
+
var page = document.createElement("menu-list");
|
|
170
170
|
}
|
|
171
171
|
var main = this;
|
|
172
172
|
if (direction == 'y') page.ispop = true;
|
|
173
173
|
var istoolbar = direction === 't';
|
|
174
|
-
function popMenu(item, target) {
|
|
174
|
+
function popMenu(item, target, emptyFocus) {
|
|
175
175
|
if (page.actived) {
|
|
176
176
|
clear();
|
|
177
177
|
remove(page.actived);
|
|
178
178
|
}
|
|
179
|
+
if (emptyFocus !== false) page.setFocus(target);
|
|
180
|
+
if (!item.length) return;
|
|
179
181
|
page.setFocus(target);
|
|
180
|
-
if (!item.children || !item.children.length) return;
|
|
181
182
|
var clone = template.cloneNode();
|
|
182
183
|
clone.$parentScopes = page.$parentScopes;
|
|
183
184
|
clone.$scope = page.$scope;
|
|
@@ -188,7 +189,6 @@ function main(page, items, active, direction = 'y') {
|
|
|
188
189
|
page.actived = menu;
|
|
189
190
|
menu.root = page.root || page;
|
|
190
191
|
popup(menu, target);
|
|
191
|
-
menu.setFocus(menu.firstMenu);
|
|
192
192
|
if (page.ispop === true) {
|
|
193
193
|
} else {
|
|
194
194
|
page.ispop = 1;
|
|
@@ -234,18 +234,19 @@ function main(page, items, active, direction = 'y') {
|
|
|
234
234
|
var pop = active(this.menu, this);
|
|
235
235
|
if (pop === false) return;
|
|
236
236
|
var root = page.root || page;
|
|
237
|
-
if (root.direction === 't') {
|
|
237
|
+
if (root.direction === 't' || root.selected) {
|
|
238
238
|
var menu = this.menu;
|
|
239
|
+
if (root.selected) root.selected.setActive(false);
|
|
239
240
|
if (root !== page) {
|
|
240
|
-
delete menu.children;
|
|
241
241
|
var target = root.actived.target;
|
|
242
|
-
|
|
242
|
+
if (isObject(menu.value)) delete menu.value.children;
|
|
243
|
+
target.menu.extends(menu.value);
|
|
244
|
+
menu = target.menu;
|
|
243
245
|
}
|
|
244
246
|
else {
|
|
245
247
|
target = this;
|
|
246
248
|
}
|
|
247
|
-
|
|
248
|
-
menu.selected = true;
|
|
249
|
+
menu.setActive(true);
|
|
249
250
|
root.selected = target.menu;
|
|
250
251
|
}
|
|
251
252
|
if (root.ispop === 1) root.ispop = false;
|
|
@@ -253,7 +254,7 @@ function main(page, items, active, direction = 'y') {
|
|
|
253
254
|
while (mounted_menus.length && mounted_menus[mounted_menus.length - 1] !== page.actived) remove(mounted_menus.pop());
|
|
254
255
|
if (!mounted_menus.length) {
|
|
255
256
|
if (byMousedown === false) return;
|
|
256
|
-
popMenu(this.menu, this);
|
|
257
|
+
popMenu(this.menu, this, false);
|
|
257
258
|
}
|
|
258
259
|
else {
|
|
259
260
|
remove(mounted_menus.pop());
|
|
@@ -262,7 +263,7 @@ function main(page, items, active, direction = 'y') {
|
|
|
262
263
|
else {
|
|
263
264
|
while (mounted_menus.length && mounted_menus[mounted_menus.length - 1] !== page) remove(mounted_menus.pop());
|
|
264
265
|
if (byMousedown === false) return;
|
|
265
|
-
popMenu(this.menu, this);
|
|
266
|
+
popMenu(this.menu, this, false);
|
|
266
267
|
if (!page.actived) {
|
|
267
268
|
(page.root || page).blur();
|
|
268
269
|
}
|
|
@@ -286,7 +287,7 @@ function main(page, items, active, direction = 'y') {
|
|
|
286
287
|
var $scope = {
|
|
287
288
|
"menu-item"(e, s) {
|
|
288
289
|
var a = button(
|
|
289
|
-
menuItem(e, s, this.hasIcon)
|
|
290
|
+
menuItem(e, s.value, this.hasIcon)
|
|
290
291
|
);
|
|
291
292
|
if (!page.firstMenu) {
|
|
292
293
|
page.firstMenu = a;
|
|
@@ -307,14 +308,13 @@ function main(page, items, active, direction = 'y') {
|
|
|
307
308
|
var itemName = src.itemName;
|
|
308
309
|
var className = `{'has-children':${itemName}.children&&${itemName}.children.length,
|
|
309
310
|
'warn':${itemName}.type==='danger'||${itemName}.type==='warn'||${itemName}.type==='red',
|
|
310
|
-
|
|
311
|
+
actived:${itemName}.isActived()
|
|
311
312
|
}`;
|
|
312
313
|
var notHidden = `!${itemName}.hidden`;
|
|
313
314
|
var generator = getGenerator(page, 'menu-item');
|
|
314
315
|
list(page, function (index) {
|
|
315
316
|
var item = items[index];
|
|
316
317
|
if (!item) return;
|
|
317
|
-
if (item instanceof Item) item = item.value;
|
|
318
318
|
var a = $scope["menu-item"](null, item);
|
|
319
319
|
if (src.itemName) a.setAttribute("e-if", notHidden);
|
|
320
320
|
a.setAttribute("e-class", className);
|
package/coms/zimoli/on.js
CHANGED
|
@@ -253,7 +253,7 @@ var checkroot = function (element, k) {
|
|
|
253
253
|
if (!(k in element)) {
|
|
254
254
|
if (element === window && k in document) {
|
|
255
255
|
element = document;
|
|
256
|
-
if (!checkroot[k]) checkroot[k] = true, console.warn("
|
|
256
|
+
if (!checkroot[k]) checkroot[k] = true, console.warn("使用 document 的", k, "替代 window 的");
|
|
257
257
|
}
|
|
258
258
|
}
|
|
259
259
|
return element;
|