@whitesev/domutils 1.5.11 → 1.6.0

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.
@@ -50,10 +50,7 @@ const DOMUtilsCommonUtils = {
50
50
  */
51
51
  showElement(element: HTMLElement) {
52
52
  let dupNode = element.cloneNode(true) as HTMLElement;
53
- dupNode.setAttribute(
54
- "style",
55
- "visibility: hidden !important;display:block !important;"
56
- );
53
+ dupNode.setAttribute("style", "visibility: hidden !important;display:block !important;");
57
54
  this.windowApi.document.documentElement.appendChild(dupNode);
58
55
  return {
59
56
  /**
@@ -1,9 +1,7 @@
1
1
  /* 数据 */
2
2
  const DOMUtilsData = {
3
3
  /** .on添加在元素存储的事件 */
4
- SymbolEvents: Symbol(
5
- "events_" + (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1)
6
- ),
4
+ SymbolEvents: Symbol("events_" + (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1)),
7
5
  };
8
6
 
9
7
  export { DOMUtilsData };
@@ -93,11 +93,7 @@ export class DOMUtilsEvent {
93
93
  element: DOMUtilsElementEventType,
94
94
  eventType: T | T[],
95
95
  selector: string | string[] | undefined | null,
96
- callback: (
97
- this: HTMLElement,
98
- event: DOMUtils_Event[T],
99
- selectorTarget: HTMLElement
100
- ) => void,
96
+ callback: (this: HTMLElement, event: DOMUtils_Event[T], selectorTarget: HTMLElement) => void,
101
97
  option?: DOMUtilsEventListenerOption | boolean
102
98
  ): void;
103
99
  /**
@@ -128,11 +124,7 @@ export class DOMUtilsEvent {
128
124
  element: DOMUtilsElementEventType,
129
125
  eventType: string | string[],
130
126
  selector: string | string[] | undefined | null,
131
- callback: (
132
- this: HTMLElement,
133
- event: T,
134
- selectorTarget: HTMLElement
135
- ) => void,
127
+ callback: (this: HTMLElement, event: T, selectorTarget: HTMLElement) => void,
136
128
  option?: DOMUtilsEventListenerOption | boolean
137
129
  ): void;
138
130
  on<T extends Event>(
@@ -165,11 +157,7 @@ export class DOMUtilsEvent {
165
157
  * @param startIndex
166
158
  * @param option
167
159
  */
168
- function getOption(
169
- args: IArguments,
170
- startIndex: number,
171
- option: DOMUtilsEventListenerOption
172
- ) {
160
+ function getOption(args: IArguments, startIndex: number, option: DOMUtilsEventListenerOption) {
173
161
  let currentParam = args[startIndex];
174
162
  if (typeof currentParam === "boolean") {
175
163
  option.capture = currentParam;
@@ -214,8 +202,7 @@ export class DOMUtilsEvent {
214
202
  if (Array.isArray(eventType)) {
215
203
  eventTypeList = eventTypeList.concat(
216
204
  eventType.filter(
217
- (eventTypeItem) =>
218
- typeof eventTypeItem === "string" && eventTypeItem.toString() !== ""
205
+ (eventTypeItem) => typeof eventTypeItem === "string" && eventTypeItem.toString() !== ""
219
206
  )
220
207
  );
221
208
  } else if (typeof eventType === "string") {
@@ -227,20 +214,14 @@ export class DOMUtilsEvent {
227
214
  let selectorList: string[] = [];
228
215
  if (Array.isArray(selector)) {
229
216
  selectorList = selectorList.concat(
230
- selector.filter(
231
- (selectorItem) =>
232
- typeof selectorItem === "string" && selectorItem.toString() !== ""
233
- )
217
+ selector.filter((selectorItem) => typeof selectorItem === "string" && selectorItem.toString() !== "")
234
218
  );
235
219
  } else if (typeof selector === "string") {
236
220
  selectorList.push(selector);
237
221
  }
238
222
  // 事件回调
239
- let listenerCallBack: (
240
- this: HTMLElement,
241
- event: Event,
242
- selectorTarget?: HTMLElement
243
- ) => void = callback as any;
223
+ let listenerCallBack: (this: HTMLElement, event: Event, selectorTarget?: HTMLElement) => void =
224
+ callback as any;
244
225
  // 事件配置
245
226
  let listenerOption: DOMUtilsEventListenerOption = {
246
227
  capture: false,
@@ -262,13 +243,7 @@ export class DOMUtilsEvent {
262
243
  */
263
244
  function checkOptionOnceToRemoveEventListener() {
264
245
  if (listenerOption.once) {
265
- DOMUtilsContext.off(
266
- element,
267
- eventType as any,
268
- selector as any,
269
- callback as any,
270
- option
271
- );
246
+ DOMUtilsContext.off(element, eventType as any, selector as any, callback as any, option);
272
247
  }
273
248
  }
274
249
  elementList.forEach((elementItem) => {
@@ -285,10 +260,7 @@ export class DOMUtilsEvent {
285
260
  : (event.target as HTMLElement);
286
261
  let totalParent = elementItem;
287
262
  if (DOMUtilsCommonUtils.isWin(totalParent)) {
288
- if (
289
- totalParent ===
290
- (DOMUtilsContext.windowApi.document as any as HTMLElement)
291
- ) {
263
+ if (totalParent === (DOMUtilsContext.windowApi.document as any as HTMLElement)) {
292
264
  totalParent = DOMUtilsContext.windowApi.document.documentElement;
293
265
  }
294
266
  }
@@ -299,10 +271,7 @@ export class DOMUtilsEvent {
299
271
  return true;
300
272
  }
301
273
  /* 在上层与主元素之间寻找可以被selector所匹配到的 */
302
- let $closestMatches = DOMUtilsContext.closest<HTMLElement>(
303
- eventTarget,
304
- selectorItem
305
- );
274
+ let $closestMatches = DOMUtilsContext.closest<HTMLElement>(eventTarget, selectorItem);
306
275
  if ($closestMatches && totalParent?.contains($closestMatches)) {
307
276
  eventTarget = $closestMatches;
308
277
  return true;
@@ -330,11 +299,7 @@ export class DOMUtilsEvent {
330
299
 
331
300
  /* 遍历事件名设置元素事件 */
332
301
  eventTypeList.forEach((eventName) => {
333
- elementItem.addEventListener(
334
- eventName,
335
- domUtilsEventCallBack,
336
- listenerOption
337
- );
302
+ elementItem.addEventListener(eventName, domUtilsEventCallBack, listenerOption);
338
303
  /* 获取对象上的事件 */
339
304
  let elementEvents: {
340
305
  [k: string]: DOMUtilsEventListenerOptionsAttribute[];
@@ -418,11 +383,7 @@ export class DOMUtilsEvent {
418
383
  element: DOMUtilsElementEventType,
419
384
  eventType: T | T[],
420
385
  selector?: string | string[] | undefined | null,
421
- callback?: (
422
- this: HTMLElement,
423
- event: DOMUtils_Event[T],
424
- selectorTarget: HTMLElement
425
- ) => void,
386
+ callback?: (this: HTMLElement, event: DOMUtils_Event[T], selectorTarget: HTMLElement) => void,
426
387
  option?: EventListenerOptions | boolean,
427
388
  filter?: (
428
389
  value: DOMUtilsEventListenerOptionsAttribute,
@@ -448,11 +409,7 @@ export class DOMUtilsEvent {
448
409
  element: DOMUtilsElementEventType,
449
410
  eventType: string | string[],
450
411
  selector?: string | string[] | undefined | null,
451
- callback?: (
452
- this: HTMLElement,
453
- event: T,
454
- selectorTarget: HTMLElement
455
- ) => void,
412
+ callback?: (this: HTMLElement, event: T, selectorTarget: HTMLElement) => void,
456
413
  option?: EventListenerOptions | boolean,
457
414
  filter?: (
458
415
  value: DOMUtilsEventListenerOptionsAttribute,
@@ -502,18 +459,11 @@ export class DOMUtilsEvent {
502
459
  * @param startIndex
503
460
  * @param option
504
461
  */
505
- function getOption(
506
- args1: IArguments,
507
- startIndex: number,
508
- option: EventListenerOptions
509
- ) {
462
+ function getOption(args1: IArguments, startIndex: number, option: EventListenerOptions) {
510
463
  let currentParam: EventListenerOptions | boolean = args1[startIndex];
511
464
  if (typeof currentParam === "boolean") {
512
465
  option.capture = currentParam;
513
- } else if (
514
- typeof currentParam === "object" &&
515
- "capture" in currentParam
516
- ) {
466
+ } else if (typeof currentParam === "object" && "capture" in currentParam) {
517
467
  option.capture = currentParam.capture;
518
468
  }
519
469
  return option;
@@ -537,8 +487,7 @@ export class DOMUtilsEvent {
537
487
  if (Array.isArray(eventType)) {
538
488
  eventTypeList = eventTypeList.concat(
539
489
  eventType.filter(
540
- (eventTypeItem) =>
541
- typeof eventTypeItem === "string" && eventTypeItem.toString() !== ""
490
+ (eventTypeItem) => typeof eventTypeItem === "string" && eventTypeItem.toString() !== ""
542
491
  )
543
492
  );
544
493
  } else if (typeof eventType === "string") {
@@ -550,10 +499,7 @@ export class DOMUtilsEvent {
550
499
  let selectorList: string[] = [];
551
500
  if (Array.isArray(selector)) {
552
501
  selectorList = selectorList.concat(
553
- selector.filter(
554
- (selectorItem) =>
555
- typeof selectorItem === "string" && selectorItem.toString() !== ""
556
- )
502
+ selector.filter((selectorItem) => typeof selectorItem === "string" && selectorItem.toString() !== "")
557
503
  );
558
504
  } else if (typeof selector === "string") {
559
505
  selectorList.push(selector);
@@ -561,11 +507,8 @@ export class DOMUtilsEvent {
561
507
  /**
562
508
  * 事件的回调函数
563
509
  */
564
- let listenerCallBack: (
565
- this: HTMLElement,
566
- event: T,
567
- selectorTarget: HTMLElement
568
- ) => void = callback as any;
510
+ let listenerCallBack: (this: HTMLElement, event: T, selectorTarget: HTMLElement) => void =
511
+ callback as any;
569
512
 
570
513
  /**
571
514
  * 事件的配置
@@ -587,10 +530,7 @@ export class DOMUtilsEvent {
587
530
  if (args.length === 2) {
588
531
  // 目标函数、事件名
589
532
  isRemoveAll = true;
590
- } else if (
591
- (args.length === 3 && typeof args[2] === "string") ||
592
- Array.isArray(args[2])
593
- ) {
533
+ } else if ((args.length === 3 && typeof args[2] === "string") || Array.isArray(args[2])) {
594
534
  // 目标函数、事件名、子元素选择器
595
535
  isRemoveAll = true;
596
536
  }
@@ -607,18 +547,12 @@ export class DOMUtilsEvent {
607
547
  for (let index = 0; index < handlers.length; index++) {
608
548
  let handler = handlers[index];
609
549
  let flag = true;
610
- if (
611
- flag &&
612
- listenerCallBack &&
613
- handler.originCallBack !== listenerCallBack
614
- ) {
550
+ if (flag && listenerCallBack && handler.originCallBack !== listenerCallBack) {
615
551
  // callback不同
616
552
  flag = false;
617
553
  }
618
554
  if (flag && selectorList.length && Array.isArray(handler.selector)) {
619
- if (
620
- JSON.stringify(handler.selector) !== JSON.stringify(selectorList)
621
- ) {
555
+ if (JSON.stringify(handler.selector) !== JSON.stringify(selectorList)) {
622
556
  // 子元素选择器不同
623
557
  flag = false;
624
558
  }
@@ -628,11 +562,7 @@ export class DOMUtilsEvent {
628
562
  flag = false;
629
563
  }
630
564
  if (flag || isRemoveAll) {
631
- elementItem.removeEventListener(
632
- eventName,
633
- handler.callback,
634
- handler.option
635
- );
565
+ elementItem.removeEventListener(eventName, handler.callback, handler.option);
636
566
  handlers.splice(index--, 1);
637
567
  }
638
568
  }
@@ -655,19 +585,13 @@ export class DOMUtilsEvent {
655
585
  * @param element 需要取消绑定的元素|元素数组
656
586
  * @param eventType (可选)需要取消监听的事件
657
587
  */
658
- offAll(
659
- element: DOMUtilsElementEventType,
660
- eventType?: DOMUtils_EventType | DOMUtils_EventType[]
661
- ): void;
588
+ offAll(element: DOMUtilsElementEventType, eventType?: DOMUtils_EventType | DOMUtils_EventType[]): void;
662
589
  /**
663
590
  * 取消绑定所有的事件
664
591
  * @param element 需要取消绑定的元素|元素数组
665
592
  * @param eventType (可选)需要取消监听的事件
666
593
  */
667
- offAll(
668
- element: DOMUtilsElementEventType,
669
- eventType?: DOMUtils_EventType | DOMUtils_EventType[] | string
670
- ) {
594
+ offAll(element: DOMUtilsElementEventType, eventType?: DOMUtils_EventType | DOMUtils_EventType[] | string) {
671
595
  let DOMUtilsContext = this;
672
596
  if (typeof element === "string") {
673
597
  element = DOMUtilsContext.selectorAll(element);
@@ -694,12 +618,9 @@ export class DOMUtilsEvent {
694
618
  return;
695
619
  }
696
620
  let elementEvents = (elementItem as any)[symbolEvents] || {};
697
- let iterEventNameList = eventTypeList.length
698
- ? eventTypeList
699
- : Object.keys(elementEvents);
621
+ let iterEventNameList = eventTypeList.length ? eventTypeList : Object.keys(elementEvents);
700
622
  iterEventNameList.forEach((eventName) => {
701
- let handlers: DOMUtilsEventListenerOptionsAttribute[] =
702
- elementEvents[eventName];
623
+ let handlers: DOMUtilsEventListenerOptionsAttribute[] = elementEvents[eventName];
703
624
  if (!handlers) {
704
625
  return;
705
626
  }
@@ -736,8 +657,7 @@ export class DOMUtilsEvent {
736
657
  if (
737
658
  DOMUtilsContext.windowApi.document.readyState === "complete" ||
738
659
  (DOMUtilsContext.windowApi.document.readyState !== "loading" &&
739
- !(DOMUtilsContext.windowApi.document.documentElement as any)
740
- .doScroll)
660
+ !(DOMUtilsContext.windowApi.document.documentElement as any).doScroll)
741
661
  ) {
742
662
  return true;
743
663
  } else {
@@ -808,12 +728,7 @@ export class DOMUtilsEvent {
808
728
  * DOMUtils.trigger("a.xx",["click","tap","hover"])
809
729
  */
810
730
  trigger(
811
- element:
812
- | DOMUtilsTargetElementType
813
- | any[]
814
- | typeof globalThis
815
- | Window
816
- | Document,
731
+ element: DOMUtilsTargetElementType | any[] | typeof globalThis | Window | Document,
817
732
  eventType: string,
818
733
  details?: object,
819
734
  useDispatchToTriggerEvent?: boolean
@@ -935,22 +850,12 @@ export class DOMUtilsEvent {
935
850
  if (DOMUtilsCommonUtils.isNodeList(element)) {
936
851
  // 设置
937
852
  element.forEach(($ele) => {
938
- DOMUtilsContext.click(
939
- $ele as HTMLElement,
940
- handler,
941
- details,
942
- useDispatchToTriggerEvent
943
- );
853
+ DOMUtilsContext.click($ele as HTMLElement, handler, details, useDispatchToTriggerEvent);
944
854
  });
945
855
  return;
946
856
  }
947
857
  if (handler == null) {
948
- DOMUtilsContext.trigger(
949
- element,
950
- "click",
951
- details,
952
- useDispatchToTriggerEvent
953
- );
858
+ DOMUtilsContext.trigger(element, "click", details, useDispatchToTriggerEvent);
954
859
  } else {
955
860
  DOMUtilsContext.on(element, "click", null, handler);
956
861
  }
@@ -985,29 +890,14 @@ export class DOMUtilsEvent {
985
890
  if (DOMUtilsCommonUtils.isNodeList(element)) {
986
891
  // 设置
987
892
  element.forEach(($ele) => {
988
- DOMUtilsContext.focus(
989
- $ele as HTMLElement,
990
- handler,
991
- details,
992
- useDispatchToTriggerEvent
993
- );
893
+ DOMUtilsContext.focus($ele as HTMLElement, handler, details, useDispatchToTriggerEvent);
994
894
  });
995
895
  return;
996
896
  }
997
897
  if (handler === null) {
998
- DOMUtilsContext.trigger(
999
- element,
1000
- "blur",
1001
- details,
1002
- useDispatchToTriggerEvent
1003
- );
898
+ DOMUtilsContext.trigger(element, "blur", details, useDispatchToTriggerEvent);
1004
899
  } else {
1005
- DOMUtilsContext.on(
1006
- element,
1007
- "blur",
1008
- null,
1009
- handler as (event: Event) => void
1010
- );
900
+ DOMUtilsContext.on(element, "blur", null, handler as (event: Event) => void);
1011
901
  }
1012
902
  }
1013
903
  /**
@@ -1040,22 +930,12 @@ export class DOMUtilsEvent {
1040
930
  if (DOMUtilsCommonUtils.isNodeList(element)) {
1041
931
  // 设置
1042
932
  element.forEach(($ele) => {
1043
- DOMUtilsContext.focus(
1044
- $ele as HTMLElement,
1045
- handler,
1046
- details,
1047
- useDispatchToTriggerEvent
1048
- );
933
+ DOMUtilsContext.focus($ele as HTMLElement, handler, details, useDispatchToTriggerEvent);
1049
934
  });
1050
935
  return;
1051
936
  }
1052
937
  if (handler == null) {
1053
- DOMUtilsContext.trigger(
1054
- element,
1055
- "focus",
1056
- details,
1057
- useDispatchToTriggerEvent
1058
- );
938
+ DOMUtilsContext.trigger(element, "focus", details, useDispatchToTriggerEvent);
1059
939
  } else {
1060
940
  DOMUtilsContext.on(element, "focus", null, handler);
1061
941
  }
@@ -1271,12 +1151,7 @@ export class DOMUtilsEvent {
1271
1151
  listenKeyboard(
1272
1152
  element: DOMUtilsTargetElementType | Window | Node | typeof globalThis,
1273
1153
  eventName: "keyup" | "keypress" | "keydown" = "keypress",
1274
- callback: (
1275
- keyName: string,
1276
- keyValue: number,
1277
- otherCodeList: string[],
1278
- event: KeyboardEvent
1279
- ) => void,
1154
+ callback: (keyName: string, keyValue: number, otherCodeList: string[], event: KeyboardEvent) => void,
1280
1155
  options?: DOMUtilsEventListenerOption | boolean
1281
1156
  ): {
1282
1157
  removeListen(): void;
@@ -1446,10 +1321,7 @@ export class DOMUtilsEvent {
1446
1321
  * DOMUtils.matches("div:regexp(/^xxx/ig)")
1447
1322
  * > false
1448
1323
  */
1449
- matches(
1450
- $el: HTMLElement | Element | null | undefined,
1451
- selector: string
1452
- ): boolean {
1324
+ matches($el: HTMLElement | Element | null | undefined, selector: string): boolean {
1453
1325
  selector = selector.trim();
1454
1326
  if ($el == null) {
1455
1327
  return false;
@@ -1524,14 +1396,8 @@ export class DOMUtilsEvent {
1524
1396
  $el: HTMLElement | Element,
1525
1397
  selector: string
1526
1398
  ): HTMLElementTagNameMap[K] | null;
1527
- closest<E extends Element = Element>(
1528
- $el: HTMLElement | Element,
1529
- selector: string
1530
- ): E | null;
1531
- closest<E extends Element = Element>(
1532
- $el: HTMLElement | Element,
1533
- selector: string
1534
- ): E | null {
1399
+ closest<E extends Element = Element>($el: HTMLElement | Element, selector: string): E | null;
1400
+ closest<E extends Element = Element>($el: HTMLElement | Element, selector: string): E | null {
1535
1401
  selector = selector.trim();
1536
1402
 
1537
1403
  if (selector.match(/[^\s]{1}:empty$/gi)) {
@@ -247,4 +247,5 @@ export declare type DOMUtilsElementEventType =
247
247
  | ShadowRoot
248
248
  | EventTarget
249
249
  | ChildNode
250
- | Node;
250
+ | Node
251
+ | DocumentFragment;