ph-utils 0.12.3 → 0.12.5

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/lib/dom.d.ts CHANGED
@@ -73,7 +73,7 @@ export declare function toggleClass(el: HTMLElement, clazz: string): void;
73
73
  * @param {function} event 事件处理函数
74
74
  * @param {boolean} onceOrConfig 是否是只运行一次的处理函数或者配置,其中 eventFlag 为 string,如果配置该项,则表明为委托事件
75
75
  */
76
- export declare function on<T extends Event>(element: HTMLElement, listener: string, fn: (e: T, target?: HTMLElement, flag?: string) => void, option?: boolean | (AddEventListenerOptions & {
76
+ export declare function on(element: HTMLElement | ShadowRoot | Document, listener: string, fn: EventListener, option?: boolean | (AddEventListenerOptions & {
77
77
  eventFlag?: string;
78
78
  })): void;
79
79
  /**
@@ -82,7 +82,7 @@ export declare function on<T extends Event>(element: HTMLElement, listener: stri
82
82
  * @param listener - 事件名称。
83
83
  * @param fn - 要移除的事件监听器函数。
84
84
  */
85
- export declare function off(el: HTMLElement | Document, listener: string, fn: EventListener, option?: boolean | EventListenerOptions): void;
85
+ export declare function off(el: HTMLElement | ShadowRoot | Document, listener: string, fn: EventListener, option?: boolean | EventListenerOptions): void;
86
86
  /**
87
87
  * 判断事件是否应该继续传递。
88
88
  * 从事件目标开始向上遍历DOM树,检查每个节点上是否存在指定的属性。
@@ -92,9 +92,10 @@ export declare function off(el: HTMLElement | Document, listener: string, fn: Ev
92
92
  *
93
93
  * @param e - 触发的事件对象
94
94
  * @param eventFlag - 需要检查的属性名
95
+ * @param endRoot - 可选,如果传递该参数,则表示停止遍历的节点,如果未传递,则表示遍历到文档根节点为止
95
96
  * @returns 包含三个元素的数组:[是否继续传递事件, 属性值, 当前检查的DOM节点]
96
97
  */
97
- export declare function shouldEventNext(e: Event, eventFlag: string): (string | boolean | HTMLElement)[];
98
+ export declare function shouldEventNext(e: Event, eventFlag: string, endRoot?: HTMLElement | ShadowRoot): [boolean, string, HTMLElement];
98
99
  /**
99
100
  * 设置或获取节点的 innerHTML 属性
100
101
  * @param element
package/lib/dom.js CHANGED
@@ -125,7 +125,9 @@ export function toggleClass(el, clazz) {
125
125
  */
126
126
  export function on(element, listener, fn, option) {
127
127
  if (typeof option === "object" && option.eventFlag) {
128
- element.setAttribute(option.eventFlag, "__stop__");
128
+ if (element.setAttribute) {
129
+ element.setAttribute(option.eventFlag, "__stop__");
130
+ }
129
131
  }
130
132
  element.addEventListener(listener, fn, option);
131
133
  }
@@ -147,20 +149,26 @@ export function off(el, listener, fn, option) {
147
149
  *
148
150
  * @param e - 触发的事件对象
149
151
  * @param eventFlag - 需要检查的属性名
152
+ * @param endRoot - 可选,如果传递该参数,则表示停止遍历的节点,如果未传递,则表示遍历到文档根节点为止
150
153
  * @returns 包含三个元素的数组:[是否继续传递事件, 属性值, 当前检查的DOM节点]
151
154
  */
152
- export function shouldEventNext(e, eventFlag) {
155
+ export function shouldEventNext(e, eventFlag, endRoot) {
153
156
  let target = e.target;
154
157
  let flag = "";
155
158
  do {
156
- flag = target.getAttribute(eventFlag) || "";
159
+ if ((endRoot && endRoot.isSameNode(target)) || target.tagName === "BODY") {
160
+ break;
161
+ }
162
+ if (target.getAttribute) {
163
+ flag = target.getAttribute(eventFlag) || "";
164
+ }
157
165
  if (flag === "") {
158
166
  target = target.parentNode;
159
- if (!target)
160
- break;
161
167
  }
168
+ if (!target)
169
+ break;
162
170
  } while (flag === "");
163
- return [flag !== "__stop__", flag, target];
171
+ return [flag !== "__stop__" && flag !== "", flag, target];
164
172
  }
165
173
  /**
166
174
  * 设置或获取节点的 innerHTML 属性
package/package.json CHANGED
@@ -68,7 +68,7 @@
68
68
  },
69
69
  "./*": "./lib/*"
70
70
  },
71
- "version": "0.12.3",
71
+ "version": "0.12.5",
72
72
  "type": "module",
73
73
  "repository": {
74
74
  "type": "git",