efront 3.25.8 → 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/coms/basic/Speed.js +17 -12
- package/coms/{zimoli → basic}/cancelAnimationFrame.js +1 -0
- package/coms/basic/lazy.js +29 -12
- package/coms/basic/loader.js +1 -1
- 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 +5 -2
- 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/innerHeight.js +2 -1
- package/coms/zimoli/innerWidth.js +2 -1
- package/coms/zimoli/list.js +141 -12
- package/coms/zimoli/menu.js +7 -3
- package/coms/zimoli/menuItem.html +5 -3
- package/coms/zimoli/menuItem.js +2 -2
- package/coms/zimoli/menuItem.less +2 -1
- package/coms/zimoli/menuList.js +188 -203
- package/coms/zimoli/menuList.less +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 +6 -4
- package/coms/zimoli/slider.js +4 -2
- package/coms/zimoli/slider_test.js +1 -1
- package/coms/zimoli/vbox.js +5 -3
- 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
|
|
|
@@ -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/slider.js
CHANGED
|
@@ -286,8 +286,10 @@ function slider(autoplay, circle = true) {
|
|
|
286
286
|
css(_imageMain, "z-index:0;transform:scale(.92);opacity:0;transition:none");
|
|
287
287
|
setTimeout(() => css(_imageMain, "transform:scale(1);opacity:1;transition:.2s transform ease-out,.4s opacity"), 0);
|
|
288
288
|
if (player.ing) play();
|
|
289
|
-
|
|
290
|
-
|
|
289
|
+
}, 20, outter);
|
|
290
|
+
onmounted(outter, function () {
|
|
291
|
+
reshape(current_index);
|
|
292
|
+
});
|
|
291
293
|
outter.play = function (schedule = player.schedule, _isMiss) {
|
|
292
294
|
if (isDefined(_isMiss)) {
|
|
293
295
|
isMiss = _isMiss;
|
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
66
|
var _decrease = function (increaser, t) {
|
|
65
|
-
var height =
|
|
67
|
+
var height = increaser.height;
|
|
66
68
|
if (height > 1) {
|
|
67
69
|
var scrollTop = _box.$Top();
|
|
68
70
|
if (scrollTop > 0 && increaser_t === increaser) {
|
|
@@ -101,8 +103,8 @@ function ybox(generator) {
|
|
|
101
103
|
return true;
|
|
102
104
|
};
|
|
103
105
|
var increase = function (deltaY, minusOnly) {
|
|
104
|
-
var t_height = increaser_t.height
|
|
105
|
-
var b_height = increaser_b.height
|
|
106
|
+
var t_height = increaser_t.height;
|
|
107
|
+
var b_height = increaser_b.height;
|
|
106
108
|
t_height -= deltaY;
|
|
107
109
|
b_height += deltaY;
|
|
108
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"
|