ph-utils 0.12.1 → 0.12.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.
Files changed (3) hide show
  1. package/lib/dom.d.ts +12 -1
  2. package/lib/dom.js +24 -17
  3. package/package.json +1 -1
package/lib/dom.d.ts CHANGED
@@ -76,7 +76,6 @@ export declare function toggleClass(el: HTMLElement, clazz: string): void;
76
76
  export declare function on<T extends Event>(element: HTMLElement, listener: string, fn: (e: T, target?: HTMLElement, flag?: string) => void, once?: boolean | {
77
77
  once?: boolean;
78
78
  eventFlag?: string;
79
- eventStop?: boolean;
80
79
  capture?: boolean;
81
80
  }): void;
82
81
  /**
@@ -86,6 +85,18 @@ export declare function on<T extends Event>(element: HTMLElement, listener: stri
86
85
  * @param fn - 要移除的事件监听器函数。
87
86
  */
88
87
  export declare function off(el: HTMLElement, listener: string, fn: EventListener): void;
88
+ /**
89
+ * 判断事件是否应该继续传递。
90
+ * 从事件目标开始向上遍历DOM树,检查每个节点上是否存在指定的属性。
91
+ * 如果找到该属性且其值不为'__stop__',则返回true,表示事件可以继续传递。
92
+ * 否则,返回false,表示事件应该停止传递。
93
+ * 通常用于事件委托时判断是否继续传递事件。
94
+ *
95
+ * @param e - 触发的事件对象
96
+ * @param eventFlag - 需要检查的属性名
97
+ * @returns 包含三个元素的数组:[是否继续传递事件, 属性值, 当前检查的DOM节点]
98
+ */
99
+ export declare function shouldEventNext(e: Event, eventFlag: string): (string | boolean | HTMLElement)[];
89
100
  /**
90
101
  * 设置或获取节点的 innerHTML 属性
91
102
  * @param element
package/lib/dom.js CHANGED
@@ -124,7 +124,7 @@ export function toggleClass(el, clazz) {
124
124
  * @param {boolean} onceOrConfig 是否是只运行一次的处理函数或者配置,其中 eventFlag 为 string,如果配置该项,则表明为委托事件
125
125
  */
126
126
  export function on(element, listener, fn, once = false) {
127
- let eventExtra = { eventStop: false };
127
+ let eventExtra = {};
128
128
  if (typeof once === "boolean") {
129
129
  eventExtra.once = once;
130
130
  }
@@ -133,23 +133,8 @@ export function on(element, listener, fn, once = false) {
133
133
  }
134
134
  if (eventExtra.eventFlag != null) {
135
135
  element.setAttribute(eventExtra.eventFlag, "__stop__");
136
- element.addEventListener(listener, (e) => {
137
- let target = e.target;
138
- let flag = "";
139
- do {
140
- flag = target.getAttribute(eventExtra.eventFlag) || "";
141
- if (flag === "") {
142
- target = target.parentNode;
143
- }
144
- } while (flag === "");
145
- if (flag !== "__stop__" || eventExtra.eventStop) {
146
- fn(e, target, flag);
147
- }
148
- }, eventExtra);
149
- }
150
- else {
151
- element.addEventListener(listener, fn, eventExtra);
152
136
  }
137
+ element.addEventListener(listener, fn, eventExtra);
153
138
  }
154
139
  /**
155
140
  * 移除指定元素的事件监听器。
@@ -160,6 +145,28 @@ export function on(element, listener, fn, once = false) {
160
145
  export function off(el, listener, fn) {
161
146
  el.removeEventListener(listener, fn);
162
147
  }
148
+ /**
149
+ * 判断事件是否应该继续传递。
150
+ * 从事件目标开始向上遍历DOM树,检查每个节点上是否存在指定的属性。
151
+ * 如果找到该属性且其值不为'__stop__',则返回true,表示事件可以继续传递。
152
+ * 否则,返回false,表示事件应该停止传递。
153
+ * 通常用于事件委托时判断是否继续传递事件。
154
+ *
155
+ * @param e - 触发的事件对象
156
+ * @param eventFlag - 需要检查的属性名
157
+ * @returns 包含三个元素的数组:[是否继续传递事件, 属性值, 当前检查的DOM节点]
158
+ */
159
+ export function shouldEventNext(e, eventFlag) {
160
+ let target = e.target;
161
+ let flag = "";
162
+ do {
163
+ flag = target.getAttribute(eventFlag) || "";
164
+ if (flag === "") {
165
+ target = target.parentNode;
166
+ }
167
+ } while (flag === "");
168
+ return [flag !== "__stop__", flag, target];
169
+ }
163
170
  /**
164
171
  * 设置或获取节点的 innerHTML 属性
165
172
  * @param element
package/package.json CHANGED
@@ -68,7 +68,7 @@
68
68
  },
69
69
  "./*": "./lib/*"
70
70
  },
71
- "version": "0.12.1",
71
+ "version": "0.12.2",
72
72
  "type": "module",
73
73
  "repository": {
74
74
  "type": "git",