@whitesev/domutils 1.7.0 → 1.7.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/dist/index.amd.js +46 -27
- package/dist/index.amd.js.map +1 -1
- package/dist/index.amd.min.js +1 -1
- package/dist/index.amd.min.js.map +1 -1
- package/dist/index.cjs.js +46 -27
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.cjs.min.js +1 -1
- package/dist/index.cjs.min.js.map +1 -1
- package/dist/index.esm.js +46 -27
- package/dist/index.esm.js.map +1 -1
- package/dist/index.esm.min.js +1 -1
- package/dist/index.esm.min.js.map +1 -1
- package/dist/index.iife.js +46 -27
- package/dist/index.iife.js.map +1 -1
- package/dist/index.iife.min.js +1 -1
- package/dist/index.iife.min.js.map +1 -1
- package/dist/index.system.js +46 -27
- package/dist/index.system.js.map +1 -1
- package/dist/index.system.min.js +1 -1
- package/dist/index.system.min.js.map +1 -1
- package/dist/index.umd.js +46 -27
- package/dist/index.umd.js.map +1 -1
- package/dist/index.umd.min.js +1 -1
- package/dist/index.umd.min.js.map +1 -1
- package/dist/types/src/ElementEvent.d.ts +9 -9
- package/dist/types/src/types/DOMUtilsEvent.d.ts +23 -0
- package/package.json +11 -14
- package/src/ElementEvent.ts +68 -49
- package/src/types/DOMUtilsEvent.d.ts +23 -0
package/dist/index.amd.js
CHANGED
|
@@ -523,7 +523,7 @@ define((function () { 'use strict';
|
|
|
523
523
|
},
|
|
524
524
|
};
|
|
525
525
|
|
|
526
|
-
const version = "1.7.
|
|
526
|
+
const version = "1.7.2";
|
|
527
527
|
|
|
528
528
|
/* 数据 */
|
|
529
529
|
const GlobalData = {
|
|
@@ -1673,28 +1673,30 @@ define((function () { 'use strict';
|
|
|
1673
1673
|
element = that.selectorAll(element);
|
|
1674
1674
|
}
|
|
1675
1675
|
if (element == null) {
|
|
1676
|
-
return
|
|
1676
|
+
return {
|
|
1677
|
+
off() { },
|
|
1678
|
+
trigger() { },
|
|
1679
|
+
};
|
|
1677
1680
|
}
|
|
1678
|
-
let
|
|
1681
|
+
let $elList = [];
|
|
1679
1682
|
if (element instanceof NodeList || Array.isArray(element)) {
|
|
1680
|
-
|
|
1681
|
-
elementList = [...element];
|
|
1683
|
+
$elList = $elList.concat(Array.from(element));
|
|
1682
1684
|
}
|
|
1683
1685
|
else {
|
|
1684
|
-
|
|
1686
|
+
$elList.push(element);
|
|
1685
1687
|
}
|
|
1686
1688
|
// 事件名
|
|
1687
1689
|
let eventTypeList = [];
|
|
1688
1690
|
if (Array.isArray(eventType)) {
|
|
1689
|
-
eventTypeList = eventTypeList.concat(eventType.filter((
|
|
1691
|
+
eventTypeList = eventTypeList.concat(eventType.filter((it) => typeof it === "string" && it.toString() !== ""));
|
|
1690
1692
|
}
|
|
1691
1693
|
else if (typeof eventType === "string") {
|
|
1692
|
-
eventTypeList = eventTypeList.concat(eventType.split(" ").filter((
|
|
1694
|
+
eventTypeList = eventTypeList.concat(eventType.split(" ").filter((it) => it !== ""));
|
|
1693
1695
|
}
|
|
1694
1696
|
// 子元素选择器
|
|
1695
1697
|
let selectorList = [];
|
|
1696
1698
|
if (Array.isArray(selector)) {
|
|
1697
|
-
selectorList = selectorList.concat(selector.filter((
|
|
1699
|
+
selectorList = selectorList.concat(selector.filter((it) => typeof it === "string" && it.toString() !== ""));
|
|
1698
1700
|
}
|
|
1699
1701
|
else if (typeof selector === "string") {
|
|
1700
1702
|
selectorList.push(selector);
|
|
@@ -1726,7 +1728,7 @@ define((function () { 'use strict';
|
|
|
1726
1728
|
that.off(element, eventType, selector, callback, option);
|
|
1727
1729
|
}
|
|
1728
1730
|
}
|
|
1729
|
-
|
|
1731
|
+
$elList.forEach((elementItem) => {
|
|
1730
1732
|
/**
|
|
1731
1733
|
* 事件回调
|
|
1732
1734
|
* @param event
|
|
@@ -1752,7 +1754,7 @@ define((function () { 'use strict';
|
|
|
1752
1754
|
}
|
|
1753
1755
|
/* 在上层与主元素之间寻找可以被selector所匹配到的 */
|
|
1754
1756
|
const $closestMatches = that.closest(eventTarget, selectorItem);
|
|
1755
|
-
if ($closestMatches && totalParent?.contains($closestMatches)) {
|
|
1757
|
+
if ($closestMatches && totalParent?.contains?.($closestMatches)) {
|
|
1756
1758
|
eventTarget = $closestMatches;
|
|
1757
1759
|
return true;
|
|
1758
1760
|
}
|
|
@@ -1797,6 +1799,23 @@ define((function () { 'use strict';
|
|
|
1797
1799
|
Reflect.set(elementItem, GlobalData.domEventSymbol, elementEvents);
|
|
1798
1800
|
});
|
|
1799
1801
|
});
|
|
1802
|
+
return {
|
|
1803
|
+
/**
|
|
1804
|
+
* 取消绑定的监听事件
|
|
1805
|
+
* @param filter (可选)过滤函数,对元素属性上的事件进行过滤出想要删除的事件
|
|
1806
|
+
*/
|
|
1807
|
+
off: (filter) => {
|
|
1808
|
+
that.off($elList, eventTypeList, selectorList, listenerCallBack, listenerOption, filter);
|
|
1809
|
+
},
|
|
1810
|
+
/**
|
|
1811
|
+
* 主动触发事件
|
|
1812
|
+
* @param details 赋予触发的Event的额外属性,如果是Event类型,那么将自动代替默认new的Event对象
|
|
1813
|
+
* @param useDispatchToTriggerEvent 是否使用dispatchEvent来触发事件,默认true,如果为false,则直接调用callback,但是这种会让使用了selectorTarget的没有值
|
|
1814
|
+
*/
|
|
1815
|
+
trigger: (details, useDispatchToTriggerEvent) => {
|
|
1816
|
+
that.trigger($elList, eventTypeList, details, useDispatchToTriggerEvent);
|
|
1817
|
+
},
|
|
1818
|
+
};
|
|
1800
1819
|
}
|
|
1801
1820
|
off(element, eventType, selector, callback, option, filter) {
|
|
1802
1821
|
/**
|
|
@@ -1827,22 +1846,22 @@ define((function () { 'use strict';
|
|
|
1827
1846
|
let $elList = [];
|
|
1828
1847
|
if (element instanceof NodeList || Array.isArray(element)) {
|
|
1829
1848
|
element = element;
|
|
1830
|
-
$elList =
|
|
1849
|
+
$elList = $elList.concat(Array.from(element));
|
|
1831
1850
|
}
|
|
1832
1851
|
else {
|
|
1833
1852
|
$elList.push(element);
|
|
1834
1853
|
}
|
|
1835
1854
|
let eventTypeList = [];
|
|
1836
1855
|
if (Array.isArray(eventType)) {
|
|
1837
|
-
eventTypeList = eventTypeList.concat(eventType.filter((
|
|
1856
|
+
eventTypeList = eventTypeList.concat(eventType.filter((it) => typeof it === "string" && it.toString() !== ""));
|
|
1838
1857
|
}
|
|
1839
1858
|
else if (typeof eventType === "string") {
|
|
1840
|
-
eventTypeList = eventTypeList.concat(eventType.split(" ").filter((
|
|
1859
|
+
eventTypeList = eventTypeList.concat(eventType.split(" ").filter((it) => it !== ""));
|
|
1841
1860
|
}
|
|
1842
1861
|
// 子元素选择器
|
|
1843
1862
|
let selectorList = [];
|
|
1844
1863
|
if (Array.isArray(selector)) {
|
|
1845
|
-
selectorList = selectorList.concat(selector.filter((
|
|
1864
|
+
selectorList = selectorList.concat(selector.filter((it) => typeof it === "string" && it.toString() !== ""));
|
|
1846
1865
|
}
|
|
1847
1866
|
else if (typeof selector === "string") {
|
|
1848
1867
|
selectorList.push(selector);
|
|
@@ -1937,7 +1956,7 @@ define((function () { 'use strict';
|
|
|
1937
1956
|
}
|
|
1938
1957
|
let $elList = [];
|
|
1939
1958
|
if (element instanceof NodeList || Array.isArray(element)) {
|
|
1940
|
-
$elList =
|
|
1959
|
+
$elList = $elList.concat(Array.from(element));
|
|
1941
1960
|
}
|
|
1942
1961
|
else {
|
|
1943
1962
|
$elList.push(element);
|
|
@@ -2043,7 +2062,7 @@ define((function () { 'use strict';
|
|
|
2043
2062
|
}
|
|
2044
2063
|
if (checkDOMReadyState()) {
|
|
2045
2064
|
/* 检查document状态 */
|
|
2046
|
-
CommonUtils.setTimeout(callback);
|
|
2065
|
+
CommonUtils.setTimeout(callback, 0);
|
|
2047
2066
|
}
|
|
2048
2067
|
else {
|
|
2049
2068
|
/* 添加监听 */
|
|
@@ -2055,7 +2074,7 @@ define((function () { 'use strict';
|
|
|
2055
2074
|
* @param element 需要触发的元素|元素数组|window
|
|
2056
2075
|
* @param eventType 需要触发的事件
|
|
2057
2076
|
* @param details 赋予触发的Event的额外属性,如果是Event类型,那么将自动代替默认new的Event对象
|
|
2058
|
-
* @param useDispatchToTriggerEvent 是否使用dispatchEvent来触发事件,默认true
|
|
2077
|
+
* @param useDispatchToTriggerEvent 是否使用dispatchEvent来触发事件,默认true,如果为false,则直接调用callback,但是这种会让使用了selectorTarget的没有值
|
|
2059
2078
|
* @example
|
|
2060
2079
|
* // 触发元素a.xx的click事件
|
|
2061
2080
|
* DOMUtils.trigger(document.querySelector("a.xx"),"click")
|
|
@@ -2074,15 +2093,14 @@ define((function () { 'use strict';
|
|
|
2074
2093
|
}
|
|
2075
2094
|
let $elList = [];
|
|
2076
2095
|
if (element instanceof NodeList || Array.isArray(element)) {
|
|
2077
|
-
|
|
2078
|
-
$elList = [...element];
|
|
2096
|
+
$elList = $elList.concat(Array.from(element));
|
|
2079
2097
|
}
|
|
2080
2098
|
else {
|
|
2081
|
-
$elList
|
|
2099
|
+
$elList.push(element);
|
|
2082
2100
|
}
|
|
2083
2101
|
let eventTypeList = [];
|
|
2084
2102
|
if (Array.isArray(eventType)) {
|
|
2085
|
-
eventTypeList = eventType;
|
|
2103
|
+
eventTypeList = eventType.filter((it) => typeof it === "string" && it.trim() !== "");
|
|
2086
2104
|
}
|
|
2087
2105
|
else if (typeof eventType === "string") {
|
|
2088
2106
|
eventTypeList = eventType.split(" ");
|
|
@@ -2090,25 +2108,26 @@ define((function () { 'use strict';
|
|
|
2090
2108
|
$elList.forEach(($elItem) => {
|
|
2091
2109
|
/* 获取对象上的事件 */
|
|
2092
2110
|
const elementEvents = Reflect.get($elItem, GlobalData.domEventSymbol) || {};
|
|
2093
|
-
eventTypeList.forEach((
|
|
2111
|
+
eventTypeList.forEach((eventTypeItem) => {
|
|
2094
2112
|
let event = null;
|
|
2095
2113
|
if (details && details instanceof Event) {
|
|
2096
2114
|
event = details;
|
|
2097
2115
|
}
|
|
2098
2116
|
else {
|
|
2099
2117
|
// 构造事件
|
|
2100
|
-
event = new Event(
|
|
2118
|
+
event = new Event(eventTypeItem);
|
|
2101
2119
|
if (details) {
|
|
2102
|
-
Object.keys(details)
|
|
2120
|
+
const detailKeys = Object.keys(details);
|
|
2121
|
+
detailKeys.forEach((keyName) => {
|
|
2103
2122
|
const value = Reflect.get(details, keyName);
|
|
2104
2123
|
// 在event上添加属性
|
|
2105
2124
|
Reflect.set(event, keyName, value);
|
|
2106
2125
|
});
|
|
2107
2126
|
}
|
|
2108
2127
|
}
|
|
2109
|
-
if (useDispatchToTriggerEvent == false &&
|
|
2128
|
+
if (useDispatchToTriggerEvent == false && eventTypeItem in elementEvents) {
|
|
2110
2129
|
// 直接调用监听的事件
|
|
2111
|
-
elementEvents[
|
|
2130
|
+
elementEvents[eventTypeItem].forEach((eventsItem) => {
|
|
2112
2131
|
eventsItem.callback(event);
|
|
2113
2132
|
});
|
|
2114
2133
|
}
|