@joyzl/eno 1.0.0 → 1.0.2
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/index.js +99 -34
- package/package.json +1 -1
package/index.js
CHANGED
@@ -11,14 +11,15 @@ export default {
|
|
11
11
|
query,
|
12
12
|
on,
|
13
13
|
|
14
|
-
toggle,
|
15
14
|
show,
|
16
15
|
hide,
|
16
|
+
toggle,
|
17
17
|
|
18
18
|
gets,
|
19
19
|
sets,
|
20
20
|
entity,
|
21
|
-
action
|
21
|
+
action,
|
22
|
+
element,
|
22
23
|
}
|
23
24
|
|
24
25
|
/**
|
@@ -40,6 +41,7 @@ function show(element) {
|
|
40
41
|
}
|
41
42
|
}
|
42
43
|
}
|
44
|
+
|
43
45
|
/**
|
44
46
|
* 隐藏单个/多个元素
|
45
47
|
* @param {Element} element
|
@@ -59,26 +61,37 @@ function hide(element) {
|
|
59
61
|
}
|
60
62
|
}
|
61
63
|
}
|
64
|
+
|
62
65
|
/**
|
63
|
-
*
|
64
|
-
*
|
65
|
-
* @param {
|
66
|
+
* 切换指定元素显示,其余元素隐藏;
|
67
|
+
* 如果指定样式类名,则当前原始添加样式类,其余元素移除样式类
|
68
|
+
* @param {Element} parent 父级
|
69
|
+
* @param {Element} element 当前元素
|
70
|
+
* @param {String} className 类名称
|
66
71
|
*/
|
67
|
-
function toggle(parent, element) {
|
68
|
-
if (
|
69
|
-
|
70
|
-
|
72
|
+
function toggle(parent, element, className) {
|
73
|
+
if (parent && parent.trim) {
|
74
|
+
parent = select(parent);
|
71
75
|
}
|
72
|
-
if (
|
73
|
-
|
74
|
-
|
75
|
-
}
|
76
|
-
if (element.trim) {
|
77
|
-
element = select(element);
|
78
|
-
}
|
76
|
+
if (element && element.trim) {
|
77
|
+
element = select(parent, element);
|
78
|
+
|
79
79
|
if (element.parentElement != parent) {
|
80
80
|
parent.appendChild(element);
|
81
81
|
}
|
82
|
+
}
|
83
|
+
|
84
|
+
if (arguments.length == 1) {
|
85
|
+
// toggle(element);
|
86
|
+
if (parent.hidden) {
|
87
|
+
parent.hidden = false;
|
88
|
+
} else {
|
89
|
+
parent.hidden = true;
|
90
|
+
}
|
91
|
+
} else
|
92
|
+
if (arguments.length == 2) {
|
93
|
+
// toggle(parent,element);
|
94
|
+
// display:flex 导致 hidden 属性失效而不会隐藏
|
82
95
|
for (let i = 0; i < parent.children.length; i++) {
|
83
96
|
if (element == parent.children[i]) {
|
84
97
|
parent.children[i].hidden = false;
|
@@ -86,6 +99,16 @@ function toggle(parent, element) {
|
|
86
99
|
parent.children[i].hidden = true;
|
87
100
|
}
|
88
101
|
}
|
102
|
+
} else
|
103
|
+
if (arguments.length == 3) {
|
104
|
+
// toggle(parent,element,className);
|
105
|
+
for (let i = 0; i < parent.children.length; i++) {
|
106
|
+
parent.children[i].hidden = false;
|
107
|
+
parent.children[i].classList.remove(className);
|
108
|
+
if (element == parent.children[i]) {
|
109
|
+
parent.children[i].classList.add(className);
|
110
|
+
}
|
111
|
+
}
|
89
112
|
}
|
90
113
|
}
|
91
114
|
|
@@ -384,6 +407,7 @@ function gets(element, converter = defaultConverter) {
|
|
384
407
|
}
|
385
408
|
}
|
386
409
|
}
|
410
|
+
|
387
411
|
/**
|
388
412
|
* 从指定JSON设置元素值,以name属性作为标识
|
389
413
|
* @param {Element} element 元素
|
@@ -418,12 +442,14 @@ function sets(element, parameter, converter = defaultConverter) {
|
|
418
442
|
// }
|
419
443
|
|
420
444
|
let i = 0;
|
445
|
+
// 利用ENO_SET记录并判定是否首次
|
421
446
|
if (element.ENO_SETS) {
|
422
447
|
element.ENO_SETS = element.ENO_SETS + 1;
|
423
448
|
} else {
|
424
449
|
element.ENO_SETS = 1;
|
425
450
|
// ...<template>...
|
426
451
|
for (; i < element.children.length; i++) {
|
452
|
+
// 只有<template>模板具有content属性
|
427
453
|
if (element.children[i].content) {
|
428
454
|
element.template = element.children[i];
|
429
455
|
element.a = ++i;
|
@@ -450,14 +476,12 @@ function sets(element, parameter, converter = defaultConverter) {
|
|
450
476
|
} else {
|
451
477
|
// 克隆新的元素(DocumentFragment)
|
452
478
|
node = element.template.content.cloneNode(true);
|
453
|
-
n =
|
454
|
-
|
455
|
-
|
456
|
-
|
457
|
-
node[n].userData = parameter[i];
|
458
|
-
set(node[n], parameter[i], converter);
|
459
|
-
node[n].hidden = false;
|
479
|
+
for (n = 0; n < node.childElementCount; n++) {
|
480
|
+
node.children.item(n).userData = parameter[i];
|
481
|
+
set(node.children.item(n), parameter[i], converter);
|
482
|
+
node.children.item(n).hidden = false;
|
460
483
|
}
|
484
|
+
element.insertBefore(node, element.children[element.a + i * node.childElementCount]);
|
461
485
|
}
|
462
486
|
}
|
463
487
|
// 移除多余元素
|
@@ -501,11 +525,13 @@ function sets(element, parameter, converter = defaultConverter) {
|
|
501
525
|
}
|
502
526
|
return element;
|
503
527
|
} else { // []
|
504
|
-
|
505
|
-
|
506
|
-
|
507
|
-
|
508
|
-
element.children
|
528
|
+
if (element.children.length) {
|
529
|
+
// 保留模板
|
530
|
+
element.children[0].hidden = true;
|
531
|
+
// 移除多余元素
|
532
|
+
while (element.children.length > 1) {
|
533
|
+
element.children[1].remove();
|
534
|
+
}
|
509
535
|
}
|
510
536
|
return element;
|
511
537
|
}
|
@@ -543,6 +569,7 @@ function sets(element, parameter, converter = defaultConverter) {
|
|
543
569
|
}
|
544
570
|
}
|
545
571
|
}
|
572
|
+
|
546
573
|
/**
|
547
574
|
* 获取元素值
|
548
575
|
* <input name="AAA" value="123"/>
|
@@ -568,10 +595,11 @@ function get(element, parameter, converter) {
|
|
568
595
|
}
|
569
596
|
if (element.childElementCount) {
|
570
597
|
for (let i = 0; i < element.children.length; i++) {
|
571
|
-
get(element.children[i], parameter);
|
598
|
+
get(element.children[i], parameter, converter);
|
572
599
|
}
|
573
600
|
}
|
574
601
|
}
|
602
|
+
|
575
603
|
/**
|
576
604
|
* 设置元素值
|
577
605
|
* <input name="AAA" value="123"/>
|
@@ -601,6 +629,7 @@ function set(element, parameter, converter) {
|
|
601
629
|
}
|
602
630
|
}
|
603
631
|
}
|
632
|
+
|
604
633
|
/**
|
605
634
|
* 根据名称获取对象值
|
606
635
|
* @param {Object} o 对象
|
@@ -628,6 +657,7 @@ function vale(o, name) {
|
|
628
657
|
}
|
629
658
|
return o;
|
630
659
|
}
|
660
|
+
|
631
661
|
/**
|
632
662
|
* 根据名称设置对象值
|
633
663
|
* @param {Object} o
|
@@ -649,6 +679,7 @@ function valu(o, name, value) {
|
|
649
679
|
o[name[i]] = value;
|
650
680
|
return o;
|
651
681
|
}
|
682
|
+
|
652
683
|
/**
|
653
684
|
* 转换为字符串值
|
654
685
|
* @param {Object} o
|
@@ -663,15 +694,26 @@ function text(o) {
|
|
663
694
|
}
|
664
695
|
return "";
|
665
696
|
}
|
697
|
+
|
666
698
|
/**
|
667
699
|
* 根据事件或元素获取由sets关联的实体对象
|
668
700
|
*/
|
669
|
-
function entity(e) {
|
670
|
-
if (
|
671
|
-
|
701
|
+
function entity(e, selector) {
|
702
|
+
if (arguments.length == 1) {
|
703
|
+
// entity(event);
|
704
|
+
if (e.nodeType) {
|
705
|
+
e = e;
|
706
|
+
} else
|
707
|
+
if (e && e.target) {
|
708
|
+
e = e.target;
|
709
|
+
} else
|
710
|
+
if (e && e.srcElement) {
|
711
|
+
e = e.srcElement;
|
712
|
+
}
|
672
713
|
} else
|
673
|
-
if (
|
674
|
-
|
714
|
+
if (arguments.length == 2) {
|
715
|
+
// entity(element,selector);
|
716
|
+
e = select(e, selector);
|
675
717
|
}
|
676
718
|
|
677
719
|
while (e) {
|
@@ -683,6 +725,7 @@ function entity(e) {
|
|
683
725
|
}
|
684
726
|
return null;
|
685
727
|
}
|
728
|
+
|
686
729
|
/**
|
687
730
|
* 根据事件或元素获取属性指定的动作
|
688
731
|
* @param {Event} e
|
@@ -704,4 +747,26 @@ function action(e, a) {
|
|
704
747
|
}
|
705
748
|
}
|
706
749
|
return false;
|
750
|
+
}
|
751
|
+
|
752
|
+
/**
|
753
|
+
* 根据事件获取绑定实体的元素
|
754
|
+
* @param {Event} e
|
755
|
+
*/
|
756
|
+
function element(e) {
|
757
|
+
if (e && e.target) {
|
758
|
+
e = e.target;
|
759
|
+
} else
|
760
|
+
if (e && e.srcElement) {
|
761
|
+
e = e.srcElement;
|
762
|
+
}
|
763
|
+
|
764
|
+
while (e) {
|
765
|
+
if (e.userData) {
|
766
|
+
return e;
|
767
|
+
} else {
|
768
|
+
e = e.parentElement;
|
769
|
+
}
|
770
|
+
}
|
771
|
+
return null;
|
707
772
|
}
|