efront 3.4.7 → 3.5.0
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.yml +2 -1
- package/apps/pivot/home/welcome.js +4 -4
- package/apps/pivot/main.js +4 -1
- package/apps/pivot/menu.yml +3 -1
- package/apps/pivot/share/list.html +1 -0
- package/apps/pivot/share/list.js +24 -0
- package/coms/layer/glance.js +2 -2
- package/coms/zimoli/alert.js +4 -3
- package/coms/zimoli/appendChild.js +1 -0
- package/coms/zimoli/color.js +3 -2
- package/coms/zimoli/gallery.js +2 -12
- package/coms/zimoli/getGenerator.js +10 -9
- package/coms/zimoli/list.js +2 -12
- package/coms/zimoli/menu.js +3 -14
- package/coms/zimoli/menuList.js +4 -3
- package/coms/zimoli/render.js +94 -100
- package/coms/zimoli/table.html +16 -0
- package/coms/zimoli/table.js +14 -0
- package/coms/zimoli/table.less +44 -34
- package/coms/zimoli/zimoli.js +11 -5
- package/package.json +1 -1
- package/public/efront.js +1 -1
package/apps/pivot/api.yml
CHANGED
|
@@ -13,12 +13,12 @@ function main() {
|
|
|
13
13
|
} catch { }
|
|
14
14
|
target.removeAttribute('pending');
|
|
15
15
|
},
|
|
16
|
-
logout() {
|
|
16
|
+
async logout() {
|
|
17
17
|
data.setSource('authorization', null);
|
|
18
|
-
user.
|
|
19
|
-
|
|
18
|
+
await user.Logout();
|
|
19
|
+
zimoli.switch();
|
|
20
|
+
zimoli();
|
|
20
21
|
}
|
|
21
22
|
});
|
|
22
|
-
console.log(page)
|
|
23
23
|
return page;
|
|
24
24
|
}
|
package/apps/pivot/main.js
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
data.loadConfig("api.yml");
|
|
2
2
|
user.loginPath = '/auth/login';
|
|
3
|
-
|
|
3
|
+
var token = data.getSource('authorization');
|
|
4
|
+
if (token) {
|
|
5
|
+
user.login({});
|
|
6
|
+
}
|
|
4
7
|
setInterval(function () {
|
|
5
8
|
var auth = data.getSource('authorization');
|
|
6
9
|
if (!auth) return;
|
package/apps/pivot/menu.yml
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<table :src=[fields,data]></table>
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
var fields = refilm`
|
|
2
|
+
路径/path
|
|
3
|
+
操作 btn ${[{
|
|
4
|
+
name: "删除",
|
|
5
|
+
do(e) {
|
|
6
|
+
console.log(e)
|
|
7
|
+
alert("暂不支持删除!");
|
|
8
|
+
}
|
|
9
|
+
}]}
|
|
10
|
+
`;
|
|
11
|
+
console.log(fields)
|
|
12
|
+
function main() {
|
|
13
|
+
var page = div();
|
|
14
|
+
page.innerHTML = list;
|
|
15
|
+
var a = data.from("share", a => {
|
|
16
|
+
if (a) return a.map(b => ({ path: b }));
|
|
17
|
+
});
|
|
18
|
+
renderWithDefaults(page, {
|
|
19
|
+
data: a,
|
|
20
|
+
fields,
|
|
21
|
+
});
|
|
22
|
+
console.log(a)
|
|
23
|
+
return page;
|
|
24
|
+
}
|
package/coms/layer/glance.js
CHANGED
|
@@ -90,14 +90,14 @@ function main(mainPath, historyName = "") {
|
|
|
90
90
|
var hook = function () {
|
|
91
91
|
if (--index !== 0) return;
|
|
92
92
|
if (leftPath) {
|
|
93
|
-
var page = zimoli.
|
|
93
|
+
var page = zimoli.create(leftPath);
|
|
94
94
|
page.setAttribute('layer', 'left');
|
|
95
95
|
appendChild.replace(leftLayer, page);
|
|
96
96
|
leftLayer = page;
|
|
97
97
|
dragview({ page: layer, toLeft: layer.closeLeft, toRight: layer.openLeft, menu: leftLayer });
|
|
98
98
|
}
|
|
99
99
|
if (topPath) {
|
|
100
|
-
var page = zimoli.
|
|
100
|
+
var page = zimoli.create(topPath);
|
|
101
101
|
page.setAttribute('layer', 'top');
|
|
102
102
|
appendChild.replace(topLayer, page);
|
|
103
103
|
topLayer = page;
|
package/coms/zimoli/alert.js
CHANGED
|
@@ -8,6 +8,7 @@ styles.success = styles.pass = styles.green;
|
|
|
8
8
|
styles.info = styles.blue;
|
|
9
9
|
styles.error = styles.danger = styles.red;
|
|
10
10
|
styles.warn = styles.orange;
|
|
11
|
+
styles.default = '#000';
|
|
11
12
|
var alerts = [];
|
|
12
13
|
var clean = Cleanup(alerts);
|
|
13
14
|
var build = function () {
|
|
@@ -21,15 +22,15 @@ var build = function () {
|
|
|
21
22
|
};
|
|
22
23
|
var fontSize = 16;
|
|
23
24
|
var singleHeight = fontSize * 3.125 | 0;
|
|
24
|
-
var _text = function (
|
|
25
|
+
var _text = function (bgcolor, parameters) {
|
|
25
26
|
var box = div();
|
|
26
27
|
css(box, `top:${fromPixel(alerts.length ? Math.max.apply(Math, alerts.map(e => e.offsetTop + e.children[0].offsetHeight)) : 0)};height:0;line-height:${fromPixel(singleHeight - 20)};left:0;right:0;font-size:${fromPixel(fontSize)}; transition: all 0.2s ease-out;position:absolute;color:#fff;text-align:center;`);
|
|
27
|
-
box.innerHTML = `<div style='width: 720px;white-space:pre-wrap;max-width:100%;display:inline-block;height:auto;padding:${fromPixel(10)} ${fromPixel(20)};background-color:${color};'>${[].slice.call(parameters, 0).join(", ")}</div>`;
|
|
28
|
+
box.innerHTML = `<div style='width: 720px;white-space:pre-wrap;max-width:100%;display:inline-block;height:auto;padding:${fromPixel(10)} ${fromPixel(20)};background-color:${bgcolor};color:${color.pair(bgcolor)};'>${[].slice.call(parameters, 0).join(", ")}</div>`;
|
|
28
29
|
box.initialStyle = `margin:-${fromPixel(singleHeight)} auto;opacity:0;`;
|
|
29
30
|
return box;
|
|
30
31
|
};
|
|
31
32
|
function alert() {
|
|
32
|
-
var color = String(this), text, autoclose = true, onclose;
|
|
33
|
+
var color = String(isString(this) && this || styles.default), text, autoclose = true, onclose;
|
|
33
34
|
var color_reg = /^#(?:\w{6}|\w{3})$/;
|
|
34
35
|
[].map.call(arguments, function (arg) {
|
|
35
36
|
switch (typeof arg) {
|
|
@@ -116,6 +116,7 @@ appendChild.insert = function (parent, element, relative = parent.childNodes[0]
|
|
|
116
116
|
}
|
|
117
117
|
};
|
|
118
118
|
appendChild.replace = function (alreadyMounted, element) {
|
|
119
|
+
if (alreadyMounted === element) return;
|
|
119
120
|
if (!alreadyMounted || !alreadyMounted.parentNode) return;
|
|
120
121
|
insertBefore(alreadyMounted, element);
|
|
121
122
|
remove(alreadyMounted);
|
package/coms/zimoli/color.js
CHANGED
|
@@ -37,6 +37,7 @@ var trim3v = function (r, g, b) {
|
|
|
37
37
|
if (b > 0) b += rest;
|
|
38
38
|
}
|
|
39
39
|
} while (rest > 0);
|
|
40
|
+
|
|
40
41
|
return [r, g, b];
|
|
41
42
|
}
|
|
42
43
|
|
|
@@ -56,7 +57,7 @@ var rgb4s = function (r, g, b, s) {
|
|
|
56
57
|
g -= m;
|
|
57
58
|
b -= m;
|
|
58
59
|
}
|
|
59
|
-
s = s * 255 / Math.max(r, g, b);
|
|
60
|
+
s = s * 255 / (Math.max(r, g, b) || 1);
|
|
60
61
|
if (s) {
|
|
61
62
|
r *= s;
|
|
62
63
|
g *= s;
|
|
@@ -276,7 +277,7 @@ var rgb2v = function (r, g, b) {
|
|
|
276
277
|
r *= .299;
|
|
277
278
|
g *= .587;
|
|
278
279
|
b *= .114;
|
|
279
|
-
return r
|
|
280
|
+
return Math.max(r, g, b) / .587;
|
|
280
281
|
};
|
|
281
282
|
var v2rgb = function (v, r, g, b) {
|
|
282
283
|
var t = r + g + b || 1;
|
package/coms/zimoli/gallery.js
CHANGED
|
@@ -121,18 +121,8 @@ function main() {
|
|
|
121
121
|
minWidth = arg;
|
|
122
122
|
}
|
|
123
123
|
});
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
var parsedSrc = render.parseRepeat(src);
|
|
127
|
-
if (!parsedSrc) {
|
|
128
|
-
element.setAttribute("ng-src", src);
|
|
129
|
-
element.removeAttribute("src");
|
|
130
|
-
var generator = getGenerator(element);
|
|
131
|
-
} else {
|
|
132
|
-
element.setAttribute("ng-src", parsedSrc.srcName);
|
|
133
|
-
element.removeAttribute("src");
|
|
134
|
-
var generator = getGenerator(element, parsedSrc);
|
|
135
|
-
}
|
|
124
|
+
if ("$src" in element) {
|
|
125
|
+
var generator = getGenerator(element);
|
|
136
126
|
care(element, function () {
|
|
137
127
|
var index = element.index();
|
|
138
128
|
element.clean();
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
|
|
2
2
|
var _slider = createElement(div);
|
|
3
|
-
var getGenerator = function (container
|
|
3
|
+
var getGenerator = function (container) {
|
|
4
4
|
if (!container) return;
|
|
5
5
|
var template = document.createElement("div");
|
|
6
6
|
var templates = [].concat.apply([], container.childNodes).filter(a => {
|
|
@@ -20,26 +20,27 @@ var getGenerator = function (container, parsedSrc) {
|
|
|
20
20
|
appendChild(template, templates);
|
|
21
21
|
container.insertBefore = _slider.insertBefore;
|
|
22
22
|
container.appendChild = _slider.appendChild;
|
|
23
|
+
var scopes = container.$parentScopes.concat(container.$scope);
|
|
23
24
|
return function (index, com) {
|
|
24
25
|
if (!com) {
|
|
25
26
|
if (!container.src || index >= container.src.length) return;
|
|
26
27
|
com = container.src[index];
|
|
27
28
|
}
|
|
28
29
|
if (!com) return;
|
|
29
|
-
var template1 = template.cloneNode();
|
|
30
|
-
template1.innerHTML = template.innerHTML;
|
|
30
|
+
var template1 = template.cloneNode(true);
|
|
31
31
|
if (!template1.childNodes.length) return template1;
|
|
32
32
|
var item = template1.childNodes[0];
|
|
33
33
|
item.with = [].concat.apply([], template1.childNodes).slice(1);
|
|
34
|
+
var parsedSrc = container.$src;
|
|
34
35
|
if (parsedSrc) {
|
|
35
36
|
var { keyName, itemName, indexName } = parsedSrc;
|
|
36
|
-
var newScope =
|
|
37
|
+
var newScope = {
|
|
37
38
|
[keyName || '$key']: index,
|
|
38
39
|
[itemName || '$item']: com,
|
|
39
40
|
[indexName || '$index']: index
|
|
40
|
-
}
|
|
41
|
-
var newItem = render(item, newScope);
|
|
42
|
-
newItem.with = render(item.with, newScope);
|
|
41
|
+
};
|
|
42
|
+
var newItem = render(item, newScope, scopes);
|
|
43
|
+
if (item.with.length) newItem.with = render(item.with, newScope, scopes);
|
|
43
44
|
} else {
|
|
44
45
|
var newScope = container.src[index];
|
|
45
46
|
if (!isObject(newScope)) newScope = {
|
|
@@ -59,8 +60,8 @@ var getGenerator = function (container, parsedSrc) {
|
|
|
59
60
|
return this.$item;
|
|
60
61
|
}
|
|
61
62
|
}
|
|
62
|
-
var newItem = render(item, newScope,
|
|
63
|
-
newItem.with = render(newItem.with = item.with, newScope,
|
|
63
|
+
var newItem = render(item, newScope, scopes);
|
|
64
|
+
newItem.with = render(newItem.with = item.with, newScope, scopes);
|
|
64
65
|
}
|
|
65
66
|
return newItem;
|
|
66
67
|
};
|
package/coms/zimoli/list.js
CHANGED
|
@@ -433,18 +433,8 @@ function list() {
|
|
|
433
433
|
bindSrc = container;
|
|
434
434
|
container = div();
|
|
435
435
|
} else if (container && !generator) {
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
var parsedSrc = render.parseRepeat(src);
|
|
439
|
-
if (!parsedSrc) {
|
|
440
|
-
container.setAttribute("ng-src", src);
|
|
441
|
-
container.removeAttribute("src");
|
|
442
|
-
var generator = getGenerator(container);
|
|
443
|
-
} else {
|
|
444
|
-
container.setAttribute("ng-src", parsedSrc.srcName);
|
|
445
|
-
container.removeAttribute("src");
|
|
446
|
-
var generator = getGenerator(container, parsedSrc);
|
|
447
|
-
}
|
|
436
|
+
if ("$src" in container) {
|
|
437
|
+
generator = getGenerator(container);
|
|
448
438
|
care(container, function () {
|
|
449
439
|
var index = container.index();
|
|
450
440
|
container.clean();
|
package/coms/zimoli/menu.js
CHANGED
|
@@ -110,18 +110,6 @@ function main(elem, mode) {
|
|
|
110
110
|
}
|
|
111
111
|
}
|
|
112
112
|
mode = mode ? mode.toLowerCase() : "horizonal";
|
|
113
|
-
var src = elem.getAttribute("src") || elem.getAttribute("ng-src") || elem.getAttribute("v-src");
|
|
114
|
-
if (src) {
|
|
115
|
-
var parsedSrc = render.parseRepeat(src);
|
|
116
|
-
if (!parsedSrc) {
|
|
117
|
-
elem.removeAttribute("src");
|
|
118
|
-
var generator = getGenerator(elem);
|
|
119
|
-
} else {
|
|
120
|
-
elem.removeAttribute("src");
|
|
121
|
-
var generator = getGenerator(elem, parsedSrc);
|
|
122
|
-
}
|
|
123
|
-
elem.setAttribute("ng-src", parsedSrc ? parsedSrc.srcName : src);
|
|
124
|
-
}
|
|
125
113
|
|
|
126
114
|
switch (mode) {
|
|
127
115
|
case "i":
|
|
@@ -130,6 +118,7 @@ function main(elem, mode) {
|
|
|
130
118
|
case "t":
|
|
131
119
|
case "tree":
|
|
132
120
|
if (elem) {
|
|
121
|
+
var generator = getGenerator(elem);
|
|
133
122
|
tree(elem, function (index, item) {
|
|
134
123
|
var e = generator(index, item);
|
|
135
124
|
if (!e || e.children.length) return e;
|
|
@@ -165,9 +154,9 @@ function main(elem, mode) {
|
|
|
165
154
|
var emit = function (item) {
|
|
166
155
|
active(elem, item, item.value);
|
|
167
156
|
};
|
|
168
|
-
if (src) {
|
|
157
|
+
if ("$src" in elem) {
|
|
169
158
|
care(elem, function (src) {
|
|
170
|
-
menuList(elem, getTreeFromData(src), emit,
|
|
159
|
+
menuList(elem, getTreeFromData(src), emit, direction);
|
|
171
160
|
});
|
|
172
161
|
} else {
|
|
173
162
|
var nodes = getArrayNodes(elem);
|
package/coms/zimoli/menuList.js
CHANGED
|
@@ -8,7 +8,7 @@ var release = function () {
|
|
|
8
8
|
var clear = function () {
|
|
9
9
|
clearTimeout(releaseTimer);
|
|
10
10
|
};
|
|
11
|
-
function main(page, items, active,
|
|
11
|
+
function main(page, items, active, direction = 'y') {
|
|
12
12
|
if (!isNode(page)) {
|
|
13
13
|
var page = div();
|
|
14
14
|
}
|
|
@@ -21,7 +21,7 @@ function main(page, items, active, generator, direction = 'y') {
|
|
|
21
21
|
if (!item.children || !item.children.length) return;
|
|
22
22
|
var clone = template.cloneNode();
|
|
23
23
|
clone.innerHTML = template.innerHTML;
|
|
24
|
-
var menu = main(clone, item.children, active
|
|
24
|
+
var menu = main(clone, item.children, active);
|
|
25
25
|
mounted_menus.push(menu);
|
|
26
26
|
|
|
27
27
|
page.active = menu;
|
|
@@ -46,7 +46,7 @@ function main(page, items, active, generator, direction = 'y') {
|
|
|
46
46
|
template.innerHTML = page.innerHTML;
|
|
47
47
|
page.tempalte = template;
|
|
48
48
|
}
|
|
49
|
-
if (!
|
|
49
|
+
if (!page.children.length || page.menutype === 1) {
|
|
50
50
|
page.innerHTML = menuList;
|
|
51
51
|
page.menutype = 1;
|
|
52
52
|
var hasIcon = function () {
|
|
@@ -82,6 +82,7 @@ function main(page, items, active, generator, direction = 'y') {
|
|
|
82
82
|
this.$scope.hasIcon = hasIcon();
|
|
83
83
|
});
|
|
84
84
|
} else {
|
|
85
|
+
var generator = getGenerator(page);
|
|
85
86
|
list(page, function (index) {
|
|
86
87
|
var elem = generator(index);
|
|
87
88
|
if (!elem) return;
|
package/coms/zimoli/render.js
CHANGED
|
@@ -144,7 +144,10 @@ var createRepeat = function (search, id = 0) {
|
|
|
144
144
|
throw new Error("数据量过大,取消绘制!");
|
|
145
145
|
}
|
|
146
146
|
var $parentScopes = element.$parentScopes || [];
|
|
147
|
-
|
|
147
|
+
var $struct = element.$struct;
|
|
148
|
+
if (element.$scope) {
|
|
149
|
+
$struct = Object.assign({}, $struct, { context: $struct.context + `with(this.$parentScopes[${$parentScopes.length}])` }), $parentScopes = $parentScopes.concat(element.$scope);
|
|
150
|
+
}
|
|
148
151
|
var clonedElements1 = Object.create(null);
|
|
149
152
|
var cloned = keys.map(function (key, cx) {
|
|
150
153
|
var k = isArrayResult ? cx : key;
|
|
@@ -161,6 +164,7 @@ var createRepeat = function (search, id = 0) {
|
|
|
161
164
|
};
|
|
162
165
|
clone.$scope = $scope;
|
|
163
166
|
clone.$parentScopes = $parentScopes;
|
|
167
|
+
clone.$struct = $struct;
|
|
164
168
|
clone = render(clone, $scope, clone.$parentScopes);
|
|
165
169
|
clonedElements1[k] = clone;
|
|
166
170
|
return clone;
|
|
@@ -302,19 +306,17 @@ var parseIfWithRepeat = function (ifExpression, repeatExpression) {
|
|
|
302
306
|
|
|
303
307
|
var createStructure = function ({ name: ifkey, key, value: ifexp } = {}, { name: forkey, value: repeat } = {}, context) {
|
|
304
308
|
var element = this;
|
|
305
|
-
if (!ifkey) return structures.repeat.call(element, [context, repeat]);
|
|
306
|
-
if (!repeat) return structures[key].call(element, [context, ifexp]);
|
|
309
|
+
if (!ifkey) return element.removeAttribute(forkey), structures.repeat.call(element, [context, repeat]);
|
|
310
|
+
if (!repeat) return element.removeAttribute(ifkey), structures[key].call(element, [context, ifexp]);
|
|
307
311
|
if (!ifexp) {
|
|
308
312
|
element.removeAttribute(ifkey);
|
|
309
313
|
return structures[key].call(element, [context, ifexp]);
|
|
310
314
|
}
|
|
311
315
|
var { before, after } = parseIfWithRepeat(ifexp, repeat);
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
element.setAttribute(ifkey, after.join("&&"));
|
|
316
|
+
element.removeAttribute(ifkey);
|
|
317
|
+
if (after.length) {
|
|
318
|
+
element.setAttribute("a-if", after.join("&&"));
|
|
316
319
|
}
|
|
317
|
-
|
|
318
320
|
if (before.length > 0) {
|
|
319
321
|
// 懒渲染
|
|
320
322
|
createIf.call(element, [context, before.join("&&")], null);
|
|
@@ -367,6 +369,27 @@ var createBinder = function (binder) {
|
|
|
367
369
|
|
|
368
370
|
}
|
|
369
371
|
}
|
|
372
|
+
|
|
373
|
+
var src2 = function (search) {
|
|
374
|
+
var getter = createGetter(search).bind(this);
|
|
375
|
+
var savedValue;
|
|
376
|
+
this.renders.push(function () {
|
|
377
|
+
var origin = getter();
|
|
378
|
+
var temp = origin;
|
|
379
|
+
if (origin instanceof Array) {
|
|
380
|
+
temp = extend([], origin);
|
|
381
|
+
} else if (isObject(origin)) {
|
|
382
|
+
temp = extend({}, origin);
|
|
383
|
+
} else if (isEmpty(origin)) {
|
|
384
|
+
temp = "";
|
|
385
|
+
}
|
|
386
|
+
var changes = getChanges(temp, savedValue);
|
|
387
|
+
if (!changes) return;
|
|
388
|
+
savedValue = temp;
|
|
389
|
+
this.src = origin;
|
|
390
|
+
cast(this, origin);
|
|
391
|
+
});
|
|
392
|
+
}
|
|
370
393
|
var directives = {
|
|
371
394
|
bind: createBinder(text),
|
|
372
395
|
html: createBinder(html),
|
|
@@ -379,47 +402,9 @@ var directives = {
|
|
|
379
402
|
elem.style.display = value ? '' : 'none';
|
|
380
403
|
}),
|
|
381
404
|
style: createBinder(css),
|
|
382
|
-
src(
|
|
383
|
-
var
|
|
384
|
-
|
|
385
|
-
var refresh = function () {
|
|
386
|
-
that.src = savedValue;
|
|
387
|
-
removeClass(that, "pending");
|
|
388
|
-
pending = 0;
|
|
389
|
-
};
|
|
390
|
-
var img = document.createElement("img");
|
|
391
|
-
var that = this;
|
|
392
|
-
this.renders.push(function () {
|
|
393
|
-
var origin = getter();
|
|
394
|
-
var temp = origin;
|
|
395
|
-
if (origin instanceof Array) {
|
|
396
|
-
temp = extend([], origin);
|
|
397
|
-
} else if (isObject(origin)) {
|
|
398
|
-
temp = extend({}, origin);
|
|
399
|
-
} else if (isEmpty(origin)) {
|
|
400
|
-
temp = "";
|
|
401
|
-
}
|
|
402
|
-
var changes = getChanges(temp, savedValue);
|
|
403
|
-
if (!changes) return;
|
|
404
|
-
savedValue = temp;
|
|
405
|
-
if (/^img$/i.test(this.tagName)) {
|
|
406
|
-
if (!isString(origin)) {
|
|
407
|
-
return;
|
|
408
|
-
}
|
|
409
|
-
if (origin) {
|
|
410
|
-
img.src = origin;
|
|
411
|
-
if (img.complete) {
|
|
412
|
-
this.src = origin;
|
|
413
|
-
} else if (!pending) {
|
|
414
|
-
addClass(this, "pending");
|
|
415
|
-
pending = setTimeout(refresh);
|
|
416
|
-
}
|
|
417
|
-
}
|
|
418
|
-
} else {
|
|
419
|
-
this.src = origin;
|
|
420
|
-
cast(this, origin);
|
|
421
|
-
}
|
|
422
|
-
});
|
|
405
|
+
src([s, src]) {
|
|
406
|
+
var parsedSrc = this.$src;
|
|
407
|
+
return src2.call(this, [s, parsedSrc ? parsedSrc.srcName : src]);
|
|
423
408
|
},
|
|
424
409
|
model(search) {
|
|
425
410
|
var getter = createGetter(search).bind(this);
|
|
@@ -510,6 +495,7 @@ var directives = {
|
|
|
510
495
|
});
|
|
511
496
|
},
|
|
512
497
|
};
|
|
498
|
+
directives.text = directives.bind;
|
|
513
499
|
// property binder
|
|
514
500
|
var binders = {
|
|
515
501
|
_(attr, search) {
|
|
@@ -607,10 +593,14 @@ function renderElement(element, scope = element.$scope, parentScopes = element.$
|
|
|
607
593
|
if (parentNode) {
|
|
608
594
|
if (parentNode.renderid > 1 || parentNode.isMounted) element.renderid = 2;
|
|
609
595
|
}
|
|
610
|
-
var ons = [];
|
|
611
596
|
|
|
612
597
|
if (isFirstRender) {
|
|
613
|
-
|
|
598
|
+
element.renders = element.renders ? [].concat(element.renders) : [];
|
|
599
|
+
var { ons, copys, attrs, props, binds, context: withContext } = element.$struct;
|
|
600
|
+
delete element.$struct;
|
|
601
|
+
if (binds.src) {
|
|
602
|
+
element.$src = parseRepeat(binds.src);
|
|
603
|
+
}
|
|
614
604
|
var { tagName, parentNode, nextSibling } = element;
|
|
615
605
|
// 替换元素
|
|
616
606
|
var constructor = getFromScopes(tagName, scope, parentScopes);
|
|
@@ -623,13 +613,12 @@ function renderElement(element, scope = element.$scope, parentScopes = element.$
|
|
|
623
613
|
constructor = getFromScopes(tagName, scope, parentScopes);
|
|
624
614
|
}
|
|
625
615
|
if (isFunction(constructor)) {
|
|
626
|
-
var attrsMap = {};
|
|
627
616
|
var replacer = constructor.call(scope, element, scope, parentScopes);
|
|
628
617
|
if (isNode(replacer) && element !== replacer) {
|
|
629
618
|
if (nextSibling) appendChild.before(nextSibling, replacer);
|
|
630
619
|
else if (parentNode) appendChild(parentNode, replacer);
|
|
631
620
|
if (element.parentNode === parentNode) remove(element);
|
|
632
|
-
|
|
621
|
+
copys.forEach(function (attr) {
|
|
633
622
|
var { name, value } = attr;
|
|
634
623
|
switch (name.toLowerCase()) {
|
|
635
624
|
case "class":
|
|
@@ -643,62 +632,39 @@ function renderElement(element, scope = element.$scope, parentScopes = element.$
|
|
|
643
632
|
replacer[name] = value;
|
|
644
633
|
break;
|
|
645
634
|
default:
|
|
646
|
-
|
|
647
|
-
replacer.setAttribute(name, value);
|
|
648
|
-
} else {
|
|
649
|
-
attrsMap[name] = attr;
|
|
650
|
-
}
|
|
635
|
+
replacer.setAttribute(name, value);
|
|
651
636
|
}
|
|
652
637
|
});
|
|
653
638
|
replacer.renderid = element.renderid;
|
|
639
|
+
replacer.renders = element.renders;
|
|
640
|
+
if (binds.src) replacer.$src = element.$src;
|
|
654
641
|
element = replacer;
|
|
655
642
|
element.$scope = scope;
|
|
656
643
|
element.$parentScopes = parentScopes;
|
|
657
644
|
}
|
|
658
|
-
[].concat.apply([], element.attributes).forEach(attr => {
|
|
659
|
-
if (attrsMap[attr.name]) {
|
|
660
|
-
delete attrsMap[attr.name];
|
|
661
|
-
}
|
|
662
|
-
attrsMap[attr.name] = attr;
|
|
663
|
-
});
|
|
664
|
-
attrs = Object.keys(attrsMap).map(key => attrsMap[key]);
|
|
665
645
|
}
|
|
666
646
|
}
|
|
667
647
|
if (element.children.length) renderElement(element.children, scope, parentScopes);
|
|
668
648
|
if (!isFirstRender) return element;
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
|
|
672
|
-
var emiter_reg = /^(?:(v|ng|on|once)\-|v\-on\:|@|once|on)/i;
|
|
673
|
-
attrs.map(function (attr) {
|
|
674
|
-
var { name, value } = attr;
|
|
675
|
-
if (/^(?:class|style|src|\:)$/i.test(name)) return;
|
|
676
|
-
var key = name.replace(/^(ng|v|.*?)\-|^[\:\_\.]/i, "").toLowerCase();
|
|
677
|
-
if (directives.hasOwnProperty(key) && isFunction(directives[key])) {
|
|
678
|
-
directives[key].call(element, [withContext, value]);
|
|
679
|
-
element.removeAttribute(name);
|
|
680
|
-
} else if (emiter_reg.test(name)) {
|
|
681
|
-
var match = emiter_reg.exec(name);
|
|
682
|
-
var ngon = (match[1] || match[0]).toLowerCase() === 'once' ? 'once' : 'on';
|
|
683
|
-
element.removeAttribute(name);
|
|
684
|
-
ons.push([emiters[ngon], name.replace(emiter_reg, ''), value]);
|
|
685
|
-
} else if (/^([\_\:\.]|v\-bind\:)/.test(name)) {
|
|
686
|
-
binders._.call(element, name.replace(/^([\_\:\.]|v\-bind\:)/, ""), [withContext, value]);
|
|
687
|
-
element.removeAttribute(name);
|
|
688
|
-
} else if (/[_@\:\.]$/.test(name)) {
|
|
689
|
-
binders[""].call(element, name.replace(/[_@\:\.]$/, ""), [withContext, value]);
|
|
690
|
-
element.removeAttribute(name);
|
|
691
|
-
} else {
|
|
692
|
-
name = name.replace(/\-(\w)/g, (_, w) => w.toUpperCase());
|
|
693
|
-
try {
|
|
694
|
-
element[name] = value === '' ? true : value;
|
|
695
|
-
} catch (e) {
|
|
696
|
-
}
|
|
649
|
+
for (var k in binds) {
|
|
650
|
+
if (directives.hasOwnProperty(k)) {
|
|
651
|
+
directives[k].call(element, [withContext, binds[k]])
|
|
697
652
|
}
|
|
698
|
-
|
|
699
|
-
|
|
653
|
+
else {
|
|
654
|
+
binders._.call(element, k, [withContext, binds[k]]);
|
|
655
|
+
}
|
|
656
|
+
}
|
|
657
|
+
for (var k in attrs) {
|
|
658
|
+
binders[""].call(element, k, [withContext, attrs[k]]);
|
|
659
|
+
}
|
|
660
|
+
for (var k in props) {
|
|
661
|
+
try {
|
|
662
|
+
element[k] = props[k];
|
|
663
|
+
} catch (e) { }
|
|
664
|
+
}
|
|
700
665
|
ons.forEach(([on, key, value]) => on.call(element, key, [withContext, value]));
|
|
701
666
|
if (element.renders.length) {
|
|
667
|
+
rebuild(element);
|
|
702
668
|
onappend(element, addRenderElement);
|
|
703
669
|
onremove(element, removeRenderElement);
|
|
704
670
|
if (element.isMounted || element.renderid > 1) addRenderElement.call(element);
|
|
@@ -720,11 +686,19 @@ function renderStructure(element, scope, parentScopes = []) {
|
|
|
720
686
|
}
|
|
721
687
|
var attrs = [].concat.apply([], element.attributes);
|
|
722
688
|
var withContext = parentScopes ? parentScopes.map((_, cx) => `with(this.$parentScopes[${cx}])`).join("") : '';
|
|
723
|
-
attrs = attrs.filter(a => structures.hasOwnProperty(a.name.replace(/^(ng|V|.*?)\-/i, '').toLowerCase()));
|
|
724
689
|
var types = {};
|
|
725
|
-
|
|
726
|
-
|
|
727
|
-
|
|
690
|
+
var emiter_reg = /^(?:(v|ng|on|once)\-|v\-on\:|@|once|on)/i;
|
|
691
|
+
var ons = [];
|
|
692
|
+
var copys = [];
|
|
693
|
+
var binds = {};
|
|
694
|
+
var attr1 = {};
|
|
695
|
+
var props = {};
|
|
696
|
+
for (var attr of attrs) {
|
|
697
|
+
var { name, value } = attr;
|
|
698
|
+
if (/^(?:class|style|src|\:|placeholder)$/i.test(name)) {
|
|
699
|
+
copys.push(attr);
|
|
700
|
+
continue;
|
|
701
|
+
}
|
|
728
702
|
var key = name.replace(/^(ng|v|.*?)\-/i, "").toLowerCase();
|
|
729
703
|
if (structures.hasOwnProperty(key) && isFunction(structures[key])) {
|
|
730
704
|
if (element.renderid <= -2) {
|
|
@@ -747,9 +721,29 @@ function renderStructure(element, scope, parentScopes = []) {
|
|
|
747
721
|
}
|
|
748
722
|
if (!element.renderid) element.renderid = -1;
|
|
749
723
|
else element.renderid = -2;
|
|
724
|
+
// element.removeAttribute(name);
|
|
725
|
+
}
|
|
726
|
+
if (element.$struct) continue;
|
|
727
|
+
var key = name.replace(/^(ng|v|.*?)\-|^[\:\_\.]|^v\-bind\:/i, "").toLowerCase();
|
|
728
|
+
if (directives.hasOwnProperty(key) || /^([\_\:\.]|v\-bind\:)/.test(name)) {
|
|
729
|
+
binds[key] = value;
|
|
750
730
|
element.removeAttribute(name);
|
|
751
731
|
}
|
|
752
|
-
|
|
732
|
+
else if (emiter_reg.test(name)) {
|
|
733
|
+
var match = emiter_reg.exec(name);
|
|
734
|
+
var ngon = (match[1] || match[0]).toLowerCase() === 'once' ? 'once' : 'on';
|
|
735
|
+
element.removeAttribute(name);
|
|
736
|
+
ons.push([emiters[ngon], name.replace(emiter_reg, ''), value]);
|
|
737
|
+
}
|
|
738
|
+
else if (/[_@\:\.]$/.test(name)) {
|
|
739
|
+
attr1[name.replace(/[_@\:\.]$/, "")] = value;
|
|
740
|
+
element.removeAttribute(name);
|
|
741
|
+
}
|
|
742
|
+
else {
|
|
743
|
+
props[name.replace(/\-(\w)/g, (_, w) => w.toUpperCase())] = value === "" ? true : value;
|
|
744
|
+
}
|
|
745
|
+
}
|
|
746
|
+
if (!element.$struct) element.$struct = { ons, copys, binds, attrs: attr1, props, context: withContext };
|
|
753
747
|
if (element.renderid <= -1) createStructure.call(element, types.if, types.repeat, withContext);
|
|
754
748
|
}
|
|
755
749
|
function render(element, scope, parentScopes) {
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
<thead>
|
|
2
|
+
<tr>
|
|
3
|
+
<td -repeat="f in fields"><i -if="f.icon" -class="f.icon"></i></span><span -if="f.name" -html="f.name"></span>
|
|
4
|
+
</td>
|
|
5
|
+
</tr>
|
|
6
|
+
</thead>
|
|
7
|
+
<tbody -src="d in data">
|
|
8
|
+
<tr>
|
|
9
|
+
<td -repeat="f in fields">
|
|
10
|
+
<span -if="f.key" -text="d[f.key]"></span>
|
|
11
|
+
<a on-click="o.do(d)" -if="f.type==='btn'" -repeat="o in f.options">
|
|
12
|
+
<span -text=o.name></span>
|
|
13
|
+
</a>
|
|
14
|
+
</td>
|
|
15
|
+
</tr>
|
|
16
|
+
</tbody>
|
package/coms/zimoli/table.js
CHANGED
|
@@ -153,10 +153,24 @@ function table(elem) {
|
|
|
153
153
|
table.dragbox = function () {
|
|
154
154
|
return thead;
|
|
155
155
|
};
|
|
156
|
+
care(table, function ([fields, data]) {
|
|
157
|
+
this.innerHTML = template;
|
|
158
|
+
render(this, {
|
|
159
|
+
fields,
|
|
160
|
+
tbody: list,
|
|
161
|
+
data,
|
|
162
|
+
a: button,
|
|
163
|
+
}, this.$parentScopes.concat(this.$scope));
|
|
164
|
+
})
|
|
156
165
|
autodragchildren(
|
|
157
166
|
table,
|
|
158
167
|
cellMatchManager,
|
|
159
168
|
function (src, dst, rel, append, parentNode) {
|
|
169
|
+
if (table.src) {
|
|
170
|
+
var [fields] = table.src;
|
|
171
|
+
var [f] = fields.splice(src, 1);
|
|
172
|
+
fields.splice(dst, 0, f);
|
|
173
|
+
}
|
|
160
174
|
var children = parentNode.children;
|
|
161
175
|
var srcElement = children[src];
|
|
162
176
|
var dstElement = children[rel];
|