efront 4.4.14 → 4.5.3
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/#/345/233/275/351/231/205/345/214/226.yml +83 -5
- package/apps/pivot/api.yml +4 -0
- package/apps/pivot/cert/edit.js +1 -0
- package/apps/pivot/cert/list.js +9 -0
- package/apps/pivot/cert/main.xht +188 -0
- package/apps/pivot/cert/orders.xht +232 -0
- package/apps/pivot/cert/update.xht +7 -0
- package/apps/pivot/menu.yml +1 -0
- package/coms/basic/assert.js +40 -16
- package/coms/basic/cross_.js +22 -4
- package/coms/basic/renderTags.js +23 -0
- package/coms/basic/shallowClone.js +8 -0
- package/coms/basic/shallowEqual.js +13 -4
- package/coms/basic/valid.js +19 -4
- package/coms/compile/Javascript.js +25 -12
- package/coms/compile//347/264/240/351/246/250.js +2 -1
- package/coms/docs/codetext.xht +3 -3
- package/coms/frame/chat.js +1 -1
- package/coms/frame/edit.html +1 -0
- package/coms/frame/edit.js +3 -2
- package/coms/kugou/bindScroll.js +1 -1
- package/coms/kugou/krc.js +2 -2
- package/coms/layer/leftCenter.js +5 -5
- package/coms/pivot/acme2.js +290 -0
- package/coms/pivot/pedit.js +13 -5
- package/coms/pivot/plist.js +12 -5
- package/coms/reptile/colored_console.js +5 -17
- package/coms/zimoli/appendChild.js +3 -2
- package/coms/zimoli/autofocus.js +2 -2
- package/coms/zimoli/button.less +5 -3
- package/coms/zimoli/checker.js +34 -15
- package/coms/zimoli/checker.less +2 -3
- package/coms/zimoli/container.js +26 -15
- package/coms/zimoli/data.js +124 -169
- package/coms/zimoli/field.js +3 -3
- package/coms/zimoli/field.less +8 -2
- package/coms/zimoli/filterTime.js +39 -8
- package/coms/zimoli/fromBase64.js +2 -0
- package/coms/zimoli/grid.js +2 -2
- package/coms/zimoli/isMounted.js +3 -3
- package/coms/zimoli/list.js +5 -5
- package/coms/zimoli/maps.js +1 -1
- package/coms/zimoli/menuList.js +1 -1
- package/coms/zimoli/model.js +61 -8
- package/coms/zimoli/on.js +4 -4
- package/coms/zimoli/remove.js +3 -3
- package/coms/zimoli/render.js +25 -33
- package/coms/zimoli/scrollbar.js +54 -19
- package/coms/zimoli/scrollbar.less +14 -2
- package/coms/zimoli/scrollbar_test.less +1 -0
- package/coms/zimoli/select.js +3 -3
- package/coms/zimoli/table.js +1 -1
- package/coms/zimoli/toBase64.js +16 -6
- package/coms/zimoli/view.js +24 -14
- package/coms/zimoli/view.less +6 -4
- package/coms/zimoli/watch.js +1 -1
- package/docs/loader.js +1 -1
- package/docs//347/273/204/344/273/266.xht +0 -1
- package/package.json +1 -1
- package/public/efront.js +1 -1
package/coms/zimoli/maps.js
CHANGED
|
@@ -185,7 +185,7 @@ function maps(config = {}) {
|
|
|
185
185
|
canvas.map.refresh();
|
|
186
186
|
canvas._default = canvas.map.defaultImage();
|
|
187
187
|
};
|
|
188
|
-
if (canvas
|
|
188
|
+
if (canvas.$mounted) reshape();
|
|
189
189
|
else once("append")(canvas, reshape);
|
|
190
190
|
bind('resize')(canvas, reshape);
|
|
191
191
|
|
package/coms/zimoli/menuList.js
CHANGED
package/coms/zimoli/model.js
CHANGED
|
@@ -46,6 +46,36 @@ unmark(checkbox);
|
|
|
46
46
|
unmark(swap);
|
|
47
47
|
unmark(image);
|
|
48
48
|
unmark(success);
|
|
49
|
+
var renderOption = function (o, index) {
|
|
50
|
+
if (typeof o === 'string') return o;
|
|
51
|
+
if (isFunction(o)) {
|
|
52
|
+
var name = typeof index === 'number' ? o.name : index;
|
|
53
|
+
return `<a href="javascript:;" @click=field.options[${strings.encode(index)}](data)>${name}</a>`
|
|
54
|
+
}
|
|
55
|
+
if (isObject(o)) {
|
|
56
|
+
if (o.href) {
|
|
57
|
+
return `<a href=${strings.encode(o.href)}>${o.name}</a>`;
|
|
58
|
+
}
|
|
59
|
+
return `<a href='javascript:;' @click=field.options[${strings.encode(index)}](data)>${o.name}</a>`
|
|
60
|
+
}
|
|
61
|
+
return o;
|
|
62
|
+
}
|
|
63
|
+
var renderOptions = function (field, data) {
|
|
64
|
+
var { options } = field;
|
|
65
|
+
if (typeof options === 'string') return options;
|
|
66
|
+
if (isFunction(options)) return renderOption(options);
|
|
67
|
+
if (options instanceof Array) {
|
|
68
|
+
return options.map(renderOption).join('');
|
|
69
|
+
}
|
|
70
|
+
else if (isObject(options)) {
|
|
71
|
+
return Object.keys(options).map(k => renderOption(options[k], k)).join('');
|
|
72
|
+
}
|
|
73
|
+
return '';
|
|
74
|
+
}
|
|
75
|
+
var onoff = function () {
|
|
76
|
+
var { data, field } = this;
|
|
77
|
+
data[field.key] = checker.changeValue(data[field.key]);
|
|
78
|
+
};
|
|
49
79
|
var constructors = {
|
|
50
80
|
input,
|
|
51
81
|
swap(e) {
|
|
@@ -74,10 +104,19 @@ var constructors = {
|
|
|
74
104
|
input(ipt);
|
|
75
105
|
return ipt;
|
|
76
106
|
},
|
|
107
|
+
generator(elem) {
|
|
108
|
+
var { data, field } = elem;
|
|
109
|
+
elem.innerHTML = `<a @click="gen()" -if="!data[field.key]">${field.holder || '单击生成'}</a><span -else -bind="data[field.key]"></span>`;
|
|
110
|
+
render(elem, {
|
|
111
|
+
data, field, a: button, async gen() {
|
|
112
|
+
await field.options(data);
|
|
113
|
+
}
|
|
114
|
+
});
|
|
115
|
+
},
|
|
77
116
|
date() {
|
|
78
117
|
var elem = document.createElement("input");
|
|
79
118
|
elem.type = "date";
|
|
80
|
-
elem
|
|
119
|
+
elem.$renders = [function () {
|
|
81
120
|
var { data, field } = this.$scope;
|
|
82
121
|
if (data && field) elem.value = parseDate(data[field.key]);
|
|
83
122
|
}]
|
|
@@ -96,6 +135,11 @@ var constructors = {
|
|
|
96
135
|
if (options) img.setAttribute("uploadto", options.uploadto);
|
|
97
136
|
return img;
|
|
98
137
|
},
|
|
138
|
+
checker(elem) {
|
|
139
|
+
var { data, field } = elem;
|
|
140
|
+
elem.innerHTML = `<span @click="onoff()"><checker -model=data[field.key]></checker><span -bind='field.holder'></span></span>${renderOptions(field, data)}`;
|
|
141
|
+
render(elem.children, { onoff, checker, data, a: button, field });
|
|
142
|
+
},
|
|
99
143
|
checkbox({ field }) {
|
|
100
144
|
var elem = checkbox();
|
|
101
145
|
cast(elem, field);
|
|
@@ -132,7 +176,7 @@ var constructors = {
|
|
|
132
176
|
},
|
|
133
177
|
"repeat"(_, field_type) {
|
|
134
178
|
var elem = input();
|
|
135
|
-
elem
|
|
179
|
+
elem.$renders = [function () {
|
|
136
180
|
var { field, data } = this.$scope;
|
|
137
181
|
var { status } = this;
|
|
138
182
|
var valid = this.value === data[field_type];
|
|
@@ -157,6 +201,7 @@ var constructors = {
|
|
|
157
201
|
}
|
|
158
202
|
};
|
|
159
203
|
constructors.price = constructors.money = constructors.number;
|
|
204
|
+
constructors.gen = constructors.generator;
|
|
160
205
|
var readonly_types = {
|
|
161
206
|
"date"({ field }, data) {
|
|
162
207
|
var string = data[field.key];
|
|
@@ -164,9 +209,11 @@ var readonly_types = {
|
|
|
164
209
|
},
|
|
165
210
|
"url"({ field }, data) {
|
|
166
211
|
var href = data[field.key];
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
212
|
+
if (href) {
|
|
213
|
+
var e = anchor2(field.holder || href, href);
|
|
214
|
+
e.target = "_blank";
|
|
215
|
+
return e;
|
|
216
|
+
}
|
|
170
217
|
},
|
|
171
218
|
"size"({ field }, data) {
|
|
172
219
|
var f = data[field.key];
|
|
@@ -177,13 +224,18 @@ var readonly_types = {
|
|
|
177
224
|
t.innerHTML = seek(data, a.field.key);
|
|
178
225
|
return t;
|
|
179
226
|
},
|
|
227
|
+
text(e) {
|
|
228
|
+
var { data, field } = e;
|
|
229
|
+
e.innerHTML = data[field.key] ?? '';
|
|
230
|
+
},
|
|
180
231
|
swap(e, data) {
|
|
181
232
|
var { field } = e;
|
|
182
233
|
var v = data[field.key];
|
|
183
234
|
if (field.options) {
|
|
184
235
|
if (!field.optionsMap) field.optionsMap = createOptionsMap(field.options);
|
|
185
236
|
var o = field.optionsMap[v];
|
|
186
|
-
|
|
237
|
+
try { e.setAttribute(field.key, v); } catch { }
|
|
238
|
+
if (isObject(o)) return `<s></s>` + o.name;
|
|
187
239
|
if (isHandled(o)) return o;
|
|
188
240
|
}
|
|
189
241
|
if (isEmpty(v)) v = '';
|
|
@@ -191,6 +243,7 @@ var readonly_types = {
|
|
|
191
243
|
},
|
|
192
244
|
};
|
|
193
245
|
readonly_types.anchor = readonly_types.url;
|
|
246
|
+
readonly_types.gen = readonly_types.generator = readonly_types.text;
|
|
194
247
|
var createOptionsMap = function (options) {
|
|
195
248
|
if (!isObject(options[0])) return options;
|
|
196
249
|
var map = Object.create(null);
|
|
@@ -293,7 +346,7 @@ function main(elem) {
|
|
|
293
346
|
if (!ipt.$scope) {
|
|
294
347
|
renderModel.call(ipt, field, data);
|
|
295
348
|
var saved_sataus;
|
|
296
|
-
ipt
|
|
349
|
+
ipt.$renders.push(function () {
|
|
297
350
|
var { valid, status } = this;
|
|
298
351
|
if (elem.valid !== valid) elem.valid = valid;
|
|
299
352
|
if (saved_sataus === status) return;
|
|
@@ -310,7 +363,7 @@ function main(elem) {
|
|
|
310
363
|
on("change")(ipt, copyOptionData);
|
|
311
364
|
}
|
|
312
365
|
if ("options_from" in field) {
|
|
313
|
-
ipt
|
|
366
|
+
ipt.$renders.push(rebuildOptions);
|
|
314
367
|
}
|
|
315
368
|
}
|
|
316
369
|
}
|
package/coms/zimoli/on.js
CHANGED
|
@@ -263,7 +263,7 @@ var remove = function (k, hk, [eventtypes, handler, context]) {
|
|
|
263
263
|
var [e, h, c] = hs[cx];
|
|
264
264
|
if (h === handler && e === eventtypes && c === context) {
|
|
265
265
|
hs.splice(cx, 1);
|
|
266
|
-
if (k === changes_key) element
|
|
266
|
+
if (k === changes_key) element.$needchanges--;
|
|
267
267
|
}
|
|
268
268
|
}
|
|
269
269
|
if (!hs.length && hs.h) {
|
|
@@ -330,8 +330,8 @@ var append = function (k, hk, listener2, firstmost) {
|
|
|
330
330
|
if (h === handler && eventtypes === e && c === context) return;
|
|
331
331
|
}
|
|
332
332
|
if (k === changes_key) {
|
|
333
|
-
if (!element
|
|
334
|
-
element
|
|
333
|
+
if (!element.$needchanges) element.$needchanges = 0;
|
|
334
|
+
element.$needchanges++;
|
|
335
335
|
}
|
|
336
336
|
if (firstmost) handlers.unshift(listener2);
|
|
337
337
|
else handlers.push(listener2);
|
|
@@ -342,7 +342,7 @@ var on = document.efronton = function (k) {
|
|
|
342
342
|
if (handlersMap[on_event_path]) return handlersMap[on_event_path];
|
|
343
343
|
var eventtypes = parseEventTypes(k);
|
|
344
344
|
k = k.replace(eventtypereg, '');
|
|
345
|
-
var handler_path =
|
|
345
|
+
var handler_path = "$h_" + k;
|
|
346
346
|
var hk = handler_path + +!!eventtypes.capture;
|
|
347
347
|
if (supportPassive) hk += +!!eventtypes.passive;
|
|
348
348
|
if (is_addEventListener_enabled) var addhandler = function (context, handler, firstmost = false) {
|
package/coms/zimoli/remove.js
CHANGED
|
@@ -40,14 +40,14 @@ function hasLeaveStyle(o) {
|
|
|
40
40
|
}
|
|
41
41
|
|
|
42
42
|
function _onremove(node, event) {
|
|
43
|
-
if (!node || node
|
|
43
|
+
if (!node || node.$mounted === false) return;
|
|
44
44
|
var children = node.childNodes;
|
|
45
|
-
if (node
|
|
45
|
+
if (node.$mounted) {
|
|
46
46
|
if (!event) {
|
|
47
47
|
event = createEvent("remove");
|
|
48
48
|
}
|
|
49
49
|
dispatch(node, event);
|
|
50
|
-
node
|
|
50
|
+
node.$mounted = false;
|
|
51
51
|
}
|
|
52
52
|
if (children) for (var cx = 0, dx = children.length; cx < dx; cx++) {
|
|
53
53
|
_onremove(children[cx], event);
|
package/coms/zimoli/render.js
CHANGED
|
@@ -71,7 +71,7 @@ var removeRenderElement = function () {
|
|
|
71
71
|
function refresh(root) {
|
|
72
72
|
var rest = [];
|
|
73
73
|
var body = document.documentElement;
|
|
74
|
-
if (root && root
|
|
74
|
+
if (root && root.$renders) {
|
|
75
75
|
for (var k in renderElements) {
|
|
76
76
|
var element = renderElements[k];
|
|
77
77
|
if (
|
|
@@ -90,8 +90,8 @@ function refresh(root) {
|
|
|
90
90
|
if (rest.length) rest.forEach(a => removeRenderElement.call(a));
|
|
91
91
|
}
|
|
92
92
|
function rebuild(element) {
|
|
93
|
-
if (!element
|
|
94
|
-
element
|
|
93
|
+
if (!element.$needchanges) {
|
|
94
|
+
element.$renders.forEach(a => a.call(element));
|
|
95
95
|
return;
|
|
96
96
|
}
|
|
97
97
|
var props = {};
|
|
@@ -99,7 +99,7 @@ function rebuild(element) {
|
|
|
99
99
|
var data = element[key];
|
|
100
100
|
props[key] = isObject(data) && !isFunction(data) && !isDate(data) && !isNode(data) ? extend(data instanceof Array ? [] : {}, data) : data;
|
|
101
101
|
});
|
|
102
|
-
element
|
|
102
|
+
element.$renders.forEach(a => a.call(element));
|
|
103
103
|
var changes = getChanges(element, props);
|
|
104
104
|
if (changes) {
|
|
105
105
|
var event = createEvent('changes');
|
|
@@ -118,7 +118,7 @@ var createGetter = function (target, search, isprop = true) {
|
|
|
118
118
|
};
|
|
119
119
|
var createComment = function (renders, type, expression) {
|
|
120
120
|
var comment = document.createComment(`${type} ${expression}`);
|
|
121
|
-
comment
|
|
121
|
+
comment.$renders = renders;
|
|
122
122
|
comment.$scope = this.$scope;
|
|
123
123
|
comment.$struct = this.$struct;
|
|
124
124
|
comment.$parentScopes = this.$parentScopes;
|
|
@@ -294,7 +294,7 @@ var createIf = function (search, id = 0) {
|
|
|
294
294
|
elements.comment = search;
|
|
295
295
|
if (this.$struct.repeat) id = -3;
|
|
296
296
|
|
|
297
|
-
elements
|
|
297
|
+
elements.$renders = [function () {
|
|
298
298
|
var shouldMount = -1;
|
|
299
299
|
for (var cx = 0, dx = elements.length; cx < dx; cx += 2) {
|
|
300
300
|
var getter = elements[cx + 1];
|
|
@@ -322,7 +322,7 @@ var createIf = function (search, id = 0) {
|
|
|
322
322
|
}
|
|
323
323
|
|
|
324
324
|
}];
|
|
325
|
-
return elements[0] = createComment.call(element, elements
|
|
325
|
+
return elements[0] = createComment.call(element, elements.$renders, 'if', elements.comment);
|
|
326
326
|
};
|
|
327
327
|
var parseIfWithRepeat = function (ifExpression, repeatExpression) {
|
|
328
328
|
var repeater = parseRepeat(repeatExpression);
|
|
@@ -443,7 +443,7 @@ var createBinder = function (binder) {
|
|
|
443
443
|
return function (search) {
|
|
444
444
|
var getter = createGetter(this, `(${search})`);
|
|
445
445
|
var oldValue;
|
|
446
|
-
this
|
|
446
|
+
this.$renders.push(function () {
|
|
447
447
|
var value = getter(this);
|
|
448
448
|
if (shallowEqual(value, oldValue)) return;
|
|
449
449
|
var oldv = oldValue;
|
|
@@ -465,19 +465,11 @@ var createBinder = function (binder) {
|
|
|
465
465
|
var src2 = function (search) {
|
|
466
466
|
var getter = createGetter(this, search);
|
|
467
467
|
var savedValue;
|
|
468
|
-
this
|
|
468
|
+
this.$renders.push(function () {
|
|
469
469
|
var origin = getter(this);
|
|
470
|
-
var temp = origin;
|
|
471
|
-
if (origin instanceof Array) {
|
|
472
|
-
temp = extend([], origin);
|
|
473
|
-
} else if (isObject(origin)) {
|
|
474
|
-
temp = extend({}, origin);
|
|
475
|
-
} else if (!isHandled(origin)) {
|
|
476
|
-
temp = "";
|
|
477
|
-
}
|
|
470
|
+
var temp = shallowClone(origin, 1);
|
|
478
471
|
if (isHandled(savedValue)) {
|
|
479
|
-
|
|
480
|
-
if (!changes) return;
|
|
472
|
+
if (shallowEqual(temp, savedValue, 1)) return;
|
|
481
473
|
}
|
|
482
474
|
else {
|
|
483
475
|
if (isSame(savedValue, temp)) return;
|
|
@@ -533,16 +525,16 @@ var directives = {
|
|
|
533
525
|
this[key] = value;
|
|
534
526
|
};
|
|
535
527
|
if (/^input$/i.test(target.tagName) && /^checkbox$/i.test(target.type) || /^checkbox$/i.test(target.tagName)) {
|
|
536
|
-
this
|
|
528
|
+
this.$renders.push(setter || setter2.bind(target, 'checked'));
|
|
537
529
|
var change = getstr || "this.checked";
|
|
538
530
|
} else if (("value" in target || target.getValue instanceof Function) && target.setValue instanceof Function) {
|
|
539
|
-
this
|
|
531
|
+
this.$renders.push(setter);
|
|
540
532
|
var change = getstr || "this.value";
|
|
541
533
|
} else if (/^(select|input|textarea)$/i.test(target.tagName) || "value" in target) {
|
|
542
|
-
this
|
|
534
|
+
this.$renders.push(setter || setter2.bind(target, 'value'));
|
|
543
535
|
var change = getstr || "this.value";
|
|
544
536
|
} else {
|
|
545
|
-
this
|
|
537
|
+
this.$renders.push(setter || function () {
|
|
546
538
|
var value = getter(this);
|
|
547
539
|
if (value === undefined) value = "";
|
|
548
540
|
if (deepEqual(oldValue, value)) return;
|
|
@@ -569,7 +561,7 @@ var directives = {
|
|
|
569
561
|
var getter = createGetter(this, `(${search})`);
|
|
570
562
|
var generatedClassNames = {};
|
|
571
563
|
var oldValue;
|
|
572
|
-
this
|
|
564
|
+
this.$renders.push(function () {
|
|
573
565
|
var className = getter(this);
|
|
574
566
|
if (deepEqual(oldValue, className)) return;
|
|
575
567
|
oldValue = className;
|
|
@@ -608,7 +600,7 @@ var binders = {
|
|
|
608
600
|
attr = attr.replace(/\-(\w)/g, (_, w) => w.toUpperCase());
|
|
609
601
|
var getter = createGetter(this, search);
|
|
610
602
|
var oldValue;
|
|
611
|
-
this
|
|
603
|
+
this.$renders.push(function () {
|
|
612
604
|
var value = getter(this);
|
|
613
605
|
if (deepEqual(value, oldValue)) return;
|
|
614
606
|
oldValue = value;
|
|
@@ -620,7 +612,7 @@ var binders = {
|
|
|
620
612
|
""(attr, search) {
|
|
621
613
|
var getter = createGetter(this, search);
|
|
622
614
|
var oldValue;
|
|
623
|
-
this
|
|
615
|
+
this.$renders.push(function () {
|
|
624
616
|
var value = getter(this);
|
|
625
617
|
if (deepEqual(value, oldValue)) return;
|
|
626
618
|
oldValue = value;
|
|
@@ -720,8 +712,8 @@ function getFromScopes(key, scope, parentScopes) {
|
|
|
720
712
|
}
|
|
721
713
|
|
|
722
714
|
function renderRest(element, struct, replacer = element) {
|
|
723
|
-
var renders = element
|
|
724
|
-
element
|
|
715
|
+
var renders = element.$renders;
|
|
716
|
+
element.$renders = [];
|
|
725
717
|
var { binds, attrs, props } = struct;
|
|
726
718
|
for (var k in binds) {
|
|
727
719
|
if (k === 'src') continue;
|
|
@@ -741,7 +733,7 @@ function renderRest(element, struct, replacer = element) {
|
|
|
741
733
|
} catch (e) { }
|
|
742
734
|
}
|
|
743
735
|
if (binds.src) directives.src.call(element, binds.src);
|
|
744
|
-
if (renders && renders.length) element
|
|
736
|
+
if (renders && renders.length) element.$renders.push.apply(element.$renders, renders);
|
|
745
737
|
}
|
|
746
738
|
|
|
747
739
|
function renderElement(element, scope = element.$scope, parentScopes = element.$parentScopes, once) {
|
|
@@ -786,7 +778,7 @@ function renderElement(element, scope = element.$scope, parentScopes = element.$
|
|
|
786
778
|
if (parentNode) {
|
|
787
779
|
if (parentNode.$renderid > 1 || isMounted(parentNode)) element.$renderid = 2;
|
|
788
780
|
}
|
|
789
|
-
element
|
|
781
|
+
element.$renders = element.$renders || element.renders ? [].concat(element.$renders || [], element.renders || []) : [];
|
|
790
782
|
var { copys, binds, once } = element.$struct;
|
|
791
783
|
if (once) element.$renderid = 9;
|
|
792
784
|
if (binds.src) {
|
|
@@ -823,8 +815,8 @@ function renderElement(element, scope = element.$scope, parentScopes = element.$
|
|
|
823
815
|
if (!isFirstRender) return element;
|
|
824
816
|
renderRest(element, element.$struct, replacer);
|
|
825
817
|
if (isNode(replacer) && replacer !== element) {
|
|
826
|
-
if (!replacer
|
|
827
|
-
replacer
|
|
818
|
+
if (!replacer.$renders) replacer.$renders = [];
|
|
819
|
+
replacer.$renders.push.apply(replacer.$renders, element.$renders);
|
|
828
820
|
if (replacer.$struct && replacer.$struct !== element.$struct) {
|
|
829
821
|
element.$struct.ons.forEach(([on, key, value]) => on.call(element, replacer, key, value));
|
|
830
822
|
}
|
|
@@ -833,7 +825,7 @@ function renderElement(element, scope = element.$scope, parentScopes = element.$
|
|
|
833
825
|
else {
|
|
834
826
|
element.$struct.ons.forEach(([on, key, value]) => on.call(element, element, key, value));
|
|
835
827
|
}
|
|
836
|
-
if (element
|
|
828
|
+
if (element.$renders.length) {
|
|
837
829
|
if (element.$renderid !== 9) {
|
|
838
830
|
onmounted(element, addRenderElement);
|
|
839
831
|
onremove(element, removeRenderElement);
|
package/coms/zimoli/scrollbar.js
CHANGED
|
@@ -65,6 +65,13 @@ var scrollbary = function () {
|
|
|
65
65
|
css(thumb, { top: targetY });
|
|
66
66
|
dispatch(target, "change");
|
|
67
67
|
}
|
|
68
|
+
var tt = target.target;
|
|
69
|
+
if (tt) {
|
|
70
|
+
var { Height, height } = getTargetHeight(tt);
|
|
71
|
+
var top = targetY * (Height - height) / (target.clientHeight - thumb.offsetHeight);
|
|
72
|
+
setTargetTop(tt, top);
|
|
73
|
+
}
|
|
74
|
+
|
|
68
75
|
};
|
|
69
76
|
|
|
70
77
|
var mouseup = function () {
|
|
@@ -141,29 +148,30 @@ var scrollbary = function () {
|
|
|
141
148
|
return { Height, height };
|
|
142
149
|
};
|
|
143
150
|
|
|
144
|
-
function
|
|
145
|
-
var
|
|
146
|
-
|
|
147
|
-
_scrollbar.target = _container;
|
|
148
|
-
onmounted(_container, _scrollbar.reshape);
|
|
149
|
-
on("scroll")(_container, function () {
|
|
150
|
-
var top = getTargetTop(_container);
|
|
151
|
+
function scrollbar(elem) {
|
|
152
|
+
var onscroll = function () {
|
|
153
|
+
var top = getTargetTop(this);
|
|
151
154
|
_scrollbar.scrollTo(top);
|
|
152
155
|
_scrollbar.autoshow();
|
|
153
|
-
}
|
|
154
|
-
|
|
156
|
+
};
|
|
157
|
+
var onchange = function () {
|
|
155
158
|
var top = _scrollbar.$Top();
|
|
156
|
-
setTargetTop(
|
|
157
|
-
}
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
159
|
+
setTargetTop(this, top);
|
|
160
|
+
};
|
|
161
|
+
function bindTarget(_container, followResize = _container) {
|
|
162
|
+
_container.with = _scrollbar;
|
|
163
|
+
_scrollbar.target = _container;
|
|
164
|
+
onmounted(_container, _scrollbar.reshape);
|
|
165
|
+
on("scroll")(_container, onscroll);
|
|
166
|
+
on("change")(_scrollbar, onchange);
|
|
167
|
+
if (followResize) resizingList.set(followResize, _scrollbar.reshape);
|
|
168
|
+
}
|
|
161
169
|
var _scrollbar = elem || document.createElement("scrollbar");
|
|
162
|
-
_scrollbar.reshape = function () {
|
|
170
|
+
_scrollbar.reshape = lazy(function () {
|
|
163
171
|
var _container = _scrollbar.target;
|
|
164
172
|
var { Height, height } = getTargetHeight(_container);
|
|
165
173
|
reshape.call(_scrollbar, Height, height);
|
|
166
|
-
};
|
|
174
|
+
});
|
|
167
175
|
_scrollbar.scrollTo = scrollTo;
|
|
168
176
|
var _handler = document.createElement("scrollbar-thumb");
|
|
169
177
|
_handler.className = "thumb";
|
|
@@ -192,16 +200,43 @@ var scrollbary = function () {
|
|
|
192
200
|
}
|
|
193
201
|
var scrollbar_y = scrollbary();
|
|
194
202
|
var scrollbar_x = arriswise(scrollbary, arguments)();
|
|
195
|
-
function
|
|
203
|
+
var isBody = function (elem) {
|
|
204
|
+
return hasClass(elem, 'body') || elem.hasAttribute('body');
|
|
205
|
+
}
|
|
206
|
+
function main(elem) {
|
|
207
|
+
var direction, bar, target;
|
|
208
|
+
if (typeof elem === 'string') {
|
|
209
|
+
direction = elem;
|
|
210
|
+
elem = null;
|
|
211
|
+
}
|
|
212
|
+
else if (isElement(elem)) {
|
|
213
|
+
direction = elem.tagName;
|
|
214
|
+
var $struct = elem.$struct;
|
|
215
|
+
if ($struct) {
|
|
216
|
+
if ($struct.props?.target);
|
|
217
|
+
else if (isBody(elem.previousElementSibling)) {
|
|
218
|
+
target = elem.previousElementSibling;
|
|
219
|
+
}
|
|
220
|
+
else if (isBody(elem.nextElementSibling)) {
|
|
221
|
+
target = elem.nextElementSibling;
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
else if (!/^(\w*\-?)?scroll/i.test(direction)) target = elem, elem = null;
|
|
225
|
+
}
|
|
226
|
+
else {
|
|
227
|
+
elem = null;
|
|
228
|
+
}
|
|
196
229
|
var bar, target;
|
|
197
230
|
if (isElement(direction)) {
|
|
198
231
|
target = direction;
|
|
199
232
|
direction = target.tagName;
|
|
200
233
|
}
|
|
201
234
|
if (/^[xh]/i.test(direction)) {
|
|
202
|
-
bar = scrollbar_x();
|
|
235
|
+
bar = scrollbar_x(elem);
|
|
236
|
+
bar.setAttribute('x', '');
|
|
203
237
|
} else {
|
|
204
|
-
bar = scrollbar_y();
|
|
238
|
+
bar = scrollbar_y(elem);
|
|
239
|
+
bar.setAttribute('y', '');
|
|
205
240
|
}
|
|
206
241
|
if (target) bar.bindTarget(target);
|
|
207
242
|
return bar;
|
|
@@ -1,12 +1,24 @@
|
|
|
1
1
|
& {
|
|
2
2
|
position: absolute;
|
|
3
3
|
width: 6px;
|
|
4
|
-
background-color: rgba(0, 0, 0, .1);
|
|
5
4
|
border-radius: 7px;
|
|
6
5
|
height: 100px;
|
|
7
6
|
border-left: 3px solid transparent;
|
|
8
7
|
|
|
9
|
-
|
|
8
|
+
&[x],
|
|
9
|
+
&.x {
|
|
10
|
+
left: 0;
|
|
11
|
+
bottom: 0;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
&[y],
|
|
15
|
+
&.y {
|
|
16
|
+
top: 0;
|
|
17
|
+
right: 0;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
&:hover,
|
|
21
|
+
&:active {
|
|
10
22
|
>.thumb {
|
|
11
23
|
opacity: 1 !important;
|
|
12
24
|
overflow: visible;
|
package/coms/zimoli/select.js
CHANGED
|
@@ -219,10 +219,10 @@ function select(target, list, removeOnSelect, direction) {
|
|
|
219
219
|
}
|
|
220
220
|
else _remove();
|
|
221
221
|
};
|
|
222
|
-
if (!target
|
|
223
|
-
target
|
|
222
|
+
if (!target.$renders) {
|
|
223
|
+
target.$renders = [];
|
|
224
224
|
}
|
|
225
|
-
target
|
|
225
|
+
target.$renders.push(setIcon);
|
|
226
226
|
onclick(target, mousedown);
|
|
227
227
|
return target;
|
|
228
228
|
}
|
package/coms/zimoli/table.js
CHANGED
package/coms/zimoli/toBase64.js
CHANGED
|
@@ -1,14 +1,24 @@
|
|
|
1
1
|
var encoding = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'.split('');
|
|
2
|
-
function toBase64(input) {
|
|
2
|
+
function toBase64(input, url) {
|
|
3
|
+
var encoding1 = encoding;
|
|
4
|
+
if (url) {
|
|
5
|
+
encoding1[62] = "-";
|
|
6
|
+
encoding1[63] = "_";
|
|
7
|
+
}
|
|
3
8
|
for (var cx = 0, block, output = [], dx = input.length; cx < dx;) {
|
|
4
9
|
block = input[cx++] << 16 | input[cx++] << 8 | input[cx++];
|
|
5
10
|
output.push(
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
11
|
+
encoding1[block >> 18],
|
|
12
|
+
encoding1[block >> 12 & 0b111111],
|
|
13
|
+
encoding1[block >> 6 & 0b111111],
|
|
14
|
+
encoding1[block & 0b111111]
|
|
10
15
|
);
|
|
11
16
|
}
|
|
12
|
-
|
|
17
|
+
if (url) {
|
|
18
|
+
encoding1[62] = "+";
|
|
19
|
+
encoding1[63] = "/";
|
|
20
|
+
while (cx-- > dx) output.pop();
|
|
21
|
+
}
|
|
22
|
+
else for (cx = output.length + dx - cx, dx = output.length; cx < dx; cx++) output[cx] = '=';
|
|
13
23
|
return output.join("");
|
|
14
24
|
}
|
package/coms/zimoli/view.js
CHANGED
|
@@ -103,12 +103,12 @@ var resize2 = function () {
|
|
|
103
103
|
else if (isType(c, "foot")) foot = c;
|
|
104
104
|
}
|
|
105
105
|
if (head && body) {
|
|
106
|
-
var height = head.offsetHeight;
|
|
106
|
+
var height = head.offsetHeight + head.offsetTop;
|
|
107
107
|
css(head, {
|
|
108
108
|
marginBottom: fromOffset(-height),
|
|
109
109
|
})
|
|
110
110
|
css(body, {
|
|
111
|
-
paddingTop: fromOffset(height)
|
|
111
|
+
paddingTop: fromOffset(height - body.clientTop)
|
|
112
112
|
});
|
|
113
113
|
}
|
|
114
114
|
if (foot && body) {
|
|
@@ -120,22 +120,32 @@ var resize2 = function () {
|
|
|
120
120
|
marginTop: fromOffset(-height)
|
|
121
121
|
})
|
|
122
122
|
}
|
|
123
|
+
if (body) {
|
|
124
|
+
if (body.scrollHeight + body.offsetTop > this.clientHeight) {
|
|
125
|
+
css(body, { height: fromOffset(this.clientHeight) });
|
|
126
|
+
}
|
|
127
|
+
else {
|
|
128
|
+
css(body, { height: '' });
|
|
129
|
+
}
|
|
130
|
+
}
|
|
123
131
|
};
|
|
124
132
|
function view(element) {
|
|
125
|
-
var
|
|
133
|
+
var w = isNode(element) ? element : document.createElement("form");
|
|
126
134
|
init();
|
|
127
|
-
extend(
|
|
128
|
-
if (
|
|
129
|
-
extend(
|
|
130
|
-
once("append")(
|
|
131
|
-
if (
|
|
132
|
-
|
|
135
|
+
extend(w, prototype);
|
|
136
|
+
if (w !== element) {
|
|
137
|
+
extend(w, element);
|
|
138
|
+
once("append")(w, function () {
|
|
139
|
+
if (w.draggable !== true && w.draggable !== false) {
|
|
140
|
+
w.draggable = /^(fixed|absolute)$/i.test(getComputedStyle(w).position);
|
|
133
141
|
}
|
|
134
|
-
if (
|
|
142
|
+
if (w.draggable) w.setAttribute('draggable', 'draggable');
|
|
135
143
|
})
|
|
136
|
-
if (
|
|
144
|
+
if (w.resizable) resize.on(w);
|
|
137
145
|
}
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
146
|
+
resizingList.set(w, resize2);
|
|
147
|
+
w.renders = [resize2];
|
|
148
|
+
w.reshape = lazy(resize2);
|
|
149
|
+
onmounted(w, w.reshape);
|
|
150
|
+
return w;
|
|
141
151
|
}
|