@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.
@@ -3,7 +3,7 @@ System.register('DOMUtils', [], (function (exports) {
3
3
  return {
4
4
  execute: (function () {
5
5
 
6
- const version = "1.9.6";
6
+ const version = "1.9.9";
7
7
 
8
8
  class WindowApi {
9
9
  /** 默认的配置 */
@@ -540,7 +540,6 @@ System.register('DOMUtils', [], (function (exports) {
540
540
  "is",
541
541
  "jquery",
542
542
  "keydown",
543
- "keypress",
544
543
  "keyup",
545
544
  "last",
546
545
  "load",
@@ -593,10 +592,7 @@ System.register('DOMUtils', [], (function (exports) {
593
592
  "slideDown",
594
593
  "slideToggle",
595
594
  "slideUp",
596
- "sort",
597
- "splice",
598
595
  "text",
599
- "toArray",
600
596
  "toggle",
601
597
  "toggleClass",
602
598
  "trigger",
@@ -1630,16 +1626,6 @@ System.register('DOMUtils', [], (function (exports) {
1630
1626
  // 这是存在selector的情况
1631
1627
  listenerOption = getOption(args, 4, listenerOption);
1632
1628
  }
1633
- // 是否移除所有事件
1634
- let isRemoveAll = false;
1635
- if (args.length === 2) {
1636
- // 目标函数、事件名
1637
- isRemoveAll = true;
1638
- }
1639
- else if ((args.length === 3 && typeof args[2] === "string") || Array.isArray(args[2])) {
1640
- // 目标函数、事件名、子元素选择器
1641
- isRemoveAll = true;
1642
- }
1643
1629
  if (args.length === 5 && typeof args[4] === "function" && typeof filter !== "function") {
1644
1630
  // 目标函数、事件名、回调函数、事件配置、过滤函数
1645
1631
  filter = option;
@@ -1669,7 +1655,7 @@ System.register('DOMUtils', [], (function (exports) {
1669
1655
  // 事件的配置项不同
1670
1656
  flag = false;
1671
1657
  }
1672
- if (flag || isRemoveAll) {
1658
+ if (flag) {
1673
1659
  $elItem.removeEventListener(eventName, handler.handlerCallBack, handler.option);
1674
1660
  const findIndex = handlers.findIndex((item) => item === handler);
1675
1661
  if (findIndex !== -1) {
@@ -1862,35 +1848,43 @@ System.register('DOMUtils', [], (function (exports) {
1862
1848
  else {
1863
1849
  $elList.push(element);
1864
1850
  }
1851
+ /**
1852
+ * 主动添加属性
1853
+ */
1854
+ const addExtraProp = (event, obj) => {
1855
+ if (event instanceof Event && typeof obj === "object" && obj != null && !Array.isArray(obj)) {
1856
+ const detailKeys = Object.keys(obj);
1857
+ detailKeys.forEach((keyName) => {
1858
+ const value = Reflect.get(obj, keyName);
1859
+ // 在event上添加属性
1860
+ Reflect.set(event, keyName, value);
1861
+ });
1862
+ }
1863
+ };
1865
1864
  let eventTypeList = [];
1865
+ /**
1866
+ * 主动传递的事件
1867
+ */
1868
+ let __event__ = null;
1866
1869
  if (Array.isArray(eventType)) {
1867
1870
  eventTypeList = eventType.filter((it) => typeof it === "string" && it.trim() !== "");
1868
1871
  }
1869
1872
  else if (typeof eventType === "string") {
1870
1873
  eventTypeList = eventType.split(" ");
1871
1874
  }
1875
+ else if (eventType instanceof Event) {
1876
+ __event__ = eventType;
1877
+ addExtraProp(__event__, extraDetails);
1878
+ }
1872
1879
  $elList.forEach(($elItem) => {
1873
1880
  /* 获取对象上的事件 */
1874
1881
  const elementEvents = Reflect.get($elItem, GlobalData.domEventSymbol) || {};
1875
- eventTypeList.forEach((eventTypeItem) => {
1876
- let event = null;
1877
- if (extraDetails && extraDetails instanceof Event) {
1878
- event = extraDetails;
1879
- }
1880
- else {
1881
- // 构造事件
1882
- event = new Event(eventTypeItem);
1883
- if (typeof extraDetails === "object" && extraDetails != null) {
1884
- const detailKeys = Object.keys(extraDetails);
1885
- detailKeys.forEach((keyName) => {
1886
- const value = Reflect.get(extraDetails, keyName);
1887
- // 在event上添加属性
1888
- Reflect.set(event, keyName, value);
1889
- });
1890
- }
1891
- }
1882
+ /**
1883
+ * 触发事件
1884
+ */
1885
+ const dispatchEvent = (event, eventTypeItem) => {
1892
1886
  if (useDispatchToTriggerEvent == false && eventTypeItem in elementEvents) {
1893
- // 直接调用监听的事件
1887
+ // 直接调用.on监听的事件
1894
1888
  elementEvents[eventTypeItem].forEach((eventsItem) => {
1895
1889
  eventsItem.handlerCallBack(event);
1896
1890
  });
@@ -1898,7 +1892,21 @@ System.register('DOMUtils', [], (function (exports) {
1898
1892
  else {
1899
1893
  $elItem.dispatchEvent(event);
1900
1894
  }
1901
- });
1895
+ };
1896
+ if (__event__) {
1897
+ // 使用主动传递的事件直接触发
1898
+ const event = __event__;
1899
+ const eventTypeItem = event.type;
1900
+ dispatchEvent(event, eventTypeItem);
1901
+ }
1902
+ else {
1903
+ eventTypeList.forEach((eventTypeItem) => {
1904
+ // 构造事件
1905
+ const event = new Event(eventTypeItem);
1906
+ addExtraProp(event, extraDetails);
1907
+ dispatchEvent(event, eventTypeItem);
1908
+ });
1909
+ }
1902
1910
  });
1903
1911
  }
1904
1912
  /**
@@ -2203,49 +2211,6 @@ System.register('DOMUtils', [], (function (exports) {
2203
2211
  }
2204
2212
  return that.on(element, "keydown", null, handler, option);
2205
2213
  }
2206
- /**
2207
- * 当按键按下时触发事件
2208
- * keydown - > keypress - > keyup
2209
- * @param element 目标
2210
- * @param handler 事件处理函数
2211
- * @param option 配置
2212
- * @example
2213
- * // 监听a.xx元素的按键按下
2214
- * DOMUtils.keypress(document.querySelector("a.xx"),()=>{
2215
- * console.log("按键按下");
2216
- * })
2217
- * DOMUtils.keypress("a.xx",()=>{
2218
- * console.log("按键按下");
2219
- * })
2220
- */
2221
- onKeypress(element, handler, option) {
2222
- const that = this;
2223
- if (element == null) {
2224
- return;
2225
- }
2226
- if (typeof element === "string") {
2227
- element = that.selectorAll(element);
2228
- }
2229
- if (CommonUtils.isNodeList(element)) {
2230
- // 设置
2231
- const listenerList = [];
2232
- element.forEach(($ele) => {
2233
- const listener = that.onKeypress($ele, handler, option);
2234
- listenerList.push(listener);
2235
- });
2236
- return {
2237
- off() {
2238
- listenerList.forEach((listener) => {
2239
- if (!listener) {
2240
- return;
2241
- }
2242
- listener.off();
2243
- });
2244
- },
2245
- };
2246
- }
2247
- return that.on(element, "keypress", null, handler, option);
2248
- }
2249
2214
  /**
2250
2215
  * 监听某个元素键盘按键事件或window全局按键事件
2251
2216
  * 按下有值的键时触发,按下Ctrl\Alt\Shift\Meta是无值键。按下先触发keydown事件,再触发keypress事件。
@@ -2309,7 +2274,7 @@ System.register('DOMUtils', [], (function (exports) {
2309
2274
  搜索 170
2310
2275
  收藏 171
2311
2276
  **/
2312
- onKeyboard(element, eventName = "keypress", handler, options) {
2277
+ onKeyboard(element, eventName = "keydown", handler, options) {
2313
2278
  const that = this;
2314
2279
  if (typeof element === "string") {
2315
2280
  element = that.selectorAll(element);
@@ -2487,7 +2452,8 @@ System.register('DOMUtils', [], (function (exports) {
2487
2452
  eventNameList = [eventNameList];
2488
2453
  }
2489
2454
  let option = void 0;
2490
- if (typeof args[2] === "string" || Array.isArray(args[2])) {
2455
+ if (args.length === 2) ;
2456
+ else if (typeof args[2] === "string" || Array.isArray(args[2])) {
2491
2457
  // selector
2492
2458
  selector = args[2];
2493
2459
  if (typeof args[3] === "object" && args[3] != null) {