efront 3.22.9 → 3.22.10
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/parseKV.js +3 -2
- package/coms/layer/glance.js +0 -21
- package/coms/zimoli/input.js +39 -6
- package/coms/zimoli/moveupon.js +32 -4
- package/coms/zimoli/table.js +18 -4
- package/coms/zimoli/view.js +0 -1
- package/package.json +1 -1
- package/public/efront.js +1 -1
package/coms/basic/parseKV.js
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
2
|
+
var trim = a => a.trim();
|
|
3
|
+
function parseKV(string, spliter = "&", equals = "=", decode) {
|
|
3
4
|
var object = {};
|
|
4
|
-
|
|
5
|
+
if (!decode) decode = spliter === "&" && equals === "=" ? decodeURIComponent : trim;
|
|
5
6
|
if (typeof string === "string") {
|
|
6
7
|
var kvs = string.split(spliter);
|
|
7
8
|
for (var cx = 0, dx = kvs.length; cx < dx; cx++) {
|
package/coms/layer/glance.js
CHANGED
|
@@ -7,28 +7,7 @@ var dragview = function (dragview) {
|
|
|
7
7
|
savedX = event.clientX;
|
|
8
8
|
savedY = event.clientY;
|
|
9
9
|
offsetWidth = menu.offsetWidth;
|
|
10
|
-
var { target } = event;
|
|
11
10
|
moving = null;
|
|
12
|
-
if (/(input|textarea|select)/i.test(target.tagName) || getTargetIn(a => a.contentEditbale || a.draggable, event.target)) {
|
|
13
|
-
moving = false;
|
|
14
|
-
} else {
|
|
15
|
-
var { childNodes } = target;
|
|
16
|
-
if (getComputedStyle(target).cursor === 'auto' && getComputedStyle(target).userSelect !== 'none') for (var cx = 0, dx = childNodes.length; cx < dx; cx++) {
|
|
17
|
-
var child = childNodes[cx];
|
|
18
|
-
if (child.nodeType === 3) {
|
|
19
|
-
moving = false;
|
|
20
|
-
break;
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
if (moving !== false) do {
|
|
24
|
-
var contentEditbale = target.getAttribute("contenteditable") !== null;
|
|
25
|
-
if (contentEditbale) {
|
|
26
|
-
moving = false;
|
|
27
|
-
break;
|
|
28
|
-
}
|
|
29
|
-
target = target.parentNode;
|
|
30
|
-
} while (target && target.nodeType == 1);
|
|
31
|
-
}
|
|
32
11
|
},
|
|
33
12
|
move(event) {
|
|
34
13
|
if (moving === false) return;
|
package/coms/zimoli/input.js
CHANGED
|
@@ -1,17 +1,28 @@
|
|
|
1
1
|
var _input = createElement("input");
|
|
2
|
+
/**
|
|
3
|
+
* @this HTMLInputElement
|
|
4
|
+
*/
|
|
2
5
|
var number = function (event) {
|
|
3
6
|
var ipt = event.target;
|
|
4
7
|
var { keyCode } = event;
|
|
5
8
|
var { value, type } = ipt;
|
|
9
|
+
var s = this.selectionStart;
|
|
6
10
|
if (keyCode === 13 || keyCode === 18 || keyCode === 37 || keyCode === 38 || keyCode === 39 || keyCode === 40 || keyCode === 8 || keyCode === 46 || keyCode === 9) {
|
|
7
11
|
}
|
|
8
12
|
else if (keyCode >= 48 && keyCode <= 57 || keyCode >= 96 && keyCode <= 105) {
|
|
9
13
|
if (this.value) {
|
|
10
|
-
if (
|
|
14
|
+
if (s < this.value.length) {
|
|
15
|
+
var index = this.value.indexOf('.');
|
|
16
|
+
if (index >= 0 && s > index) {
|
|
17
|
+
this.value = this.value.slice(0, this.value.length - 1);
|
|
18
|
+
}
|
|
19
|
+
this.setSelectionRange(s, s);
|
|
20
|
+
}
|
|
21
|
+
else if (this.fixed && this.value.replace(/^[^\.]+/, '').length > this.fixed ||
|
|
11
22
|
this.limit && this.value.length >= this.limit && !/\./.test(this.value)) {
|
|
12
23
|
event.preventDefault();
|
|
13
24
|
}
|
|
14
|
-
if(/^[+-]?0$/.test(this.value)){
|
|
25
|
+
else if (/^[+-]?0$/.test(this.value)) {
|
|
15
26
|
event.preventDefault();
|
|
16
27
|
}
|
|
17
28
|
}
|
|
@@ -19,14 +30,27 @@ var number = function (event) {
|
|
|
19
30
|
else if (keyCode === 110 || keyCode === 190) {
|
|
20
31
|
if (/^int/i.test(type)) {
|
|
21
32
|
event.preventDefault();
|
|
22
|
-
}
|
|
33
|
+
}
|
|
34
|
+
else if (/\./i.test(value)) {
|
|
35
|
+
var index = this.value.indexOf(".");
|
|
36
|
+
if (s < index) {
|
|
37
|
+
this.value = this.value.slice(0, s) + this.value.slice(index + 1);
|
|
38
|
+
this.setSelectionRange(s, s);
|
|
39
|
+
}
|
|
40
|
+
else {
|
|
41
|
+
event.preventDefault();
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
else if (!value || /^[\-\+]$/.test(value)) {
|
|
23
45
|
event.preventDefault();
|
|
24
46
|
}
|
|
25
|
-
}
|
|
47
|
+
}
|
|
48
|
+
else if (keyCode === 189 || keyCode === 187) {// 负号 正号
|
|
26
49
|
if (value || this.positive) {
|
|
27
50
|
event.preventDefault();
|
|
28
51
|
}
|
|
29
|
-
}
|
|
52
|
+
}
|
|
53
|
+
else {
|
|
30
54
|
event.preventDefault();
|
|
31
55
|
}
|
|
32
56
|
if (value && !/^[\d]+$/i.test(value)) {
|
|
@@ -36,11 +60,19 @@ var number = function (event) {
|
|
|
36
60
|
if (value !== v) {
|
|
37
61
|
ipt.value = v;
|
|
38
62
|
}
|
|
39
|
-
}
|
|
63
|
+
}
|
|
64
|
+
else if (!/^[\-\+]$/.test(value)) {
|
|
40
65
|
ipt.value = '';
|
|
41
66
|
}
|
|
42
67
|
}
|
|
43
68
|
};
|
|
69
|
+
var toFixed = function () {
|
|
70
|
+
if (this.value && this.fixed) var fixed = BigNumber.fix(this.value, this.fixed);
|
|
71
|
+
if (this.value !== fixed) {
|
|
72
|
+
this.value = fixed;
|
|
73
|
+
dispatch(this, 'change');
|
|
74
|
+
}
|
|
75
|
+
};
|
|
44
76
|
var positiveReg = /^\+|^positive\-?|\-?positive$|\+$/i;
|
|
45
77
|
var negativeReg = /^\-|^negative\-?|\-?negative$|\-$/i;
|
|
46
78
|
var numberLimit = /\:(\d+)?(?:\.(\d+))?$/;
|
|
@@ -92,6 +124,7 @@ function input(element) {
|
|
|
92
124
|
case "money":
|
|
93
125
|
if (!element.fixed) element.fixed = 2;
|
|
94
126
|
on("keydown")(element, number);
|
|
127
|
+
on("blur")(element, toFixed);
|
|
95
128
|
break;
|
|
96
129
|
case "natural":
|
|
97
130
|
if (!+element.positive) element.positive = true;
|
package/coms/zimoli/moveupon.js
CHANGED
|
@@ -23,6 +23,30 @@ function removeAllListeners() {
|
|
|
23
23
|
if (isFunction(offhook)) offhook();
|
|
24
24
|
offhook = null;
|
|
25
25
|
}
|
|
26
|
+
if (/Firefox/.test(navigator.userAgent)) on('dragstart')(document, function (e) {
|
|
27
|
+
if (e.target.draggable === false) {
|
|
28
|
+
e.preventDefault();
|
|
29
|
+
return false;
|
|
30
|
+
}
|
|
31
|
+
});
|
|
32
|
+
var locktouch = function (target) {
|
|
33
|
+
if (/(input|textarea|select)/i.test(target.tagName) || getTargetIn(a => String(a.contentEditable) === 'true' || a.draggable, target)) {
|
|
34
|
+
return true;
|
|
35
|
+
} else {
|
|
36
|
+
var { childNodes } = target;
|
|
37
|
+
var a = getTargetIn(a => {
|
|
38
|
+
if ((getComputedStyle(a).userSelect || getComputedStyle(a).webkitUserSelect) !== 'auto') return a;
|
|
39
|
+
});
|
|
40
|
+
if (!a) return;
|
|
41
|
+
var computed = getComputedStyle(a);
|
|
42
|
+
if (computed.cursor === 'auto' && (computed.userSelect || computed.webkitUserSelect) !== 'none') for (var cx = 0, dx = childNodes.length; cx < dx; cx++) {
|
|
43
|
+
var child = childNodes[cx];
|
|
44
|
+
if (child.nodeType === 3) {
|
|
45
|
+
return true;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
};
|
|
26
50
|
|
|
27
51
|
function moveupon(target, { start, move, end }, initialEvent) {
|
|
28
52
|
var touchLocked = false;
|
|
@@ -47,20 +71,18 @@ function moveupon(target, { start, move, end }, initialEvent) {
|
|
|
47
71
|
if (isFunction(end)) end.call(target, event);
|
|
48
72
|
};
|
|
49
73
|
var hookmouse = function () {
|
|
50
|
-
if (touchLocked) return;
|
|
51
|
-
touchLocked = true;
|
|
52
74
|
addHookListener(onmousemove, mousemove, target === window);
|
|
53
75
|
offmouseup = onmouseup(window, cancel);
|
|
54
76
|
};
|
|
55
77
|
var hooktouch = function () {
|
|
56
|
-
if (touchLocked) return;
|
|
57
|
-
touchLocked = true;
|
|
58
78
|
addHookListener(ontouchmove, touchmove, target === window);
|
|
59
79
|
offtouchend = ontouchend(target, cancel);
|
|
60
80
|
offtouchcancel = ontouchcancel(target, cancel);
|
|
61
81
|
};
|
|
82
|
+
|
|
62
83
|
if (!start) {
|
|
63
84
|
if (!initialEvent) throw new Error("请传入touchstartEvent或者mousedownEvent");
|
|
85
|
+
if (locktouch(initialEvent.target)) return;
|
|
64
86
|
if (initialEvent.type === "touchstart") {
|
|
65
87
|
extendTouchEvent(initialEvent);
|
|
66
88
|
initialEvent.preventDefault();
|
|
@@ -71,10 +93,16 @@ function moveupon(target, { start, move, end }, initialEvent) {
|
|
|
71
93
|
return;
|
|
72
94
|
}
|
|
73
95
|
onmousedown(target, function (event) {
|
|
96
|
+
if (touchLocked) return;
|
|
97
|
+
if (locktouch(event.target)) return;
|
|
98
|
+
touchLocked = true;
|
|
74
99
|
hookmouse(event);
|
|
75
100
|
if (isFunction(start)) start.call(this, event);
|
|
76
101
|
});
|
|
77
102
|
ontouchstart(target, function (event) {
|
|
103
|
+
if (touchLocked) return;
|
|
104
|
+
if (locktouch(event.target)) return;
|
|
105
|
+
touchLocked = true;
|
|
78
106
|
extendTouchEvent(event);
|
|
79
107
|
hooktouch(event);
|
|
80
108
|
if (isFunction(start)) start.call(this, event);
|
package/coms/zimoli/table.js
CHANGED
|
@@ -365,6 +365,7 @@ function table(elem) {
|
|
|
365
365
|
}
|
|
366
366
|
if (!getTargetIn(thead, event.target)) return;
|
|
367
367
|
var tds = getTargetIn(cellMatchManager, event.target);
|
|
368
|
+
if (!tds) return;
|
|
368
369
|
setClass(tds, 'y-ing', activeCols);
|
|
369
370
|
activeCols = tds;
|
|
370
371
|
});
|
|
@@ -379,15 +380,18 @@ function table(elem) {
|
|
|
379
380
|
var table = tableElement;
|
|
380
381
|
var thead;
|
|
381
382
|
var markedRows = false;
|
|
383
|
+
var markThead = function () {
|
|
384
|
+
var savedRowDeltas = [];
|
|
385
|
+
Array.prototype.forEach.call(thead.children, function (tr) {
|
|
386
|
+
markRowTds(tr, savedRowDeltas);
|
|
387
|
+
});
|
|
388
|
+
};
|
|
382
389
|
var cellMatchManager = function (element) {
|
|
383
390
|
if (!thead) thead = getThead(table);
|
|
384
391
|
if (!getTargetIn(thead, element)) return false;
|
|
385
392
|
if (!tdElementReg.test(element.tagName)) return false;
|
|
386
393
|
if (!markedRows) {
|
|
387
|
-
|
|
388
|
-
Array.prototype.forEach.call(thead.children, function (tr) {
|
|
389
|
-
markRowTds(tr, savedRowDeltas);
|
|
390
|
-
});
|
|
394
|
+
markThead();
|
|
391
395
|
markedRows = true;
|
|
392
396
|
}
|
|
393
397
|
var { colstart, colend } = element;
|
|
@@ -468,14 +472,17 @@ function table(elem) {
|
|
|
468
472
|
var dstElement = children[rel];
|
|
469
473
|
var dstTds = getRowsOfTdsByCol(table, dstElement.colstart, dstElement.colend);
|
|
470
474
|
var srcTds = getRowsOfTdsByCol(table, srcElement.colstart, srcElement.colend);
|
|
475
|
+
var clearCss = { left: '', right: '', borderLeft: '', borderRight: '' };
|
|
471
476
|
if (append === appendChild.before) {
|
|
472
477
|
srcTds.map(function (src, cx) {
|
|
473
478
|
var dst = dstTds[cx];
|
|
474
479
|
var d = dst[0] || dst.next;
|
|
475
480
|
if (d) src.map(function (s) {
|
|
481
|
+
css(s, clearCss);
|
|
476
482
|
append(d, s);
|
|
477
483
|
});
|
|
478
484
|
else if (d = dst.prev) src.map(function (s) {
|
|
485
|
+
css(s, clearCss);
|
|
479
486
|
appendChild.after(d, s);
|
|
480
487
|
d = s;
|
|
481
488
|
});
|
|
@@ -485,15 +492,22 @@ function table(elem) {
|
|
|
485
492
|
var dst = dstTds[cx];
|
|
486
493
|
var d = dst[dst.length - 1] || dst.prev;
|
|
487
494
|
if (d) src.map(function (s) {
|
|
495
|
+
css(s, clearCss);
|
|
488
496
|
append(d, s);
|
|
489
497
|
d = s;
|
|
490
498
|
});
|
|
491
499
|
else if (d = dst.next) src.map(function (s) {
|
|
500
|
+
css(s, clearCss);
|
|
492
501
|
appendChild.before(d, s);
|
|
493
502
|
});
|
|
494
503
|
});
|
|
495
504
|
|
|
496
505
|
}
|
|
506
|
+
markThead();
|
|
507
|
+
markedRows = true;
|
|
508
|
+
requestAnimationFrame(function(){
|
|
509
|
+
setFixedColumn.call(table)
|
|
510
|
+
})
|
|
497
511
|
}
|
|
498
512
|
);
|
|
499
513
|
resizingList.set(table);
|
package/coms/zimoli/view.js
CHANGED