efront 3.25.7 → 3.25.11
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/_index.html +1 -1
- package/coms/basic/Item.js +13 -3
- package/coms/basic/Speed.js +36 -17
- package/coms/basic/Tree.js +4 -4
- package/coms/{zimoli → basic}/cancelAnimationFrame.js +1 -0
- package/coms/basic/lazy.js +29 -12
- package/coms/basic/loader.js +12 -9
- package/coms/basic/mark.js +1 -1
- package/coms/basic/mark_test.js +7 -0
- package/coms/basic/renderExpress.js +3 -3
- package/coms/frame/route.js +12 -3
- package/coms/kugou/playList.less +6 -0
- package/coms/zimoli/bindAccesskey.js +13 -5
- package/coms/zimoli/button.js +2 -1
- package/coms/zimoli/getGenerator.js +24 -8
- package/coms/zimoli/getName.js +7 -5
- package/coms/zimoli/hexagon.js +33 -0
- package/coms/zimoli/innerHeight.js +2 -1
- package/coms/zimoli/innerWidth.js +2 -1
- package/coms/zimoli/list.js +146 -17
- package/coms/zimoli/menu.js +7 -3
- package/coms/zimoli/menuItem.html +8 -3
- package/coms/zimoli/menuItem.js +2 -2
- package/coms/zimoli/menuItem.less +3 -2
- package/coms/zimoli/menuList.js +188 -196
- package/coms/zimoli/menuList.less +1 -1
- package/coms/zimoli/moveupon.js +1 -0
- package/coms/zimoli/on.js +54 -16
- package/coms/zimoli/onmousewheel.js +1 -1
- package/coms/zimoli/popup.js +17 -22
- package/coms/zimoli/render.js +7 -5
- package/coms/zimoli/resize.js +1 -0
- package/coms/zimoli/slider.js +23 -9
- package/coms/zimoli/slider_test.js +1 -1
- package/coms/zimoli/table.js +7 -1
- package/coms/zimoli/touchList.js +22 -20
- package/coms/zimoli/vbox.js +11 -8
- package/docs/main.js +3 -0
- package/package.json +2 -2
- package/public/efront.js +1 -1
- package/coms/zimoli/menuList.html +0 -6
package/coms/zimoli/on.js
CHANGED
|
@@ -1,9 +1,28 @@
|
|
|
1
1
|
// "use strict";
|
|
2
2
|
if (document.efronton) return document.efronton;
|
|
3
3
|
var is_addEventListener_enabled = "addEventListener" in window;
|
|
4
|
+
// Edg 禁用passive原因:无滚动条的元素上纵向滚动时触发整个页面回弹
|
|
5
|
+
// Chrome 禁用passive原因:无滚动条的元素上横向滚动触发浏览器导航
|
|
6
|
+
var supportPassive = false, preventPassive = /Edg|Chrome/.test(navigator.userAgent);
|
|
7
|
+
if (is_addEventListener_enabled) try {
|
|
8
|
+
window.addEventListener('test', null, { get passive() { return supportPassive = true } });
|
|
9
|
+
} catch { }
|
|
10
|
+
|
|
11
|
+
var listenerOptions = [];
|
|
12
|
+
/**
|
|
13
|
+
* @param {EventNeed} eventtype
|
|
14
|
+
*/
|
|
15
|
+
var getListenerOption = function (eventtype, k) {
|
|
16
|
+
if (!supportPassive || preventPassive && /wheel$/.test(k)) return eventtype.capture;
|
|
17
|
+
var index = +eventtype.capture | +eventtype.passive << 1;
|
|
18
|
+
if (!listenerOptions[index]) listenerOptions[index] = { capture: eventtype.capture, passive: eventtype.passive };
|
|
19
|
+
return listenerOptions[index];
|
|
20
|
+
};
|
|
21
|
+
|
|
4
22
|
if ('attachEvent' in document) {
|
|
5
23
|
is_addEventListener_enabled = false;
|
|
6
24
|
}
|
|
25
|
+
|
|
7
26
|
if (!is_addEventListener_enabled) var __call = function (target, context, handler, firstmost) {
|
|
8
27
|
// use strict 无效的情况
|
|
9
28
|
if (isEmpty(target)) {
|
|
@@ -16,7 +35,7 @@ if (!is_addEventListener_enabled) var __call = function (target, context, handle
|
|
|
16
35
|
|
|
17
36
|
var handlersMap = {};
|
|
18
37
|
var changes_key = 'changes';
|
|
19
|
-
var eventtypereg = /(?:\.once|\.prevent|\.stop|\.capture|\.self|\.passive|\.[
|
|
38
|
+
var eventtypereg = /(?:\.once|\.prevent|\.stop|\.capture|\.self|\.passive|\.only|\.[!-~←↑→↓⇄↵⨉]+)+\.?$/i;
|
|
20
39
|
var keyCodeMap = {
|
|
21
40
|
backspace: 8,
|
|
22
41
|
tab: 9,
|
|
@@ -134,24 +153,25 @@ var keyCodeMap = {
|
|
|
134
153
|
"\"": 222,
|
|
135
154
|
bright: 255,
|
|
136
155
|
};
|
|
156
|
+
class EventNeed {
|
|
157
|
+
once = false;
|
|
158
|
+
stop = false;
|
|
159
|
+
capture = false;
|
|
160
|
+
self = false;
|
|
161
|
+
prevent = false;
|
|
162
|
+
passive = false;
|
|
163
|
+
keyNeed = [];
|
|
164
|
+
keyCode = 0
|
|
165
|
+
};
|
|
137
166
|
var parseEventTypes = function (eventtypes) {
|
|
138
|
-
var types =
|
|
139
|
-
once: false,
|
|
140
|
-
stop: false,
|
|
141
|
-
capture: false,
|
|
142
|
-
self: false,
|
|
143
|
-
prevent: false,
|
|
144
|
-
passive: false,
|
|
145
|
-
keyNeed: [],
|
|
146
|
-
keyCode: 0,
|
|
147
|
-
};
|
|
167
|
+
var types = new EventNeed;
|
|
148
168
|
var keyneed = types.keyNeed;
|
|
149
169
|
eventtypes = eventtypereg.exec(eventtypes);
|
|
150
170
|
if (eventtypes) eventtypes = eventtypes[0].slice(1);
|
|
151
171
|
if (eventtypes) {
|
|
152
172
|
var etypes = eventtypes.split(".");
|
|
153
173
|
etypes.forEach(t => {
|
|
154
|
-
if (t.length === 1) {
|
|
174
|
+
if (t.length === 1 && /^[0-9a-zA-Z]$/.test(t)) {
|
|
155
175
|
types.keyCode = t.toUpperCase().charCodeAt(0);
|
|
156
176
|
return;
|
|
157
177
|
}
|
|
@@ -166,7 +186,9 @@ var parseEventTypes = function (eventtypes) {
|
|
|
166
186
|
keyneed.push(t);
|
|
167
187
|
break;
|
|
168
188
|
case "":
|
|
189
|
+
case "only":
|
|
169
190
|
if (!types.keyCode) types.keyCode = true;
|
|
191
|
+
types.only = true;
|
|
170
192
|
break;
|
|
171
193
|
default:
|
|
172
194
|
if (isFinite(t)) {
|
|
@@ -175,6 +197,9 @@ var parseEventTypes = function (eventtypes) {
|
|
|
175
197
|
else if (keyCodeMap[t]) {
|
|
176
198
|
types.keyCode = keyCodeMap[t];
|
|
177
199
|
}
|
|
200
|
+
else {
|
|
201
|
+
throw new Error(`绑定事件参数无效${t}`);
|
|
202
|
+
}
|
|
178
203
|
|
|
179
204
|
}
|
|
180
205
|
|
|
@@ -182,14 +207,25 @@ var parseEventTypes = function (eventtypes) {
|
|
|
182
207
|
}
|
|
183
208
|
return types;
|
|
184
209
|
}
|
|
210
|
+
/**
|
|
211
|
+
* @param {EventNeed} eventtypes
|
|
212
|
+
* @param {Event} e;
|
|
213
|
+
*/
|
|
185
214
|
function checkKeyNeed(eventtypes, e) {
|
|
186
215
|
var keyneed = eventtypes.keyNeed;
|
|
216
|
+
var keykeep = {}
|
|
187
217
|
if (eventtypes.keyNeed) {
|
|
188
218
|
for (var cx = 0, dx = keyneed.length; cx < dx; cx++) {
|
|
189
219
|
var key = keyneed[cx];
|
|
220
|
+
keykeep[key] = true;
|
|
190
221
|
if (!e[key + "Key"]) return false;
|
|
191
222
|
}
|
|
192
223
|
}
|
|
224
|
+
if (eventtypes.only) {
|
|
225
|
+
for (var key of ["meta", 'shift', 'ctrl', 'alt']) {
|
|
226
|
+
if (!keykeep[key] && e[key + "Key"]) return false;
|
|
227
|
+
}
|
|
228
|
+
}
|
|
193
229
|
if (eventtypes.keyCode === true) {
|
|
194
230
|
for (var cx = 0, dx = keyneed.length; cx < dx; cx++) {
|
|
195
231
|
var key = keyneed[cx];
|
|
@@ -232,7 +268,7 @@ var remove = function (k, hk, [eventtypes, handler, context]) {
|
|
|
232
268
|
if (!hs.length && hs.h) {
|
|
233
269
|
element[hk] = null;
|
|
234
270
|
if (is_addEventListener_enabled) {
|
|
235
|
-
element.removeEventListener(k, hs.h,
|
|
271
|
+
element.removeEventListener(k, hs.h, getListenerOption(eventtypes, k));
|
|
236
272
|
} else {
|
|
237
273
|
if (element["on" + k] === hs.h) element["on" + k] = null;
|
|
238
274
|
}
|
|
@@ -242,6 +278,7 @@ var remove = function (k, hk, [eventtypes, handler, context]) {
|
|
|
242
278
|
var broadcast = function (k, hk, event) {
|
|
243
279
|
var element = this;
|
|
244
280
|
var handlers = element[hk];
|
|
281
|
+
if (!handlers) console.log(handlers, hk, event, element)
|
|
245
282
|
if (handlers.length > 1) handlers = handlers.slice();
|
|
246
283
|
if (event.which === 1 && event.buttons === 0) {
|
|
247
284
|
// firefox 无按键
|
|
@@ -259,7 +296,7 @@ var broadcast = function (k, hk, event) {
|
|
|
259
296
|
if (eventtypes.self && event.target !== element) continue;
|
|
260
297
|
if (!checkKeyNeed(eventtypes, event)) continue;
|
|
261
298
|
if (eventtypes.stop) event.stopPropagation();
|
|
262
|
-
if (eventtypes.passive) event.preventDefault = function () { };
|
|
299
|
+
if (eventtypes.passive && !preventPassive) event.preventDefault = function () { };
|
|
263
300
|
if (eventtypes.prevent) event.preventDefault();
|
|
264
301
|
if (handler instanceof Array) {
|
|
265
302
|
for (var h of handler) {
|
|
@@ -305,6 +342,7 @@ var on = document.efronton = function (k) {
|
|
|
305
342
|
k = k.replace(eventtypereg, '');
|
|
306
343
|
var handler_path = k + "handlers";
|
|
307
344
|
var hk = handler_path + +!!eventtypes.capture;
|
|
345
|
+
if (supportPassive) hk += +!!eventtypes.passive;
|
|
308
346
|
if (is_addEventListener_enabled) var addhandler = function (context, handler, firstmost = false) {
|
|
309
347
|
var target = this || context;
|
|
310
348
|
target = checkroot(target, k);
|
|
@@ -313,7 +351,7 @@ var on = document.efronton = function (k) {
|
|
|
313
351
|
var h = broadcast.bind(target, k, hk);
|
|
314
352
|
target[hk] = [];
|
|
315
353
|
target[hk].h = h;
|
|
316
|
-
target.addEventListener(k, h, eventtypes
|
|
354
|
+
target.addEventListener(k, h, getListenerOption(eventtypes, k));
|
|
317
355
|
}
|
|
318
356
|
var listener = [eventtypes, handler, context];
|
|
319
357
|
append.call(target, k, hk, listener, firstmost);
|
|
@@ -459,7 +497,7 @@ var invoke = function (event, type, pointerType) {
|
|
|
459
497
|
isClickWithPointer = false;
|
|
460
498
|
var saved_time = lasttime_click;
|
|
461
499
|
lasttime_click = event.timeStamp;
|
|
462
|
-
if (!need || lasttime_click - saved_time <
|
|
500
|
+
if (!need || lasttime_click - saved_time < 120 || onclick.preventClick || touchendFired && !event.touchend) {
|
|
463
501
|
// 阻止非人为点击,防止误操作
|
|
464
502
|
event.preventDefault();
|
|
465
503
|
event.stopPropagation();
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
var _onmousewheel = "onmousewheel" in window || "onmousewheel" in document ? on("mousewheel") : on("DOMMouseScroll");
|
|
1
|
+
var _onmousewheel = "onmousewheel" in window || "onmousewheel" in document ? on("mousewheel.passive") : on("DOMMouseScroll.passive");
|
|
2
2
|
var addDeltaY = function (event) {
|
|
3
3
|
if (isNumber(event.deltaY)) return;
|
|
4
4
|
if (isNumber(event.wheelDeltaY)) {
|
package/coms/zimoli/popup.js
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* 弹出层
|
|
3
3
|
*/
|
|
4
|
-
|
|
5
|
-
if (e.
|
|
4
|
+
on("keydown.esc.only")(document, function (e) {
|
|
5
|
+
if (e.defaultPrevented) return;
|
|
6
|
+
if (rootElements.length) {
|
|
6
7
|
var r = rootElements.pop();
|
|
7
8
|
if (r) {
|
|
8
9
|
r.blur();
|
|
@@ -235,19 +236,16 @@ var _as_yextra = function (global, innerWidth, innerHeight, element, target, poi
|
|
|
235
236
|
var zindex = zIndex(0) + 1;
|
|
236
237
|
css(element, `position:absolute;z-index:${zindex}`);
|
|
237
238
|
css(_rhomb, { zIndex: zindex });
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
window.removeEventListener("resize", reshape);
|
|
248
|
-
}
|
|
239
|
+
onmounted(element, function () {
|
|
240
|
+
var release1 = onremove(target, function () {
|
|
241
|
+
remove(element);
|
|
242
|
+
});
|
|
243
|
+
var release2 = onremove(element, function () {
|
|
244
|
+
release1();
|
|
245
|
+
release2();
|
|
246
|
+
remove(_rhomb);
|
|
247
|
+
});
|
|
249
248
|
});
|
|
250
|
-
global(element, false);
|
|
251
249
|
var reshape = function () {
|
|
252
250
|
extend(element.style, element.origin);
|
|
253
251
|
var position = getScreenPosition(target);
|
|
@@ -290,7 +288,6 @@ var _as_yextra = function (global, innerWidth, innerHeight, element, target, poi
|
|
|
290
288
|
}
|
|
291
289
|
var side;
|
|
292
290
|
if (aimedWidth !== originWidth) {
|
|
293
|
-
console.log(originWidth,aimedWidth)
|
|
294
291
|
css(element, { width: fromOffset(aimedWidth) });
|
|
295
292
|
}
|
|
296
293
|
if (position.top + element.offsetHeight + position.height > innerHeight) {
|
|
@@ -333,13 +330,11 @@ var _as_yextra = function (global, innerWidth, innerHeight, element, target, poi
|
|
|
333
330
|
} else if (_rhomb && !_rhomb.parentNode) {
|
|
334
331
|
appendChild.before(element, _rhomb)
|
|
335
332
|
}
|
|
336
|
-
}
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
reshape();
|
|
342
|
-
lazy(reshape)();
|
|
333
|
+
};
|
|
334
|
+
bind("resize")(element, reshape);
|
|
335
|
+
bind("scroll.capture.passive", document)(element, reshape);
|
|
336
|
+
onmounted(element, reshape);
|
|
337
|
+
global(element, false);
|
|
343
338
|
};
|
|
344
339
|
var _as_xextra = arriswise(_as_yextra, arguments);
|
|
345
340
|
var popup_as_single = function (element) {
|
package/coms/zimoli/render.js
CHANGED
|
@@ -97,7 +97,8 @@ var createComment = function (renders, type, expression) {
|
|
|
97
97
|
appendChild.after(this, comment);
|
|
98
98
|
if (!/^if|^else/i.test(type)) remove(this);
|
|
99
99
|
}
|
|
100
|
-
comment
|
|
100
|
+
comment.$template = this;
|
|
101
|
+
this.$comment = comment;
|
|
101
102
|
return comment;
|
|
102
103
|
};
|
|
103
104
|
|
|
@@ -173,7 +174,7 @@ var createRepeat = function (search, id = 0) {
|
|
|
173
174
|
var $parentScopes = element.$parentScopes || [];
|
|
174
175
|
var $struct = element.$struct;
|
|
175
176
|
if (element.$scope) {
|
|
176
|
-
$struct = extend({}, $struct, { context: $struct.context + `with(this.$parentScopes[${$parentScopes.length}])` }), $parentScopes = $parentScopes.
|
|
177
|
+
$struct = extend({}, $struct, { context: $struct.context + `with(this.$parentScopes[${$parentScopes.length}])` }), $parentScopes = $parentScopes.slice(), $parentScopes.push(element.$scope);
|
|
177
178
|
}
|
|
178
179
|
var clonedElements1 = Object.create(null);
|
|
179
180
|
var cloned = keys.map(function (key, cx) {
|
|
@@ -247,15 +248,16 @@ var createIf = function (search, id = 0) {
|
|
|
247
248
|
for (var cx = 0, dx = elements.length; cx < dx; cx += 2) {
|
|
248
249
|
var c = elements[cx];
|
|
249
250
|
if (cx === shouldMount) {
|
|
250
|
-
var e = c
|
|
251
|
+
var e = c.$template;
|
|
251
252
|
appendChild.after(c, e);
|
|
252
253
|
if (e.renderid < 0) {
|
|
253
254
|
e.renderid = id;
|
|
254
|
-
c
|
|
255
|
+
e = c.$template = render(e, this.$scope, this.$parentScopes);
|
|
256
|
+
e.$comment = c;
|
|
255
257
|
}
|
|
256
258
|
}
|
|
257
259
|
else {
|
|
258
|
-
remove(c
|
|
260
|
+
remove(c.$template);
|
|
259
261
|
}
|
|
260
262
|
}
|
|
261
263
|
|
package/coms/zimoli/resize.js
CHANGED
|
@@ -155,6 +155,7 @@ resize.on = function (elem, dragHandle) {
|
|
|
155
155
|
if (elem) {
|
|
156
156
|
elem.dragHandle = dragHandle;
|
|
157
157
|
}
|
|
158
|
+
elem.resizable = true;
|
|
158
159
|
onmounted(elem, function () {
|
|
159
160
|
if (!offmousemove) offmousemove = onmousemove(window, getResizer);
|
|
160
161
|
if (!~resizingElements.indexOf(elem)) {
|
package/coms/zimoli/slider.js
CHANGED
|
@@ -112,29 +112,40 @@ function slider(autoplay, circle = true) {
|
|
|
112
112
|
left: round((indexRight - index) * width) + "px"
|
|
113
113
|
});
|
|
114
114
|
};
|
|
115
|
+
var savedtime = 0;
|
|
116
|
+
var animate0 = function () {
|
|
117
|
+
savedtime = Speed.now() - 1;
|
|
118
|
+
animate();
|
|
119
|
+
};
|
|
115
120
|
var animate = function () {
|
|
116
121
|
cancelAnimationFrame(timer_animate);
|
|
117
122
|
var width = outter.clientWidth;
|
|
123
|
+
var now = +Speed.now();
|
|
118
124
|
if (abs(current_index + negative_index) < 1.25 / width)
|
|
119
125
|
return reshape(-negative_index, false);
|
|
120
126
|
timer_animate = requestAnimationFrame(animate);
|
|
121
|
-
|
|
127
|
+
var temp_index = current_index;
|
|
128
|
+
while (savedtime < now) {
|
|
129
|
+
temp_index = (temp_index * 11 - negative_index) / 12;
|
|
130
|
+
savedtime += 6;
|
|
131
|
+
}
|
|
132
|
+
reshape(temp_index);
|
|
122
133
|
};
|
|
123
134
|
var park = function () {
|
|
124
135
|
direction = 0;
|
|
125
136
|
var singleTarget = getSingleTarget();
|
|
126
|
-
var spd = _speed();
|
|
137
|
+
var spd = _speed() * 40;
|
|
127
138
|
if (singleTarget) {
|
|
128
139
|
negative_index = round(negative_index);
|
|
129
140
|
}
|
|
130
141
|
else if (delta_negative_index > 0) {
|
|
131
|
-
if (negative_index - floor(negative_index) >
|
|
142
|
+
if (negative_index - floor(negative_index) > .007 / (.07 + abs(spd)))
|
|
132
143
|
negative_index = ceil(negative_index);
|
|
133
144
|
else
|
|
134
145
|
negative_index = floor(negative_index);
|
|
135
146
|
}
|
|
136
147
|
else if (delta_negative_index < 0) {
|
|
137
|
-
if (ceil(negative_index) - negative_index >
|
|
148
|
+
if (ceil(negative_index) - negative_index > .007 / (.07 + abs(spd)))
|
|
138
149
|
negative_index = floor(negative_index);
|
|
139
150
|
else
|
|
140
151
|
negative_index = ceil(negative_index);
|
|
@@ -142,7 +153,8 @@ function slider(autoplay, circle = true) {
|
|
|
142
153
|
else {
|
|
143
154
|
negative_index = round(negative_index);
|
|
144
155
|
}
|
|
145
|
-
|
|
156
|
+
savedtime = 0;
|
|
157
|
+
animate0();
|
|
146
158
|
var event = createEvent("park");
|
|
147
159
|
event.index = -negative_index;
|
|
148
160
|
dispatch(outter, event);
|
|
@@ -176,7 +188,7 @@ function slider(autoplay, circle = true) {
|
|
|
176
188
|
if (enabled) outter.go(outter.index + count);
|
|
177
189
|
} else {
|
|
178
190
|
if (enabled) negative_index -= count;
|
|
179
|
-
|
|
191
|
+
animate0();
|
|
180
192
|
}
|
|
181
193
|
return enabled;
|
|
182
194
|
};
|
|
@@ -186,7 +198,7 @@ function slider(autoplay, circle = true) {
|
|
|
186
198
|
var singleTarget = getSingleTarget();
|
|
187
199
|
if (singleTarget) {
|
|
188
200
|
var current_Left = singleTarget.offsetLeft;
|
|
189
|
-
var avail_deltaWidth = round(width >> 2);
|
|
201
|
+
var avail_deltaWidth = Math.min(round(width >> 2), 120);
|
|
190
202
|
if (current_Left + deltax > avail_deltaWidth) {
|
|
191
203
|
deltax = avail_deltaWidth - current_Left;
|
|
192
204
|
saved_x += deltax;
|
|
@@ -274,8 +286,10 @@ function slider(autoplay, circle = true) {
|
|
|
274
286
|
css(_imageMain, "z-index:0;transform:scale(.92);opacity:0;transition:none");
|
|
275
287
|
setTimeout(() => css(_imageMain, "transform:scale(1);opacity:1;transition:.2s transform ease-out,.4s opacity"), 0);
|
|
276
288
|
if (player.ing) play();
|
|
277
|
-
|
|
278
|
-
|
|
289
|
+
}, 20, outter);
|
|
290
|
+
onmounted(outter, function () {
|
|
291
|
+
reshape(current_index);
|
|
292
|
+
});
|
|
279
293
|
outter.play = function (schedule = player.schedule, _isMiss) {
|
|
280
294
|
if (isDefined(_isMiss)) {
|
|
281
295
|
isMiss = _isMiss;
|
package/coms/zimoli/table.js
CHANGED
|
@@ -424,10 +424,12 @@ function table(elem) {
|
|
|
424
424
|
var $scope = {
|
|
425
425
|
fields,
|
|
426
426
|
isEmpty,
|
|
427
|
+
tbody0: null,
|
|
427
428
|
tbody(e) {
|
|
428
429
|
var e = list.apply(null, arguments);
|
|
429
430
|
css(e, tbodyHeight(e));
|
|
430
431
|
css(e, { width: this.adapter.offsetWidth, display: 'block' });
|
|
432
|
+
this.tbody0 = e;
|
|
431
433
|
return e;
|
|
432
434
|
},
|
|
433
435
|
thead(t) {
|
|
@@ -440,7 +442,7 @@ function table(elem) {
|
|
|
440
442
|
return tr;
|
|
441
443
|
},
|
|
442
444
|
tbodyHeight,
|
|
443
|
-
data
|
|
445
|
+
data,
|
|
444
446
|
adapter: null,
|
|
445
447
|
resizeT,
|
|
446
448
|
model,
|
|
@@ -455,6 +457,10 @@ function table(elem) {
|
|
|
455
457
|
pagination
|
|
456
458
|
};
|
|
457
459
|
render(this, $scope, this.$parentScopes.concat(this.$scope));
|
|
460
|
+
$scope.data = Table.from(fields, await data);
|
|
461
|
+
$scope.data.callback = function () {
|
|
462
|
+
if ($scope.tbody0) $scope.tbody0.go($scope.tbody0.index());
|
|
463
|
+
};
|
|
458
464
|
})
|
|
459
465
|
autodragchildren(
|
|
460
466
|
table,
|
package/coms/zimoli/touchList.js
CHANGED
|
@@ -24,7 +24,7 @@ var touchstart = function (event) {
|
|
|
24
24
|
}
|
|
25
25
|
if (!target) return;
|
|
26
26
|
cancelAnimationFrame(target.scrollTimer);
|
|
27
|
-
saved_x =
|
|
27
|
+
saved_x = event.clientX, saved_y = event.clientY, moving = false, 0;
|
|
28
28
|
currentTarget = target;
|
|
29
29
|
if (!target.querySelector(".ylife-touch-delete")) {
|
|
30
30
|
css(target, {
|
|
@@ -37,11 +37,10 @@ var touchstart = function (event) {
|
|
|
37
37
|
};
|
|
38
38
|
var moving = false;
|
|
39
39
|
var touchmove = function (event) {
|
|
40
|
-
if (!saved_x) return saved_x = event.clientX, saved_y = event.clientY, moving = false, 0;
|
|
41
40
|
var delta_x = event.clientX - saved_x;
|
|
42
41
|
var delta_y = event.clientY - saved_y;
|
|
43
42
|
if (!moving) {
|
|
44
|
-
if (Math.abs(delta_x) <
|
|
43
|
+
if (Math.abs(delta_x) < MOVELOCK_DELTA && Math.abs(delta_y) < MOVELOCK_DELTA) return;
|
|
45
44
|
if (Math.abs(delta_y) < Math.abs(delta_x)) {
|
|
46
45
|
moving = 1;
|
|
47
46
|
} else {
|
|
@@ -49,28 +48,35 @@ var touchmove = function (event) {
|
|
|
49
48
|
}
|
|
50
49
|
}
|
|
51
50
|
if (moving !== 1) return;
|
|
52
|
-
event.
|
|
53
|
-
var
|
|
54
|
-
|
|
55
|
-
|
|
51
|
+
event.moveLocked = true;
|
|
52
|
+
var buttonWidth = currentTarget.scrollWidth - currentTarget.clientWidth;
|
|
53
|
+
var scrollLeft = -currentTarget.scrollLeft;
|
|
54
|
+
if (delta_x + scrollLeft > 0) {
|
|
55
|
+
delta_x = -scrollLeft;
|
|
56
56
|
}
|
|
57
|
-
else if (delta_x +
|
|
58
|
-
delta_x = -
|
|
57
|
+
else if (delta_x + scrollLeft < - buttonWidth) {
|
|
58
|
+
delta_x = -buttonWidth - scrollLeft;
|
|
59
59
|
}
|
|
60
|
-
|
|
60
|
+
scrollLeft += delta_x;
|
|
61
61
|
saved_x += delta_x;
|
|
62
62
|
direction = delta_x;
|
|
63
|
-
currentTarget.scrollLeft = -
|
|
63
|
+
currentTarget.scrollLeft = -scrollLeft;
|
|
64
64
|
};
|
|
65
65
|
var scrollTo = function (targetLeft) {
|
|
66
66
|
if (!this) return;
|
|
67
67
|
cancelAnimationFrame(this.scrollTimer);
|
|
68
68
|
var that = this;
|
|
69
|
+
var scrollTime = +Speed.now();
|
|
69
70
|
var reshape = function () {
|
|
70
|
-
var currentLeft =
|
|
71
|
+
var currentLeft = that.scrollLeft;
|
|
71
72
|
if (0 === (0 | currentLeft - targetLeft)) return;
|
|
72
|
-
var
|
|
73
|
-
|
|
73
|
+
var now = +Speed.now();
|
|
74
|
+
var thisTimeLeft = currentLeft;
|
|
75
|
+
while (scrollTime < now) {
|
|
76
|
+
scrollTime += 6;
|
|
77
|
+
thisTimeLeft = (thisTimeLeft * 11 + targetLeft) / 12;
|
|
78
|
+
}
|
|
79
|
+
if (Math.abs(thisTimeLeft - currentLeft) < .5) {
|
|
74
80
|
thisTimeLeft = targetLeft;
|
|
75
81
|
} else {
|
|
76
82
|
that.scrollTimer = requestAnimationFrame(reshape);
|
|
@@ -94,10 +100,10 @@ var scrollToRight = function () {
|
|
|
94
100
|
var touchend = function () {
|
|
95
101
|
var marginLeft = -parseInt(currentTarget.scrollLeft) || 0;
|
|
96
102
|
moving = false;
|
|
97
|
-
if (direction < 0 && marginLeft < -
|
|
103
|
+
if (direction < 0 && marginLeft < -7) {
|
|
98
104
|
scrollToLeft.call(currentTarget);
|
|
99
105
|
}
|
|
100
|
-
else if (direction > 0 && marginLeft > -currentTarget.clientWidth +
|
|
106
|
+
else if (direction > 0 && marginLeft > -currentTarget.clientWidth + 7) {
|
|
101
107
|
scrollToRight.call(currentTarget);
|
|
102
108
|
}
|
|
103
109
|
else if (marginLeft < currentTarget.clientWidth - currentTarget.scrollWidth >> 1) {
|
|
@@ -130,9 +136,5 @@ function touchList(listElement) {
|
|
|
130
136
|
move: touchmove,
|
|
131
137
|
end: touchend
|
|
132
138
|
});
|
|
133
|
-
// ontouchstart(listElement, touchstart);
|
|
134
|
-
// ontouchmove(listElement, touchmove);
|
|
135
|
-
// ontouchend(listElement, touchend);
|
|
136
|
-
// ontouchcancel(listElement, touchend);
|
|
137
139
|
return listElement;
|
|
138
140
|
}
|
package/coms/zimoli/vbox.js
CHANGED
|
@@ -60,9 +60,11 @@ function ybox(generator) {
|
|
|
60
60
|
var increaser_t = document.createElement("insert");
|
|
61
61
|
addClass(increaser_t, 'y-insert');
|
|
62
62
|
var increaser_b = increaser_t.cloneNode();
|
|
63
|
+
increaser_b.height = 0;
|
|
64
|
+
increaser_t.height = 0;
|
|
63
65
|
var increase_height = calcPixel(100);
|
|
64
|
-
var _decrease = function (increaser) {
|
|
65
|
-
var height =
|
|
66
|
+
var _decrease = function (increaser, t) {
|
|
67
|
+
var height = increaser.height;
|
|
66
68
|
if (height > 1) {
|
|
67
69
|
var scrollTop = _box.$Top();
|
|
68
70
|
if (scrollTop > 0 && increaser_t === increaser) {
|
|
@@ -76,8 +78,9 @@ function ybox(generator) {
|
|
|
76
78
|
var deltaY = tH - bH - scrollTop > height ? height : tH - bH - scrollTop;
|
|
77
79
|
height -= deltaY;
|
|
78
80
|
}
|
|
79
|
-
|
|
80
|
-
increaser.
|
|
81
|
+
height = height * Math.pow(.92, t / 6);
|
|
82
|
+
increaser.height = height
|
|
83
|
+
increaser.style.height = fromOffset(height);
|
|
81
84
|
return height;
|
|
82
85
|
}
|
|
83
86
|
if (increaser.height) {
|
|
@@ -92,16 +95,16 @@ function ybox(generator) {
|
|
|
92
95
|
var stop2 = lazy(function () {
|
|
93
96
|
scrollY.smooth(stop);
|
|
94
97
|
}, 40);
|
|
95
|
-
var decrease = function () {
|
|
96
|
-
var res = _decrease(increaser_t) + _decrease(increaser_b);
|
|
98
|
+
var decrease = function (t) {
|
|
99
|
+
var res = _decrease(increaser_t, t) + _decrease(increaser_b, t);
|
|
97
100
|
if (!res) {
|
|
98
101
|
scrollY.smooth(stop);
|
|
99
102
|
}
|
|
100
103
|
return true;
|
|
101
104
|
};
|
|
102
105
|
var increase = function (deltaY, minusOnly) {
|
|
103
|
-
var t_height = increaser_t.height
|
|
104
|
-
var b_height = increaser_b.height
|
|
106
|
+
var t_height = increaser_t.height;
|
|
107
|
+
var b_height = increaser_b.height;
|
|
105
108
|
t_height -= deltaY;
|
|
106
109
|
b_height += deltaY;
|
|
107
110
|
if (!minusOnly && deltaY < 0 && t_height > 0) {
|
package/docs/main.js
CHANGED
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "efront",
|
|
3
|
-
"version": "3.25.
|
|
4
|
-
"description": "
|
|
3
|
+
"version": "3.25.11",
|
|
4
|
+
"description": "简化前端开发,优化web性能",
|
|
5
5
|
"main": "public/efront.js",
|
|
6
6
|
"directories": {
|
|
7
7
|
"test": "test"
|