@whitesev/domutils 1.9.6 → 1.9.9

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.esm.js CHANGED
@@ -1,4 +1,4 @@
1
- const version = "1.9.6";
1
+ const version = "1.9.9";
2
2
 
3
3
  class WindowApi {
4
4
  /** 默认的配置 */
@@ -535,7 +535,6 @@ class Utils {
535
535
  "is",
536
536
  "jquery",
537
537
  "keydown",
538
- "keypress",
539
538
  "keyup",
540
539
  "last",
541
540
  "load",
@@ -588,10 +587,7 @@ class Utils {
588
587
  "slideDown",
589
588
  "slideToggle",
590
589
  "slideUp",
591
- "sort",
592
- "splice",
593
590
  "text",
594
- "toArray",
595
591
  "toggle",
596
592
  "toggleClass",
597
593
  "trigger",
@@ -1625,16 +1621,6 @@ class ElementEvent extends ElementAnimate {
1625
1621
  // 这是存在selector的情况
1626
1622
  listenerOption = getOption(args, 4, listenerOption);
1627
1623
  }
1628
- // 是否移除所有事件
1629
- let isRemoveAll = false;
1630
- if (args.length === 2) {
1631
- // 目标函数、事件名
1632
- isRemoveAll = true;
1633
- }
1634
- else if ((args.length === 3 && typeof args[2] === "string") || Array.isArray(args[2])) {
1635
- // 目标函数、事件名、子元素选择器
1636
- isRemoveAll = true;
1637
- }
1638
1624
  if (args.length === 5 && typeof args[4] === "function" && typeof filter !== "function") {
1639
1625
  // 目标函数、事件名、回调函数、事件配置、过滤函数
1640
1626
  filter = option;
@@ -1664,7 +1650,7 @@ class ElementEvent extends ElementAnimate {
1664
1650
  // 事件的配置项不同
1665
1651
  flag = false;
1666
1652
  }
1667
- if (flag || isRemoveAll) {
1653
+ if (flag) {
1668
1654
  $elItem.removeEventListener(eventName, handler.handlerCallBack, handler.option);
1669
1655
  const findIndex = handlers.findIndex((item) => item === handler);
1670
1656
  if (findIndex !== -1) {
@@ -1857,35 +1843,43 @@ class ElementEvent extends ElementAnimate {
1857
1843
  else {
1858
1844
  $elList.push(element);
1859
1845
  }
1846
+ /**
1847
+ * 主动添加属性
1848
+ */
1849
+ const addExtraProp = (event, obj) => {
1850
+ if (event instanceof Event && typeof obj === "object" && obj != null && !Array.isArray(obj)) {
1851
+ const detailKeys = Object.keys(obj);
1852
+ detailKeys.forEach((keyName) => {
1853
+ const value = Reflect.get(obj, keyName);
1854
+ // 在event上添加属性
1855
+ Reflect.set(event, keyName, value);
1856
+ });
1857
+ }
1858
+ };
1860
1859
  let eventTypeList = [];
1860
+ /**
1861
+ * 主动传递的事件
1862
+ */
1863
+ let __event__ = null;
1861
1864
  if (Array.isArray(eventType)) {
1862
1865
  eventTypeList = eventType.filter((it) => typeof it === "string" && it.trim() !== "");
1863
1866
  }
1864
1867
  else if (typeof eventType === "string") {
1865
1868
  eventTypeList = eventType.split(" ");
1866
1869
  }
1870
+ else if (eventType instanceof Event) {
1871
+ __event__ = eventType;
1872
+ addExtraProp(__event__, extraDetails);
1873
+ }
1867
1874
  $elList.forEach(($elItem) => {
1868
1875
  /* 获取对象上的事件 */
1869
1876
  const elementEvents = Reflect.get($elItem, GlobalData.domEventSymbol) || {};
1870
- eventTypeList.forEach((eventTypeItem) => {
1871
- let event = null;
1872
- if (extraDetails && extraDetails instanceof Event) {
1873
- event = extraDetails;
1874
- }
1875
- else {
1876
- // 构造事件
1877
- event = new Event(eventTypeItem);
1878
- if (typeof extraDetails === "object" && extraDetails != null) {
1879
- const detailKeys = Object.keys(extraDetails);
1880
- detailKeys.forEach((keyName) => {
1881
- const value = Reflect.get(extraDetails, keyName);
1882
- // 在event上添加属性
1883
- Reflect.set(event, keyName, value);
1884
- });
1885
- }
1886
- }
1877
+ /**
1878
+ * 触发事件
1879
+ */
1880
+ const dispatchEvent = (event, eventTypeItem) => {
1887
1881
  if (useDispatchToTriggerEvent == false && eventTypeItem in elementEvents) {
1888
- // 直接调用监听的事件
1882
+ // 直接调用.on监听的事件
1889
1883
  elementEvents[eventTypeItem].forEach((eventsItem) => {
1890
1884
  eventsItem.handlerCallBack(event);
1891
1885
  });
@@ -1893,7 +1887,21 @@ class ElementEvent extends ElementAnimate {
1893
1887
  else {
1894
1888
  $elItem.dispatchEvent(event);
1895
1889
  }
1896
- });
1890
+ };
1891
+ if (__event__) {
1892
+ // 使用主动传递的事件直接触发
1893
+ const event = __event__;
1894
+ const eventTypeItem = event.type;
1895
+ dispatchEvent(event, eventTypeItem);
1896
+ }
1897
+ else {
1898
+ eventTypeList.forEach((eventTypeItem) => {
1899
+ // 构造事件
1900
+ const event = new Event(eventTypeItem);
1901
+ addExtraProp(event, extraDetails);
1902
+ dispatchEvent(event, eventTypeItem);
1903
+ });
1904
+ }
1897
1905
  });
1898
1906
  }
1899
1907
  /**
@@ -2198,49 +2206,6 @@ class ElementEvent extends ElementAnimate {
2198
2206
  }
2199
2207
  return that.on(element, "keydown", null, handler, option);
2200
2208
  }
2201
- /**
2202
- * 当按键按下时触发事件
2203
- * keydown - > keypress - > keyup
2204
- * @param element 目标
2205
- * @param handler 事件处理函数
2206
- * @param option 配置
2207
- * @example
2208
- * // 监听a.xx元素的按键按下
2209
- * DOMUtils.keypress(document.querySelector("a.xx"),()=>{
2210
- * console.log("按键按下");
2211
- * })
2212
- * DOMUtils.keypress("a.xx",()=>{
2213
- * console.log("按键按下");
2214
- * })
2215
- */
2216
- onKeypress(element, handler, option) {
2217
- const that = this;
2218
- if (element == null) {
2219
- return;
2220
- }
2221
- if (typeof element === "string") {
2222
- element = that.selectorAll(element);
2223
- }
2224
- if (CommonUtils.isNodeList(element)) {
2225
- // 设置
2226
- const listenerList = [];
2227
- element.forEach(($ele) => {
2228
- const listener = that.onKeypress($ele, handler, option);
2229
- listenerList.push(listener);
2230
- });
2231
- return {
2232
- off() {
2233
- listenerList.forEach((listener) => {
2234
- if (!listener) {
2235
- return;
2236
- }
2237
- listener.off();
2238
- });
2239
- },
2240
- };
2241
- }
2242
- return that.on(element, "keypress", null, handler, option);
2243
- }
2244
2209
  /**
2245
2210
  * 监听某个元素键盘按键事件或window全局按键事件
2246
2211
  * 按下有值的键时触发,按下Ctrl\Alt\Shift\Meta是无值键。按下先触发keydown事件,再触发keypress事件。
@@ -2304,7 +2269,7 @@ class ElementEvent extends ElementAnimate {
2304
2269
  搜索 170
2305
2270
  收藏 171
2306
2271
  **/
2307
- onKeyboard(element, eventName = "keypress", handler, options) {
2272
+ onKeyboard(element, eventName = "keydown", handler, options) {
2308
2273
  const that = this;
2309
2274
  if (typeof element === "string") {
2310
2275
  element = that.selectorAll(element);
@@ -2482,7 +2447,8 @@ class ElementEvent extends ElementAnimate {
2482
2447
  eventNameList = [eventNameList];
2483
2448
  }
2484
2449
  let option = void 0;
2485
- if (typeof args[2] === "string" || Array.isArray(args[2])) {
2450
+ if (args.length === 2) ;
2451
+ else if (typeof args[2] === "string" || Array.isArray(args[2])) {
2486
2452
  // selector
2487
2453
  selector = args[2];
2488
2454
  if (typeof args[3] === "object" && args[3] != null) {