@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.
- package/dist/index.amd.js +131 -128
- 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 +131 -128
- 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 +131 -128
- 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 +131 -128
- 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 +131 -128
- 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 +131 -128
- 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/Pops.d.ts +8 -8
- package/dist/types/src/utils/PopsDOMUtils.d.ts +9 -9
- package/package.json +1 -1
- package/src/utils/PopsDOMUtils.ts +103 -101
package/dist/types/src/Pops.d.ts
CHANGED
|
@@ -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,
|
|
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,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
|
-
|
|
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 {
|
|
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
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
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
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
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
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
268
|
+
let $parent = $elItem;
|
|
269
|
+
if (popsUtils.isWin($parent)) {
|
|
270
|
+
// window和document共用一个对象
|
|
271
|
+
// 这样就能处理子元素选择器无法匹配的问题
|
|
272
|
+
$parent = PopsCore.document.documentElement;
|
|
283
273
|
}
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
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 = $
|
|
305
|
+
call_this = $elItem as Element;
|
|
298
306
|
call_event = event;
|
|
299
|
-
call_$selector = $target;
|
|
300
307
|
}
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
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
|
-
|
|
567
|
-
|
|
568
|
-
|
|
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
|
-
|
|
591
|
-
|
|
592
|
-
|
|
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
|
}
|