@whitesev/pops 4.2.1 → 4.2.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.
@@ -181,14 +181,14 @@ declare class Pops {
181
181
  onInput($el: HTMLInputElement | HTMLTextAreaElement, callback: (evt: InputEvent) => void | Promise<void>, option?: import("./types/PopsDOMUtilsEventType").PopsDOMUtilsEventListenerOption | boolean): {
182
182
  off: () => void;
183
183
  };
184
- on<T extends import("./types/PopsDOMUtilsEventType").PopsDOMUtils_EventType>(element: import("./types/PopsDOMUtilsEventType").PopsDOMUtilsElementEventType, eventType: T | T[], callback: (this: HTMLElement, event: import("./types/PopsDOMUtilsEventType").PopsDOMUtils_Event[T]) => void, option?: import("./types/PopsDOMUtilsEventType").PopsDOMUtilsEventListenerOption | boolean): import("./types/PopsDOMUtilsEventType").PopsDOMUtilsAddEventListenerResult;
185
- on<T extends Event>(element: import("./types/PopsDOMUtilsEventType").PopsDOMUtilsElementEventType, eventType: string | string[], callback: (this: HTMLElement, event: T) => void, option?: import("./types/PopsDOMUtilsEventType").PopsDOMUtilsEventListenerOption | boolean): import("./types/PopsDOMUtilsEventType").PopsDOMUtilsAddEventListenerResult;
186
- on<T extends import("./types/PopsDOMUtilsEventType").PopsDOMUtils_EventType>(element: import("./types/PopsDOMUtilsEventType").PopsDOMUtilsElementEventType, eventType: T | T[], selector: string | string[] | undefined | null, callback: (this: HTMLElement, event: import("./types/PopsDOMUtilsEventType").PopsDOMUtils_Event[T], selectorTarget: HTMLElement) => void, option?: import("./types/PopsDOMUtilsEventType").PopsDOMUtilsEventListenerOption | boolean): import("./types/PopsDOMUtilsEventType").PopsDOMUtilsAddEventListenerResult;
187
- on<T extends Event>(element: import("./types/PopsDOMUtilsEventType").PopsDOMUtilsElementEventType, eventType: string | string[], selector: string | string[] | undefined | null, callback: (this: HTMLElement, event: T, selectorTarget: HTMLElement) => void, option?: import("./types/PopsDOMUtilsEventType").PopsDOMUtilsEventListenerOption | boolean): import("./types/PopsDOMUtilsEventType").PopsDOMUtilsAddEventListenerResult;
188
- off<T extends import("./types/PopsDOMUtilsEventType").PopsDOMUtils_EventType>(element: import("./types/PopsDOMUtilsEventType").PopsDOMUtilsElementEventType, eventType: T | T[], callback?: (<E extends HTMLElement = HTMLElement>(this: E, event: import("./types/PopsDOMUtilsEventType").PopsDOMUtils_Event[T]) => void) | undefined, option?: EventListenerOptions | boolean, filter?: (value: import("./types/PopsDOMUtilsEventType").PopsDOMUtilsEventListenerOptionsAttribute, index: number, array: import("./types/PopsDOMUtilsEventType").PopsDOMUtilsEventListenerOptionsAttribute[]) => boolean): void;
189
- off<T extends Event>(element: import("./types/PopsDOMUtilsEventType").PopsDOMUtilsElementEventType, eventType: string | string[], callback?: (<E extends HTMLElement = HTMLElement>(this: E, event: T) => void) | undefined, option?: EventListenerOptions | boolean, filter?: (value: import("./types/PopsDOMUtilsEventType").PopsDOMUtilsEventListenerOptionsAttribute, index: number, array: import("./types/PopsDOMUtilsEventType").PopsDOMUtilsEventListenerOptionsAttribute[]) => boolean): void;
190
- off<T extends import("./types/PopsDOMUtilsEventType").PopsDOMUtils_EventType>(element: import("./types/PopsDOMUtilsEventType").PopsDOMUtilsElementEventType, eventType: T | T[], selector?: string | string[] | undefined | null, callback?: (<E extends HTMLElement = HTMLElement>(this: E, event: import("./types/PopsDOMUtilsEventType").PopsDOMUtils_Event[T], $selector: E) => void) | undefined, option?: EventListenerOptions | boolean, filter?: (value: import("./types/PopsDOMUtilsEventType").PopsDOMUtilsEventListenerOptionsAttribute, index: number, array: import("./types/PopsDOMUtilsEventType").PopsDOMUtilsEventListenerOptionsAttribute[]) => boolean): void;
191
- off<T extends Event>(element: import("./types/PopsDOMUtilsEventType").PopsDOMUtilsElementEventType, eventType: string | string[], selector?: string | string[] | undefined | null, callback?: (<E extends HTMLElement = HTMLElement>(this: E, event: T, $selector: E) => void) | undefined, option?: EventListenerOptions | boolean, filter?: (value: import("./types/PopsDOMUtilsEventType").PopsDOMUtilsEventListenerOptionsAttribute, index: number, array: import("./types/PopsDOMUtilsEventType").PopsDOMUtilsEventListenerOptionsAttribute[]) => boolean): void;
184
+ on<T extends import("./types/PopsDOMUtilsEventType").PopsDOMUtils_EventType = "drag" | "click" | "scroll" | "blur" | "focus" | "search" | "input" | "resize" | "reset" | "play" | "change" | "contextmenu" | "dblclick" | "mousedown" | "mouseenter" | "mouseleave" | "mousemove" | "mouseover" | "mouseout" | "mouseup" | "hover" | "keydown" | "keypress" | "keyup" | "abort" | "beforeunload" | "error" | "hashchange" | "load" | "pageshow" | "pagehide" | "unload" | "focusin" | "focusout" | "copy" | "cut" | "paste" | "afterprint" | "beforeprint" | "dragend" | "dragenter" | "dragleave" | "dragover" | "dragstart" | "drop" | "canplay" | "canplaythrough" | "durationchange" | "emptied" | "ended" | "loadeddata" | "loadedmetadata" | "loadstart" | "pause" | "playing" | "progress" | "ratechange" | "seeked" | "seeking" | "stalled" | "suspend" | "timeupdate" | "volumechange" | "waiting" | "animationend" | "animationiteration" | "animationstart" | "transitionend" | "touchstart" | "touchmove" | "touchend" | "touchcancel" | "touchenter" | "touchleave" | "message" | "online" | "offline" | "popstate" | "show" | "storage" | "toggle" | "wheel" | "propertychange" | "fullscreenchange" | "DOMContentLoaded">(element: import("./types/PopsDOMUtilsEventType").PopsDOMUtilsElementEventType, eventType: T | T[], callback: (this: HTMLElement, event: import("./types/PopsDOMUtilsEventType").PopsDOMUtils_Event[T]) => void, option?: import("./types/PopsDOMUtilsEventType").PopsDOMUtilsEventListenerOption | boolean): import("./types/PopsDOMUtilsEventType").PopsDOMUtilsAddEventListenerResult;
185
+ on<T extends Event = Event>(element: import("./types/PopsDOMUtilsEventType").PopsDOMUtilsElementEventType, eventType: string | string[], callback: (this: HTMLElement, event: T) => void, option?: import("./types/PopsDOMUtilsEventType").PopsDOMUtilsEventListenerOption | boolean): import("./types/PopsDOMUtilsEventType").PopsDOMUtilsAddEventListenerResult;
186
+ on<T extends import("./types/PopsDOMUtilsEventType").PopsDOMUtils_EventType = "drag" | "click" | "scroll" | "blur" | "focus" | "search" | "input" | "resize" | "reset" | "play" | "change" | "contextmenu" | "dblclick" | "mousedown" | "mouseenter" | "mouseleave" | "mousemove" | "mouseover" | "mouseout" | "mouseup" | "hover" | "keydown" | "keypress" | "keyup" | "abort" | "beforeunload" | "error" | "hashchange" | "load" | "pageshow" | "pagehide" | "unload" | "focusin" | "focusout" | "copy" | "cut" | "paste" | "afterprint" | "beforeprint" | "dragend" | "dragenter" | "dragleave" | "dragover" | "dragstart" | "drop" | "canplay" | "canplaythrough" | "durationchange" | "emptied" | "ended" | "loadeddata" | "loadedmetadata" | "loadstart" | "pause" | "playing" | "progress" | "ratechange" | "seeked" | "seeking" | "stalled" | "suspend" | "timeupdate" | "volumechange" | "waiting" | "animationend" | "animationiteration" | "animationstart" | "transitionend" | "touchstart" | "touchmove" | "touchend" | "touchcancel" | "touchenter" | "touchleave" | "message" | "online" | "offline" | "popstate" | "show" | "storage" | "toggle" | "wheel" | "propertychange" | "fullscreenchange" | "DOMContentLoaded">(element: import("./types/PopsDOMUtilsEventType").PopsDOMUtilsElementEventType, eventType: T | T[], selector: string | string[] | undefined | null, callback: (this: HTMLElement, event: import("./types/PopsDOMUtilsEventType").PopsDOMUtils_Event[T], selectorTarget: HTMLElement) => void, option?: import("./types/PopsDOMUtilsEventType").PopsDOMUtilsEventListenerOption | boolean): import("./types/PopsDOMUtilsEventType").PopsDOMUtilsAddEventListenerResult;
187
+ on<T extends Event = Event>(element: import("./types/PopsDOMUtilsEventType").PopsDOMUtilsElementEventType, eventType: string | string[], selector: string | string[] | undefined | null, callback: (this: HTMLElement, event: T, selectorTarget: HTMLElement) => void, option?: import("./types/PopsDOMUtilsEventType").PopsDOMUtilsEventListenerOption | boolean): import("./types/PopsDOMUtilsEventType").PopsDOMUtilsAddEventListenerResult;
188
+ off<T extends import("./types/PopsDOMUtilsEventType").PopsDOMUtils_EventType = "drag" | "click" | "scroll" | "blur" | "focus" | "search" | "input" | "resize" | "reset" | "play" | "change" | "contextmenu" | "dblclick" | "mousedown" | "mouseenter" | "mouseleave" | "mousemove" | "mouseover" | "mouseout" | "mouseup" | "hover" | "keydown" | "keypress" | "keyup" | "abort" | "beforeunload" | "error" | "hashchange" | "load" | "pageshow" | "pagehide" | "unload" | "focusin" | "focusout" | "copy" | "cut" | "paste" | "afterprint" | "beforeprint" | "dragend" | "dragenter" | "dragleave" | "dragover" | "dragstart" | "drop" | "canplay" | "canplaythrough" | "durationchange" | "emptied" | "ended" | "loadeddata" | "loadedmetadata" | "loadstart" | "pause" | "playing" | "progress" | "ratechange" | "seeked" | "seeking" | "stalled" | "suspend" | "timeupdate" | "volumechange" | "waiting" | "animationend" | "animationiteration" | "animationstart" | "transitionend" | "touchstart" | "touchmove" | "touchend" | "touchcancel" | "touchenter" | "touchleave" | "message" | "online" | "offline" | "popstate" | "show" | "storage" | "toggle" | "wheel" | "propertychange" | "fullscreenchange" | "DOMContentLoaded">(element: import("./types/PopsDOMUtilsEventType").PopsDOMUtilsElementEventType, eventType: T | T[], callback?: (<E extends HTMLElement = HTMLElement>(this: E, event: import("./types/PopsDOMUtilsEventType").PopsDOMUtils_Event[T]) => void) | undefined, option?: EventListenerOptions | boolean, filter?: (value: import("./types/PopsDOMUtilsEventType").PopsDOMUtilsEventListenerOptionsAttribute, index: number, array: import("./types/PopsDOMUtilsEventType").PopsDOMUtilsEventListenerOptionsAttribute[]) => boolean): void;
189
+ off<T extends Event = Event>(element: import("./types/PopsDOMUtilsEventType").PopsDOMUtilsElementEventType, eventType: string | string[], callback?: (<E extends HTMLElement = HTMLElement>(this: E, event: T) => void) | undefined, option?: EventListenerOptions | boolean, filter?: (value: import("./types/PopsDOMUtilsEventType").PopsDOMUtilsEventListenerOptionsAttribute, index: number, array: import("./types/PopsDOMUtilsEventType").PopsDOMUtilsEventListenerOptionsAttribute[]) => boolean): void;
190
+ off<T extends import("./types/PopsDOMUtilsEventType").PopsDOMUtils_EventType = "drag" | "click" | "scroll" | "blur" | "focus" | "search" | "input" | "resize" | "reset" | "play" | "change" | "contextmenu" | "dblclick" | "mousedown" | "mouseenter" | "mouseleave" | "mousemove" | "mouseover" | "mouseout" | "mouseup" | "hover" | "keydown" | "keypress" | "keyup" | "abort" | "beforeunload" | "error" | "hashchange" | "load" | "pageshow" | "pagehide" | "unload" | "focusin" | "focusout" | "copy" | "cut" | "paste" | "afterprint" | "beforeprint" | "dragend" | "dragenter" | "dragleave" | "dragover" | "dragstart" | "drop" | "canplay" | "canplaythrough" | "durationchange" | "emptied" | "ended" | "loadeddata" | "loadedmetadata" | "loadstart" | "pause" | "playing" | "progress" | "ratechange" | "seeked" | "seeking" | "stalled" | "suspend" | "timeupdate" | "volumechange" | "waiting" | "animationend" | "animationiteration" | "animationstart" | "transitionend" | "touchstart" | "touchmove" | "touchend" | "touchcancel" | "touchenter" | "touchleave" | "message" | "online" | "offline" | "popstate" | "show" | "storage" | "toggle" | "wheel" | "propertychange" | "fullscreenchange" | "DOMContentLoaded">(element: import("./types/PopsDOMUtilsEventType").PopsDOMUtilsElementEventType, eventType: T | T[], selector?: string | string[] | undefined | null, callback?: (<E extends HTMLElement = HTMLElement>(this: E, event: import("./types/PopsDOMUtilsEventType").PopsDOMUtils_Event[T], $selector: E) => void) | undefined, option?: EventListenerOptions | boolean, filter?: (value: import("./types/PopsDOMUtilsEventType").PopsDOMUtilsEventListenerOptionsAttribute, index: number, array: import("./types/PopsDOMUtilsEventType").PopsDOMUtilsEventListenerOptionsAttribute[]) => boolean): void;
191
+ off<T extends Event = Event>(element: import("./types/PopsDOMUtilsEventType").PopsDOMUtilsElementEventType, eventType: string | string[], selector?: string | string[] | undefined | null, callback?: (<E extends HTMLElement = HTMLElement>(this: E, event: T, $selector: E) => void) | undefined, option?: EventListenerOptions | boolean, filter?: (value: import("./types/PopsDOMUtilsEventType").PopsDOMUtilsEventListenerOptionsAttribute, index: number, array: import("./types/PopsDOMUtilsEventType").PopsDOMUtilsEventListenerOptionsAttribute[]) => boolean): void;
192
192
  offAll(element: import("./types/PopsDOMUtilsEventType").PopsDOMUtilsElementEventType, eventType?: string): void;
193
193
  offAll(element: import("./types/PopsDOMUtilsEventType").PopsDOMUtilsElementEventType, eventType?: import("./types/PopsDOMUtilsEventType").PopsDOMUtils_EventType | import("./types/PopsDOMUtilsEventType").PopsDOMUtils_EventType[]): void;
194
194
  onReady<T extends (...args: any[]) => any>(callback: T): void;
@@ -1,4 +1,4 @@
1
- import type { ParseHTMLReturnType, PopsDOMUtils_EventType, PopsDOMUtilsCreateElementAttributesMap, PopsDOMUtilsEventListenerOption, PopsDOMUtilsEventListenerOptionsAttribute, PopsDOMUtils_Event, PopsDOMUtilsElementEventType, PopsDOMUtilsAddEventListenerResult, PopsDOMUtilsCSSProperty, PopsDOMUtilsCSSPropertyType, PopsDOMUtilsTargetElementType } from "../types/PopsDOMUtilsEventType";
1
+ import type { ParseHTMLReturnType, PopsDOMUtils_Event, PopsDOMUtils_EventType, PopsDOMUtilsAddEventListenerResult, PopsDOMUtilsCreateElementAttributesMap, PopsDOMUtilsCSSProperty, PopsDOMUtilsCSSPropertyType, PopsDOMUtilsElementEventType, PopsDOMUtilsEventListenerOption, PopsDOMUtilsEventListenerOptionsAttribute, PopsDOMUtilsTargetElementType } from "../types/PopsDOMUtilsEventType";
2
2
  declare class PopsDOMUtilsEvent {
3
3
  /**
4
4
  * 绑定事件
@@ -18,7 +18,7 @@ declare class PopsDOMUtilsEvent {
18
18
  * console.log("事件触发",event)
19
19
  * })
20
20
  */
21
- on<T extends PopsDOMUtils_EventType>(element: PopsDOMUtilsElementEventType, eventType: T | T[], callback: (this: HTMLElement, event: PopsDOMUtils_Event[T]) => void, option?: PopsDOMUtilsEventListenerOption | boolean): PopsDOMUtilsAddEventListenerResult;
21
+ on<T extends PopsDOMUtils_EventType = PopsDOMUtils_EventType>(element: PopsDOMUtilsElementEventType, eventType: T | T[], callback: (this: HTMLElement, event: PopsDOMUtils_Event[T]) => void, option?: PopsDOMUtilsEventListenerOption | boolean): PopsDOMUtilsAddEventListenerResult;
22
22
  /**
23
23
  * 绑定事件
24
24
  * @param element 需要绑定的元素|元素数组|window
@@ -37,7 +37,7 @@ declare class PopsDOMUtilsEvent {
37
37
  * console.log("事件触发",event)
38
38
  * })
39
39
  */
40
- on<T extends Event>(element: PopsDOMUtilsElementEventType, eventType: string | string[], callback: (this: HTMLElement, event: T) => void, option?: PopsDOMUtilsEventListenerOption | boolean): PopsDOMUtilsAddEventListenerResult;
40
+ on<T extends Event = Event>(element: PopsDOMUtilsElementEventType, eventType: string | string[], callback: (this: HTMLElement, event: T) => void, option?: PopsDOMUtilsEventListenerOption | boolean): PopsDOMUtilsAddEventListenerResult;
41
41
  /**
42
42
  * 绑定事件
43
43
  * @param element 需要绑定的元素|元素数组|window
@@ -62,7 +62,7 @@ declare class PopsDOMUtilsEvent {
62
62
  * console.log("事件触发", event, selectorTarget)
63
63
  * })
64
64
  */
65
- on<T extends PopsDOMUtils_EventType>(element: PopsDOMUtilsElementEventType, eventType: T | T[], selector: string | string[] | undefined | null, callback: (this: HTMLElement, event: PopsDOMUtils_Event[T], selectorTarget: HTMLElement) => void, option?: PopsDOMUtilsEventListenerOption | boolean): PopsDOMUtilsAddEventListenerResult;
65
+ on<T extends PopsDOMUtils_EventType = PopsDOMUtils_EventType>(element: PopsDOMUtilsElementEventType, eventType: T | T[], selector: string | string[] | undefined | null, callback: (this: HTMLElement, event: PopsDOMUtils_Event[T], selectorTarget: HTMLElement) => void, option?: PopsDOMUtilsEventListenerOption | boolean): PopsDOMUtilsAddEventListenerResult;
66
66
  /**
67
67
  * 绑定事件
68
68
  * @param element 需要绑定的元素|元素数组|window
@@ -87,7 +87,7 @@ declare class PopsDOMUtilsEvent {
87
87
  * console.log("事件触发", event, selectorTarget)
88
88
  * })
89
89
  */
90
- on<T extends Event>(element: PopsDOMUtilsElementEventType, eventType: string | string[], selector: string | string[] | undefined | null, callback: (this: HTMLElement, event: T, selectorTarget: HTMLElement) => void, option?: PopsDOMUtilsEventListenerOption | boolean): PopsDOMUtilsAddEventListenerResult;
90
+ on<T extends Event = Event>(element: PopsDOMUtilsElementEventType, eventType: string | string[], selector: string | string[] | undefined | null, callback: (this: HTMLElement, event: T, selectorTarget: HTMLElement) => void, option?: PopsDOMUtilsEventListenerOption | boolean): PopsDOMUtilsAddEventListenerResult;
91
91
  /**
92
92
  * 取消绑定事件
93
93
  * @param element 需要取消绑定的元素|元素数组
@@ -101,7 +101,7 @@ declare class PopsDOMUtilsEvent {
101
101
  * DOMUtils.off(document.querySelector("a.xx"),"click")
102
102
  * DOMUtils.off("a.xx","click")
103
103
  */
104
- off<T extends PopsDOMUtils_EventType>(element: PopsDOMUtilsElementEventType, eventType: T | T[], callback?: <E extends HTMLElement = HTMLElement>(this: E, event: PopsDOMUtils_Event[T]) => void, option?: EventListenerOptions | boolean, filter?: (value: PopsDOMUtilsEventListenerOptionsAttribute, index: number, array: PopsDOMUtilsEventListenerOptionsAttribute[]) => boolean): void;
104
+ off<T extends PopsDOMUtils_EventType = PopsDOMUtils_EventType>(element: PopsDOMUtilsElementEventType, eventType: T | T[], callback?: <E extends HTMLElement = HTMLElement>(this: E, event: PopsDOMUtils_Event[T]) => void, option?: EventListenerOptions | boolean, filter?: (value: PopsDOMUtilsEventListenerOptionsAttribute, index: number, array: PopsDOMUtilsEventListenerOptionsAttribute[]) => boolean): void;
105
105
  /**
106
106
  * 取消绑定事件
107
107
  * @param element 需要取消绑定的元素|元素数组
@@ -115,7 +115,7 @@ declare class PopsDOMUtilsEvent {
115
115
  * DOMUtils.off(document.querySelector("a.xx"),"click")
116
116
  * DOMUtils.off("a.xx","click")
117
117
  */
118
- off<T extends Event>(element: PopsDOMUtilsElementEventType, eventType: string | string[], callback?: <E extends HTMLElement = HTMLElement>(this: E, event: T) => void, option?: EventListenerOptions | boolean, filter?: (value: PopsDOMUtilsEventListenerOptionsAttribute, index: number, array: PopsDOMUtilsEventListenerOptionsAttribute[]) => boolean): void;
118
+ off<T extends Event = Event>(element: PopsDOMUtilsElementEventType, eventType: string | string[], callback?: <E extends HTMLElement = HTMLElement>(this: E, event: T) => void, option?: EventListenerOptions | boolean, filter?: (value: PopsDOMUtilsEventListenerOptionsAttribute, index: number, array: PopsDOMUtilsEventListenerOptionsAttribute[]) => boolean): void;
119
119
  /**
120
120
  * 取消绑定事件
121
121
  * @param element 需要取消绑定的元素|元素数组
@@ -130,7 +130,7 @@ declare class PopsDOMUtilsEvent {
130
130
  * DOMUtils.off(document.querySelector("a.xx"),"click tap hover")
131
131
  * DOMUtils.off("a.xx",["click","tap","hover"])
132
132
  */
133
- off<T extends PopsDOMUtils_EventType>(element: PopsDOMUtilsElementEventType, eventType: T | T[], selector?: string | string[] | undefined | null, callback?: <E extends HTMLElement = HTMLElement>(this: E, event: PopsDOMUtils_Event[T], $selector: E) => void, option?: EventListenerOptions | boolean, filter?: (value: PopsDOMUtilsEventListenerOptionsAttribute, index: number, array: PopsDOMUtilsEventListenerOptionsAttribute[]) => boolean): void;
133
+ off<T extends PopsDOMUtils_EventType = PopsDOMUtils_EventType>(element: PopsDOMUtilsElementEventType, eventType: T | T[], selector?: string | string[] | undefined | null, callback?: <E extends HTMLElement = HTMLElement>(this: E, event: PopsDOMUtils_Event[T], $selector: E) => void, option?: EventListenerOptions | boolean, filter?: (value: PopsDOMUtilsEventListenerOptionsAttribute, index: number, array: PopsDOMUtilsEventListenerOptionsAttribute[]) => boolean): void;
134
134
  /**
135
135
  * 取消绑定事件
136
136
  * @param element 需要取消绑定的元素|元素数组
@@ -145,7 +145,7 @@ declare class PopsDOMUtilsEvent {
145
145
  * DOMUtils.off(document.querySelector("a.xx"),"click tap hover")
146
146
  * DOMUtils.off("a.xx",["click","tap","hover"])
147
147
  */
148
- off<T extends Event>(element: PopsDOMUtilsElementEventType, eventType: string | string[], selector?: string | string[] | undefined | null, callback?: <E extends HTMLElement = HTMLElement>(this: E, event: T, $selector: E) => void, option?: EventListenerOptions | boolean, filter?: (value: PopsDOMUtilsEventListenerOptionsAttribute, index: number, array: PopsDOMUtilsEventListenerOptionsAttribute[]) => boolean): void;
148
+ off<T extends Event = Event>(element: PopsDOMUtilsElementEventType, eventType: string | string[], selector?: string | string[] | undefined | null, callback?: <E extends HTMLElement = HTMLElement>(this: E, event: T, $selector: E) => void, option?: EventListenerOptions | boolean, filter?: (value: PopsDOMUtilsEventListenerOptionsAttribute, index: number, array: PopsDOMUtilsEventListenerOptionsAttribute[]) => boolean): void;
149
149
  /**
150
150
  * 取消绑定所有的事件
151
151
  * @param element 需要取消绑定的元素|元素数组
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@whitesev/pops",
3
- "version": "4.2.1",
3
+ "version": "4.2.2",
4
4
  "description": "弹窗库,包含了alert、confirm、prompt、drawer、folder、loading、iframe、panel、tooltip、searchSuggestion、rightClickMenu组件",
5
5
  "keywords": [
6
6
  "ScriptCat",
@@ -1,20 +1,20 @@
1
+ import { PopsCommonCSSClassName } from "../config/CommonCSSClassName";
2
+ import { OriginPrototype, PopsCore } from "../PopsCore";
1
3
  import type {
2
4
  ParseHTMLReturnType,
3
- PopsDOMUtils_EventType,
4
- PopsDOMUtilsCreateElementAttributesMap,
5
- PopsDOMUtilsEventListenerOption,
6
- PopsDOMUtilsEventListenerOptionsAttribute,
7
5
  PopsDOMUtils_Event,
8
- PopsDOMUtilsElementEventType,
6
+ PopsDOMUtils_EventType,
9
7
  PopsDOMUtilsAddEventListenerResult,
8
+ PopsDOMUtilsCreateElementAttributesMap,
10
9
  PopsDOMUtilsCSSProperty,
11
10
  PopsDOMUtilsCSSPropertyType,
11
+ PopsDOMUtilsElementEventType,
12
+ PopsDOMUtilsEventListenerOption,
13
+ PopsDOMUtilsEventListenerOptionsAttribute,
12
14
  PopsDOMUtilsTargetElementType,
13
15
  } from "../types/PopsDOMUtilsEventType";
14
- import { OriginPrototype, PopsCore } from "../PopsCore";
15
- import { popsUtils } from "./PopsUtils";
16
16
  import { PopsSafeUtils } from "./PopsSafeUtils";
17
- import { PopsCommonCSSClassName } from "../config/CommonCSSClassName";
17
+ import { popsUtils } from "./PopsUtils";
18
18
  /**
19
19
  * 存储在元素属性上的事件名
20
20
  */
@@ -39,7 +39,7 @@ class PopsDOMUtilsEvent {
39
39
  * console.log("事件触发",event)
40
40
  * })
41
41
  */
42
- on<T extends PopsDOMUtils_EventType>(
42
+ on<T extends PopsDOMUtils_EventType = PopsDOMUtils_EventType>(
43
43
  element: PopsDOMUtilsElementEventType,
44
44
  eventType: T | T[],
45
45
  callback: (this: HTMLElement, event: PopsDOMUtils_Event[T]) => void,
@@ -63,7 +63,7 @@ class PopsDOMUtilsEvent {
63
63
  * console.log("事件触发",event)
64
64
  * })
65
65
  */
66
- on<T extends Event>(
66
+ on<T extends Event = Event>(
67
67
  element: PopsDOMUtilsElementEventType,
68
68
  eventType: string | string[],
69
69
  callback: (this: HTMLElement, event: T) => void,
@@ -93,7 +93,7 @@ class PopsDOMUtilsEvent {
93
93
  * console.log("事件触发", event, selectorTarget)
94
94
  * })
95
95
  */
96
- on<T extends PopsDOMUtils_EventType>(
96
+ on<T extends PopsDOMUtils_EventType = PopsDOMUtils_EventType>(
97
97
  element: PopsDOMUtilsElementEventType,
98
98
  eventType: T | T[],
99
99
  selector: string | string[] | undefined | null,
@@ -124,14 +124,14 @@ class PopsDOMUtilsEvent {
124
124
  * console.log("事件触发", event, selectorTarget)
125
125
  * })
126
126
  */
127
- on<T extends Event>(
127
+ on<T extends Event = Event>(
128
128
  element: PopsDOMUtilsElementEventType,
129
129
  eventType: string | string[],
130
130
  selector: string | string[] | undefined | null,
131
131
  callback: (this: HTMLElement, event: T, selectorTarget: HTMLElement) => void,
132
132
  option?: PopsDOMUtilsEventListenerOption | boolean
133
133
  ): PopsDOMUtilsAddEventListenerResult;
134
- on<T extends Event>(
134
+ on<T extends Event = Event>(
135
135
  element: HTMLElement | string | NodeList | HTMLElement[] | Window | Document | Element | null | typeof globalThis,
136
136
  eventType: PopsDOMUtils_EventType | PopsDOMUtils_EventType[] | string | string[],
137
137
  selector:
@@ -231,89 +231,88 @@ class PopsDOMUtilsEvent {
231
231
  // 这是存在selector的情况
232
232
  listenerOption = getOption(args, 4, listenerOption);
233
233
  }
234
- /**
235
- * 如果是once,那么删除该监听和元素上的事件和监听
236
- */
237
- const checkOptionOnceToRemoveEventListener = ($el: PopsDOMUtilsElementEventType) => {
238
- if (listenerOption.once) {
239
- this.off($el, eventTypeList, selector as any, callback as any, option);
240
- }
241
- };
242
234
  $elList.forEach(($elItem) => {
243
- /**
244
- * 事件回调
245
- * @param event
246
- */
247
- const handlerCallBack = function (event: Event) {
248
- let call_this: Element | undefined = void 0;
249
- let call_event: Event | undefined = void 0;
250
- let call_$selector: HTMLElement | undefined = void 0;
251
- let execCallback = false;
252
- if (selectorList.length) {
253
- // 存在子元素选择器
254
- // 这时候的this和target都是子元素选择器的元素
255
- let $target: HTMLElement;
256
- if (listenerOption.isComposedPath) {
257
- // 可能为空
258
- const composedPath = event.composedPath();
259
- if (!composedPath.length && event.target) {
260
- composedPath.push(event.target);
261
- }
262
- $target = composedPath[0] as HTMLElement;
263
- } else {
264
- $target = event.target as HTMLElement;
265
- }
266
- let $parent = $elItem;
267
- if (popsUtils.isWin($parent)) {
268
- // window和document共用一个对象
269
- // 这样就能处理子元素选择器无法匹配的问题
270
- $parent = PopsCore.document.documentElement;
235
+ // 遍历事件名设置元素事件
236
+ eventTypeList.forEach((eventName) => {
237
+ /**
238
+ * 如果是option.once,那么删除该监听和元素上的事件和监听
239
+ */
240
+ const checkOptionOnceToRemoveEventListener = () => {
241
+ if (listenerOption.once) {
242
+ this.off($elItem, eventName, selector as any, callback as any, option);
271
243
  }
272
- const findValue = selectorList.find((selectors) => {
273
- // 判断目标元素是否匹配选择器
274
- if (that.matches($target, selectors)) {
275
- // 当前目标可以被selector所匹配到
276
- return true;
244
+ };
245
+ /**
246
+ * 事件回调
247
+ * @param event
248
+ */
249
+ const handlerCallBack = function (event: Event) {
250
+ let call_this: Element | undefined = void 0;
251
+ let call_event: Event | undefined = void 0;
252
+ let call_$selector: HTMLElement | undefined = void 0;
253
+ let execCallback = false;
254
+ if (selectorList.length) {
255
+ // 存在子元素选择器
256
+ // 这时候的this和target都是子元素选择器的元素
257
+ let $target: HTMLElement;
258
+ if (listenerOption.isComposedPath) {
259
+ // 可能为空
260
+ const composedPath = event.composedPath();
261
+ if (!composedPath.length && event.target) {
262
+ composedPath.push(event.target);
263
+ }
264
+ $target = composedPath[0] as HTMLElement;
265
+ } else {
266
+ $target = event.target as HTMLElement;
277
267
  }
278
- // 在上层与主元素之间寻找可以被selector所匹配到的
279
- const $closestMatches = that.closest<HTMLElement>($target, selectors);
280
- if ($closestMatches && (<HTMLElement>$parent)?.contains?.($closestMatches)) {
281
- $target = $closestMatches;
282
- return true;
268
+ let $parent = $elItem;
269
+ if (popsUtils.isWin($parent)) {
270
+ // window和document共用一个对象
271
+ // 这样就能处理子元素选择器无法匹配的问题
272
+ $parent = PopsCore.document.documentElement;
283
273
  }
284
- return false;
285
- });
286
- if (findValue) {
287
- // 这里尝试使用defineProperty修改event的target值
288
- try {
289
- OriginPrototype.Object.defineProperty(event, "target", {
290
- get() {
291
- return $target;
292
- },
293
- });
294
- // oxlint-disable-next-line no-empty
295
- } catch {}
274
+ const findValue = selectorList.find((selectors) => {
275
+ // 判断目标元素是否匹配选择器
276
+ if (that.matches($target, selectors)) {
277
+ // 当前目标可以被selector所匹配到
278
+ return true;
279
+ }
280
+ // 在上层与主元素之间寻找可以被selector所匹配到的
281
+ const $closestMatches = that.closest<HTMLElement>($target, selectors);
282
+ if ($closestMatches && (<HTMLElement>$parent)?.contains?.($closestMatches)) {
283
+ $target = $closestMatches;
284
+ return true;
285
+ }
286
+ return false;
287
+ });
288
+ if (findValue) {
289
+ // 这里尝试使用defineProperty修改event的target值
290
+ try {
291
+ OriginPrototype.Object.defineProperty(event, "target", {
292
+ get() {
293
+ return $target;
294
+ },
295
+ });
296
+ // oxlint-disable-next-line no-empty
297
+ } catch {}
298
+ execCallback = true;
299
+ call_this = $target;
300
+ call_event = event;
301
+ call_$selector = $target;
302
+ }
303
+ } else {
296
304
  execCallback = true;
297
- call_this = $target;
305
+ call_this = $elItem as Element;
298
306
  call_event = event;
299
- call_$selector = $target;
300
307
  }
301
- } else {
302
- execCallback = true;
303
- call_this = $elItem as Element;
304
- call_event = event;
305
- }
306
- if (execCallback) {
307
- const result = listenerCallBack.call(call_this!, call_event!, call_$selector!);
308
- checkOptionOnceToRemoveEventListener($elItem);
309
- if (typeof result === "boolean" && !result) {
310
- return false;
308
+ if (execCallback) {
309
+ const result = listenerCallBack.call(call_this!, call_event!, call_$selector!);
310
+ checkOptionOnceToRemoveEventListener();
311
+ if (typeof result === "boolean" && !result) {
312
+ return false;
313
+ }
311
314
  }
312
- }
313
- };
314
-
315
- // 遍历事件名设置元素事件
316
- eventTypeList.forEach((eventName) => {
315
+ };
317
316
  // add listener
318
317
  $elItem.addEventListener(eventName, handlerCallBack, listenerOption);
319
318
  // 获取对象上的事件
@@ -370,7 +369,7 @@ class PopsDOMUtilsEvent {
370
369
  * DOMUtils.off(document.querySelector("a.xx"),"click")
371
370
  * DOMUtils.off("a.xx","click")
372
371
  */
373
- off<T extends PopsDOMUtils_EventType>(
372
+ off<T extends PopsDOMUtils_EventType = PopsDOMUtils_EventType>(
374
373
  element: PopsDOMUtilsElementEventType,
375
374
  eventType: T | T[],
376
375
  callback?: <E extends HTMLElement = HTMLElement>(this: E, event: PopsDOMUtils_Event[T]) => void,
@@ -394,7 +393,7 @@ class PopsDOMUtilsEvent {
394
393
  * DOMUtils.off(document.querySelector("a.xx"),"click")
395
394
  * DOMUtils.off("a.xx","click")
396
395
  */
397
- off<T extends Event>(
396
+ off<T extends Event = Event>(
398
397
  element: PopsDOMUtilsElementEventType,
399
398
  eventType: string | string[],
400
399
  callback?: <E extends HTMLElement = HTMLElement>(this: E, event: T) => void,
@@ -419,7 +418,7 @@ class PopsDOMUtilsEvent {
419
418
  * DOMUtils.off(document.querySelector("a.xx"),"click tap hover")
420
419
  * DOMUtils.off("a.xx",["click","tap","hover"])
421
420
  */
422
- off<T extends PopsDOMUtils_EventType>(
421
+ off<T extends PopsDOMUtils_EventType = PopsDOMUtils_EventType>(
423
422
  element: PopsDOMUtilsElementEventType,
424
423
  eventType: T | T[],
425
424
  selector?: string | string[] | undefined | null,
@@ -445,7 +444,7 @@ class PopsDOMUtilsEvent {
445
444
  * DOMUtils.off(document.querySelector("a.xx"),"click tap hover")
446
445
  * DOMUtils.off("a.xx",["click","tap","hover"])
447
446
  */
448
- off<T extends Event>(
447
+ off<T extends Event = Event>(
449
448
  element: PopsDOMUtilsElementEventType,
450
449
  eventType: string | string[],
451
450
  selector?: string | string[] | undefined | null,
@@ -563,17 +562,20 @@ class PopsDOMUtilsEvent {
563
562
  } = Reflect.get($elItem, SymbolEvents) || {};
564
563
  eventTypeList.forEach((eventName) => {
565
564
  const handlers = elementEvents[eventName] || [];
566
- const filterHandler = typeof filter === "function" ? handlers.filter(filter) : handlers;
567
- for (let index = 0; index < filterHandler.length; index++) {
568
- const handler = filterHandler[index];
565
+ // 过滤出需要删除的事件
566
+ const handlersFiltered = typeof filter === "function" ? handlers.filter(filter) : handlers;
567
+ for (let index = 0; index < handlersFiltered.length; index++) {
568
+ const handler = handlersFiltered[index];
569
+ // 过滤出的事件再根据下面的条件进行判断处理移除
570
+ // 1. callback内存地址必须相同
571
+ // 2. selector必须相同
572
+ // 3. option.capture必须相同
569
573
  let flag = true;
570
574
  if (flag && listenerCallBack && handler.callback !== listenerCallBack) {
571
- // callback不同
572
575
  flag = false;
573
576
  }
574
577
  if (flag && selectorList.length && Array.isArray(handler.selector)) {
575
578
  if (JSON.stringify(handler.selector) !== JSON.stringify(selectorList)) {
576
- // 子元素选择器不同
577
579
  flag = false;
578
580
  }
579
581
  }
@@ -582,14 +584,14 @@ class PopsDOMUtilsEvent {
582
584
  typeof handler.option.capture === "boolean" &&
583
585
  listenerOption.capture !== handler.option.capture
584
586
  ) {
585
- // 事件的配置项不同
586
587
  flag = false;
587
588
  }
588
589
  if (flag) {
589
590
  $elItem.removeEventListener(eventName, handler.handlerCallBack, handler.option);
590
- const findIndex = handlers.findIndex((item) => item === handler);
591
- if (findIndex !== -1) {
592
- handlers.splice(findIndex, 1);
591
+ for (let i = handlers.length - 1; i >= 0; i--) {
592
+ if (handlers[i] === handler) {
593
+ handlers.splice(i, 1);
594
+ }
593
595
  }
594
596
  }
595
597
  }