@whitesev/pops 3.0.2 → 3.1.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.
- package/dist/index.amd.js +87 -66
- 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 +87 -66
- 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 +87 -66
- 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 +87 -66
- 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 +87 -66
- 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 +87 -66
- 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 +20 -20
- package/dist/types/src/components/panel/handlerComponents.d.ts +4 -6
- package/dist/types/src/components/tooltip/index.d.ts +2 -2
- package/dist/types/src/components/tooltip/types/index.d.ts +3 -3
- package/dist/types/src/types/PopsDOMUtilsEventType.d.ts +22 -0
- package/dist/types/src/utils/PopsDOMUtils.d.ts +29 -29
- package/dist/types/src/utils/PopsInstanceUtils.d.ts +1 -1
- package/package.json +3 -3
- package/src/components/folder/index.ts +3 -3
- package/src/components/panel/handlerComponents.ts +8 -10
- package/src/components/rightClickMenu/index.ts +3 -3
- package/src/components/tooltip/defaultConfig.ts +2 -2
- package/src/components/tooltip/index.ts +4 -4
- package/src/components/tooltip/types/index.ts +3 -3
- package/src/types/PopsDOMUtilsEventType.d.ts +22 -0
- package/src/utils/PopsDOMUtils.ts +90 -59
- package/src/utils/PopsInstanceUtils.ts +5 -5
|
@@ -237,6 +237,28 @@ export type PopsDOMUtilsElementEventType =
|
|
|
237
237
|
| ChildNode
|
|
238
238
|
| Node;
|
|
239
239
|
|
|
240
|
+
/**
|
|
241
|
+
* 通过.on执行后的返回值
|
|
242
|
+
*/
|
|
243
|
+
export declare interface PopsDOMUtilsAddEventListenerResult {
|
|
244
|
+
/**
|
|
245
|
+
* 取消绑定的监听事件
|
|
246
|
+
* @param filter (可选)过滤函数,对元素属性上的事件进行过滤出想要删除的事件
|
|
247
|
+
*/
|
|
248
|
+
off(
|
|
249
|
+
filter?: (
|
|
250
|
+
value: PopsDOMUtilsEventListenerOptionsAttribute,
|
|
251
|
+
index: number,
|
|
252
|
+
array: PopsDOMUtilsEventListenerOptionsAttribute[]
|
|
253
|
+
) => boolean
|
|
254
|
+
): void;
|
|
255
|
+
/**
|
|
256
|
+
* 主动触发事件
|
|
257
|
+
* @param details 赋予触发的Event的额外属性,如果是Event类型,那么将自动代替默认new的Event对象
|
|
258
|
+
* @param useDispatchToEmit 是否使用dispatchEvent来触发事件,默认true,如果为false,则直接调用callback,但是这种会让使用了selectorTarget的没有值
|
|
259
|
+
*/
|
|
260
|
+
emit(details?: object, useDispatchToEmit?: boolean): void;
|
|
261
|
+
}
|
|
240
262
|
export type ParseHTMLReturnType<T1, T2> = T1 extends true ? (T2 extends true ? Document : HTMLElement) : HTMLElement;
|
|
241
263
|
|
|
242
264
|
/**
|
|
@@ -6,6 +6,7 @@ import type {
|
|
|
6
6
|
PopsDOMUtilsEventListenerOptionsAttribute,
|
|
7
7
|
PopsDOMUtils_Event,
|
|
8
8
|
PopsDOMUtilsElementEventType,
|
|
9
|
+
PopsDOMUtilsAddEventListenerResult,
|
|
9
10
|
} from "../types/PopsDOMUtilsEventType";
|
|
10
11
|
import { SymbolEvents } from "./PopsDOMUtilsEventsConfig";
|
|
11
12
|
import { OriginPrototype, PopsCore } from "../PopsCore";
|
|
@@ -37,7 +38,7 @@ class PopsDOMUtilsEvent {
|
|
|
37
38
|
eventType: T | T[],
|
|
38
39
|
callback: (this: HTMLElement, event: PopsDOMUtils_Event[T]) => void,
|
|
39
40
|
option?: PopsDOMUtilsEventListenerOption | boolean
|
|
40
|
-
):
|
|
41
|
+
): PopsDOMUtilsAddEventListenerResult;
|
|
41
42
|
/**
|
|
42
43
|
* 绑定事件
|
|
43
44
|
* @param element 需要绑定的元素|元素数组|window
|
|
@@ -61,7 +62,7 @@ class PopsDOMUtilsEvent {
|
|
|
61
62
|
eventType: string | string[],
|
|
62
63
|
callback: (this: HTMLElement, event: T) => void,
|
|
63
64
|
option?: PopsDOMUtilsEventListenerOption | boolean
|
|
64
|
-
):
|
|
65
|
+
): PopsDOMUtilsAddEventListenerResult;
|
|
65
66
|
/**
|
|
66
67
|
* 绑定事件
|
|
67
68
|
* @param element 需要绑定的元素|元素数组|window
|
|
@@ -92,7 +93,7 @@ class PopsDOMUtilsEvent {
|
|
|
92
93
|
selector: string | string[] | undefined | null,
|
|
93
94
|
callback: (this: HTMLElement, event: PopsDOMUtils_Event[T], selectorTarget: HTMLElement) => void,
|
|
94
95
|
option?: PopsDOMUtilsEventListenerOption | boolean
|
|
95
|
-
):
|
|
96
|
+
): PopsDOMUtilsAddEventListenerResult;
|
|
96
97
|
/**
|
|
97
98
|
* 绑定事件
|
|
98
99
|
* @param element 需要绑定的元素|元素数组|window
|
|
@@ -123,7 +124,7 @@ class PopsDOMUtilsEvent {
|
|
|
123
124
|
selector: string | string[] | undefined | null,
|
|
124
125
|
callback: (this: HTMLElement, event: T, selectorTarget: HTMLElement) => void,
|
|
125
126
|
option?: PopsDOMUtilsEventListenerOption | boolean
|
|
126
|
-
):
|
|
127
|
+
): PopsDOMUtilsAddEventListenerResult;
|
|
127
128
|
on<T extends Event>(
|
|
128
129
|
element: HTMLElement | string | NodeList | HTMLElement[] | Window | Document | Element | null | typeof globalThis,
|
|
129
130
|
eventType: PopsDOMUtils_EventType | PopsDOMUtils_EventType[] | string | string[],
|
|
@@ -138,7 +139,7 @@ class PopsDOMUtilsEvent {
|
|
|
138
139
|
| PopsDOMUtilsEventListenerOption
|
|
139
140
|
| boolean,
|
|
140
141
|
option?: PopsDOMUtilsEventListenerOption | boolean
|
|
141
|
-
) {
|
|
142
|
+
): PopsDOMUtilsAddEventListenerResult {
|
|
142
143
|
/**
|
|
143
144
|
* 获取option配置
|
|
144
145
|
* @param args
|
|
@@ -170,21 +171,24 @@ class PopsDOMUtilsEvent {
|
|
|
170
171
|
return option;
|
|
171
172
|
}
|
|
172
173
|
|
|
173
|
-
const
|
|
174
|
+
const that = this;
|
|
174
175
|
// eslint-disable-next-line prefer-rest-params
|
|
175
176
|
const args = arguments;
|
|
176
177
|
if (typeof element === "string") {
|
|
177
|
-
element =
|
|
178
|
+
element = that.selectorAll(element);
|
|
178
179
|
}
|
|
179
180
|
if (element == null) {
|
|
180
|
-
return
|
|
181
|
+
return {
|
|
182
|
+
off() {},
|
|
183
|
+
emit() {},
|
|
184
|
+
};
|
|
181
185
|
}
|
|
182
|
-
let
|
|
186
|
+
let $elList: HTMLElement[] = [];
|
|
183
187
|
if (element instanceof NodeList || Array.isArray(element)) {
|
|
184
188
|
element = element as HTMLElement[];
|
|
185
|
-
|
|
189
|
+
$elList = [...element];
|
|
186
190
|
} else {
|
|
187
|
-
|
|
191
|
+
$elList.push(element as HTMLElement);
|
|
188
192
|
}
|
|
189
193
|
// 事件名
|
|
190
194
|
let eventTypeList: string[] = [];
|
|
@@ -227,10 +231,10 @@ class PopsDOMUtilsEvent {
|
|
|
227
231
|
*/
|
|
228
232
|
function checkOptionOnceToRemoveEventListener() {
|
|
229
233
|
if (listenerOption.once) {
|
|
230
|
-
|
|
234
|
+
that.off(element, eventType as any, selector as any, callback as any, option);
|
|
231
235
|
}
|
|
232
236
|
}
|
|
233
|
-
|
|
237
|
+
$elList.forEach((elementItem) => {
|
|
234
238
|
/**
|
|
235
239
|
* 事件回调
|
|
236
240
|
* @param event
|
|
@@ -250,12 +254,12 @@ class PopsDOMUtilsEvent {
|
|
|
250
254
|
}
|
|
251
255
|
const findValue = selectorList.find((selectorItem) => {
|
|
252
256
|
// 判断目标元素是否匹配选择器
|
|
253
|
-
if (
|
|
257
|
+
if (that.matches(eventTarget, selectorItem)) {
|
|
254
258
|
// 当前目标可以被selector所匹配到
|
|
255
259
|
return true;
|
|
256
260
|
}
|
|
257
261
|
// 在上层与主元素之间寻找可以被selector所匹配到的
|
|
258
|
-
const $closestMatches =
|
|
262
|
+
const $closestMatches = that.closest<HTMLElement>(eventTarget, selectorItem);
|
|
259
263
|
if ($closestMatches && totalParent?.contains($closestMatches)) {
|
|
260
264
|
eventTarget = $closestMatches;
|
|
261
265
|
return true;
|
|
@@ -302,6 +306,30 @@ class PopsDOMUtilsEvent {
|
|
|
302
306
|
Reflect.set(elementItem, SymbolEvents, elementEvents);
|
|
303
307
|
});
|
|
304
308
|
});
|
|
309
|
+
|
|
310
|
+
return {
|
|
311
|
+
/**
|
|
312
|
+
* 取消绑定的监听事件
|
|
313
|
+
* @param filter (可选)过滤函数,对元素属性上的事件进行过滤出想要删除的事件
|
|
314
|
+
*/
|
|
315
|
+
off: (
|
|
316
|
+
filter?: (
|
|
317
|
+
value: PopsDOMUtilsEventListenerOptionsAttribute,
|
|
318
|
+
index: number,
|
|
319
|
+
array: PopsDOMUtilsEventListenerOptionsAttribute[]
|
|
320
|
+
) => boolean
|
|
321
|
+
) => {
|
|
322
|
+
that.off($elList, eventTypeList, selectorList, listenerCallBack, listenerOption, filter);
|
|
323
|
+
},
|
|
324
|
+
/**
|
|
325
|
+
* 主动触发事件
|
|
326
|
+
* @param details 赋予触发的Event的额外属性,如果是Event类型,那么将自动代替默认new的Event对象
|
|
327
|
+
* @param useDispatchToEmit 是否使用dispatchEvent来触发事件,默认true,如果为false,则直接调用callback,但是这种会让使用了selectorTarget的没有值
|
|
328
|
+
*/
|
|
329
|
+
emit: (details?: object, useDispatchToEmit?: boolean) => {
|
|
330
|
+
that.emit($elList, eventTypeList, details, useDispatchToEmit);
|
|
331
|
+
},
|
|
332
|
+
};
|
|
305
333
|
}
|
|
306
334
|
/**
|
|
307
335
|
* 取消绑定事件
|
|
@@ -624,11 +652,11 @@ class PopsDOMUtilsEvent {
|
|
|
624
652
|
* 等待文档加载完成后执行指定的函数
|
|
625
653
|
* @param callback 需要执行的函数
|
|
626
654
|
* @example
|
|
627
|
-
* DOMUtils.
|
|
655
|
+
* DOMUtils.onReady(function(){
|
|
628
656
|
* console.log("文档加载完毕")
|
|
629
657
|
* })
|
|
630
658
|
*/
|
|
631
|
-
|
|
659
|
+
onReady<T extends (...args: any[]) => any>(callback: T) {
|
|
632
660
|
const that = this;
|
|
633
661
|
if (typeof callback !== "function") {
|
|
634
662
|
return;
|
|
@@ -701,60 +729,60 @@ class PopsDOMUtilsEvent {
|
|
|
701
729
|
* @param element 需要触发的元素|元素数组|window
|
|
702
730
|
* @param eventType 需要触发的事件
|
|
703
731
|
* @param details 赋予触发的Event的额外属性,如果是Event类型,那么将自动代替默认new的Event对象
|
|
704
|
-
* @param
|
|
732
|
+
* @param useDispatchToEmitEvent 是否使用dispatchEvent来触发事件,默认true
|
|
705
733
|
* @example
|
|
706
734
|
* // 触发元素a.xx的click事件
|
|
707
|
-
* DOMUtils.
|
|
708
|
-
* DOMUtils.
|
|
735
|
+
* DOMUtils.emit(document.querySelector("a.xx"),"click")
|
|
736
|
+
* DOMUtils.emit("a.xx","click")
|
|
709
737
|
* // 触发元素a.xx的click、tap、hover事件
|
|
710
|
-
* DOMUtils.
|
|
711
|
-
* DOMUtils.
|
|
738
|
+
* DOMUtils.emit(document.querySelector("a.xx"),"click tap hover")
|
|
739
|
+
* DOMUtils.emit("a.xx",["click","tap","hover"])
|
|
712
740
|
*/
|
|
713
|
-
|
|
741
|
+
emit(
|
|
714
742
|
element: HTMLElement | string | NodeList | any[] | Window | Document,
|
|
715
743
|
eventType: string | string[],
|
|
716
744
|
details?: object,
|
|
717
|
-
|
|
745
|
+
useDispatchToEmitEvent?: boolean
|
|
718
746
|
): void;
|
|
719
747
|
/**
|
|
720
748
|
* 主动触发事件
|
|
721
749
|
* @param element 需要触发的元素|元素数组|window
|
|
722
750
|
* @param eventType 需要触发的事件
|
|
723
751
|
* @param details 赋予触发的Event的额外属性,如果是Event类型,那么将自动代替默认new的Event对象
|
|
724
|
-
* @param
|
|
752
|
+
* @param useDispatchToEmitEvent 是否使用dispatchEvent来触发事件,默认true
|
|
725
753
|
* @example
|
|
726
754
|
* // 触发元素a.xx的click事件
|
|
727
|
-
* DOMUtils.
|
|
728
|
-
* DOMUtils.
|
|
755
|
+
* DOMUtils.emit(document.querySelector("a.xx"),"click")
|
|
756
|
+
* DOMUtils.emit("a.xx","click")
|
|
729
757
|
* // 触发元素a.xx的click、tap、hover事件
|
|
730
|
-
* DOMUtils.
|
|
731
|
-
* DOMUtils.
|
|
758
|
+
* DOMUtils.emit(document.querySelector("a.xx"),"click tap hover")
|
|
759
|
+
* DOMUtils.emit("a.xx",["click","tap","hover"])
|
|
732
760
|
*/
|
|
733
|
-
|
|
761
|
+
emit(
|
|
734
762
|
element: HTMLElement | string | NodeList | any[] | Window | Document,
|
|
735
763
|
eventType: PopsDOMUtils_EventType | PopsDOMUtils_EventType[],
|
|
736
764
|
details?: object,
|
|
737
|
-
|
|
765
|
+
useDispatchToEmitEvent?: boolean
|
|
738
766
|
): void;
|
|
739
767
|
/**
|
|
740
768
|
* 主动触发事件
|
|
741
769
|
* @param element 需要触发的元素|元素数组|window
|
|
742
770
|
* @param eventType 需要触发的事件
|
|
743
771
|
* @param details 赋予触发的Event的额外属性,如果是Event类型,那么将自动代替默认new的Event对象
|
|
744
|
-
* @param
|
|
772
|
+
* @param useDispatchToEmitEvent 是否使用dispatchEvent来触发事件,默认true
|
|
745
773
|
* @example
|
|
746
774
|
* // 触发元素a.xx的click事件
|
|
747
|
-
* DOMUtils.
|
|
748
|
-
* DOMUtils.
|
|
775
|
+
* DOMUtils.emit(document.querySelector("a.xx"),"click")
|
|
776
|
+
* DOMUtils.emit("a.xx","click")
|
|
749
777
|
* // 触发元素a.xx的click、tap、hover事件
|
|
750
|
-
* DOMUtils.
|
|
751
|
-
* DOMUtils.
|
|
778
|
+
* DOMUtils.emit(document.querySelector("a.xx"),"click tap hover")
|
|
779
|
+
* DOMUtils.emit("a.xx",["click","tap","hover"])
|
|
752
780
|
*/
|
|
753
|
-
|
|
781
|
+
emit(
|
|
754
782
|
element: HTMLElement | string | NodeList | any[] | Window | Document,
|
|
755
783
|
eventType: PopsDOMUtils_EventType | PopsDOMUtils_EventType[] | string,
|
|
756
784
|
details?: object,
|
|
757
|
-
|
|
785
|
+
useDispatchToEmitEvent: boolean = true
|
|
758
786
|
) {
|
|
759
787
|
if (typeof element === "string") {
|
|
760
788
|
element = PopsCore.document.querySelector(element) as HTMLElement;
|
|
@@ -791,7 +819,7 @@ class PopsDOMUtilsEvent {
|
|
|
791
819
|
});
|
|
792
820
|
}
|
|
793
821
|
}
|
|
794
|
-
if (
|
|
822
|
+
if (useDispatchToEmitEvent == false && _eventType_ in events) {
|
|
795
823
|
events[_eventType_].forEach((eventsItem: any) => {
|
|
796
824
|
eventsItem.callback(event);
|
|
797
825
|
});
|
|
@@ -807,7 +835,7 @@ class PopsDOMUtilsEvent {
|
|
|
807
835
|
* @param element 目标元素
|
|
808
836
|
* @param handler (可选)事件处理函数
|
|
809
837
|
* @param details (可选)赋予触发的Event的额外属性
|
|
810
|
-
* @param
|
|
838
|
+
* @param useDispatchToEmitEvent (可选)是否使用dispatchEvent来触发事件,默认true
|
|
811
839
|
* @example
|
|
812
840
|
* // 触发元素a.xx的click事件
|
|
813
841
|
* DOMUtils.click(document.querySelector("a.xx"))
|
|
@@ -820,7 +848,7 @@ class PopsDOMUtilsEvent {
|
|
|
820
848
|
element: HTMLElement | string | Window,
|
|
821
849
|
handler?: (event: PopsDOMUtils_Event["click"]) => void,
|
|
822
850
|
details?: any,
|
|
823
|
-
|
|
851
|
+
useDispatchToEmitEvent?: boolean
|
|
824
852
|
) {
|
|
825
853
|
const DOMUtilsContext = this;
|
|
826
854
|
if (typeof element === "string") {
|
|
@@ -830,7 +858,7 @@ class PopsDOMUtilsEvent {
|
|
|
830
858
|
return;
|
|
831
859
|
}
|
|
832
860
|
if (handler == null) {
|
|
833
|
-
DOMUtilsContext.
|
|
861
|
+
DOMUtilsContext.emit(element, "click", details, useDispatchToEmitEvent);
|
|
834
862
|
} else {
|
|
835
863
|
DOMUtilsContext.on(element, "click", null, handler);
|
|
836
864
|
}
|
|
@@ -840,7 +868,7 @@ class PopsDOMUtilsEvent {
|
|
|
840
868
|
* @param element 目标元素
|
|
841
869
|
* @param handler (可选)事件处理函数
|
|
842
870
|
* @param details (可选)赋予触发的Event的额外属性
|
|
843
|
-
* @param
|
|
871
|
+
* @param useDispatchToEmitEvent (可选)是否使用dispatchEvent来触发事件,默认true
|
|
844
872
|
* @example
|
|
845
873
|
* // 触发元素a.xx的blur事件
|
|
846
874
|
* DOMUtils.blur(document.querySelector("a.xx"))
|
|
@@ -853,7 +881,7 @@ class PopsDOMUtilsEvent {
|
|
|
853
881
|
element: HTMLElement | string | Window,
|
|
854
882
|
handler?: (event: PopsDOMUtils_Event["blur"]) => void,
|
|
855
883
|
details?: object,
|
|
856
|
-
|
|
884
|
+
useDispatchToEmitEvent?: boolean
|
|
857
885
|
) {
|
|
858
886
|
const DOMUtilsContext = this;
|
|
859
887
|
if (typeof element === "string") {
|
|
@@ -863,7 +891,7 @@ class PopsDOMUtilsEvent {
|
|
|
863
891
|
return;
|
|
864
892
|
}
|
|
865
893
|
if (handler === null) {
|
|
866
|
-
DOMUtilsContext.
|
|
894
|
+
DOMUtilsContext.emit(element, "blur", details, useDispatchToEmitEvent);
|
|
867
895
|
} else {
|
|
868
896
|
DOMUtilsContext.on(element, "blur", null, handler as (event: Event) => void);
|
|
869
897
|
}
|
|
@@ -873,7 +901,7 @@ class PopsDOMUtilsEvent {
|
|
|
873
901
|
* @param element 目标元素
|
|
874
902
|
* @param handler (可选)事件处理函数
|
|
875
903
|
* @param details (可选)赋予触发的Event的额外属性
|
|
876
|
-
* @param
|
|
904
|
+
* @param useDispatchToEmitEvent (可选)是否使用dispatchEvent来触发事件,默认true
|
|
877
905
|
* @example
|
|
878
906
|
* // 触发元素a.xx的focus事件
|
|
879
907
|
* DOMUtils.focus(document.querySelector("a.xx"))
|
|
@@ -886,7 +914,7 @@ class PopsDOMUtilsEvent {
|
|
|
886
914
|
element: HTMLElement | string | Window,
|
|
887
915
|
handler?: (event: PopsDOMUtils_Event["focus"]) => void,
|
|
888
916
|
details?: object,
|
|
889
|
-
|
|
917
|
+
useDispatchToEmitEvent?: boolean
|
|
890
918
|
) {
|
|
891
919
|
const DOMUtilsContext = this;
|
|
892
920
|
if (typeof element === "string") {
|
|
@@ -896,7 +924,7 @@ class PopsDOMUtilsEvent {
|
|
|
896
924
|
return;
|
|
897
925
|
}
|
|
898
926
|
if (handler == null) {
|
|
899
|
-
DOMUtilsContext.
|
|
927
|
+
DOMUtilsContext.emit(element, "focus", details, useDispatchToEmitEvent);
|
|
900
928
|
} else {
|
|
901
929
|
DOMUtilsContext.on(element, "focus", null, handler);
|
|
902
930
|
}
|
|
@@ -915,7 +943,7 @@ class PopsDOMUtilsEvent {
|
|
|
915
943
|
* console.log("移入/移除");
|
|
916
944
|
* })
|
|
917
945
|
*/
|
|
918
|
-
|
|
946
|
+
onHover(
|
|
919
947
|
element: HTMLElement | string,
|
|
920
948
|
handler: (event: PopsDOMUtils_Event["hover"]) => void,
|
|
921
949
|
option?: boolean | AddEventListenerOptions
|
|
@@ -945,7 +973,7 @@ class PopsDOMUtilsEvent {
|
|
|
945
973
|
* console.log("按键松开");
|
|
946
974
|
* })
|
|
947
975
|
*/
|
|
948
|
-
|
|
976
|
+
onKeyup(
|
|
949
977
|
target: HTMLElement | string | Window | typeof globalThis,
|
|
950
978
|
handler: (event: PopsDOMUtils_Event["keyup"]) => void,
|
|
951
979
|
option?: boolean | AddEventListenerOptions
|
|
@@ -974,7 +1002,7 @@ class PopsDOMUtilsEvent {
|
|
|
974
1002
|
* console.log("按键按下");
|
|
975
1003
|
* })
|
|
976
1004
|
*/
|
|
977
|
-
|
|
1005
|
+
onKeydown(
|
|
978
1006
|
target: HTMLElement | Window | typeof globalThis | string,
|
|
979
1007
|
handler: (event: PopsDOMUtils_Event["keydown"]) => void,
|
|
980
1008
|
option?: boolean | AddEventListenerOptions
|
|
@@ -1003,7 +1031,7 @@ class PopsDOMUtilsEvent {
|
|
|
1003
1031
|
* console.log("按键按下");
|
|
1004
1032
|
* })
|
|
1005
1033
|
*/
|
|
1006
|
-
|
|
1034
|
+
onKeypress(
|
|
1007
1035
|
target: HTMLElement | Window | typeof globalThis | string,
|
|
1008
1036
|
handler: (event: PopsDOMUtils_Event["keypress"]) => void,
|
|
1009
1037
|
option?: boolean | AddEventListenerOptions
|
|
@@ -2389,6 +2417,9 @@ class PopsDOMUtils extends PopsDOMUtilsEvent {
|
|
|
2389
2417
|
callback: (evt: InputEvent) => void | Promise<void>,
|
|
2390
2418
|
option?: PopsDOMUtilsEventListenerOption | boolean
|
|
2391
2419
|
) {
|
|
2420
|
+
/**
|
|
2421
|
+
* 是否正在输入中
|
|
2422
|
+
*/
|
|
2392
2423
|
let isComposite = false;
|
|
2393
2424
|
const __callback = async (event: InputEvent) => {
|
|
2394
2425
|
if (isComposite) return;
|
|
@@ -2399,19 +2430,19 @@ class PopsDOMUtils extends PopsDOMUtilsEvent {
|
|
|
2399
2430
|
};
|
|
2400
2431
|
const __composition_end_callback = () => {
|
|
2401
2432
|
isComposite = false;
|
|
2402
|
-
this.
|
|
2433
|
+
this.emit($el, "input", {
|
|
2403
2434
|
isComposite,
|
|
2404
2435
|
});
|
|
2405
2436
|
};
|
|
2406
|
-
this.on($el, "input", __callback, option);
|
|
2407
|
-
this.on($el, "compositionstart", __composition_start_callback, option);
|
|
2408
|
-
this.on($el, "compositionend", __composition_end_callback, option);
|
|
2437
|
+
const inputListener = this.on($el, "input", __callback, option);
|
|
2438
|
+
const compositionStartListener = this.on($el, "compositionstart", __composition_start_callback, option);
|
|
2439
|
+
const compositionEndListener = this.on($el, "compositionend", __composition_end_callback, option);
|
|
2409
2440
|
|
|
2410
2441
|
return {
|
|
2411
2442
|
off: () => {
|
|
2412
|
-
|
|
2413
|
-
|
|
2414
|
-
|
|
2443
|
+
inputListener.off();
|
|
2444
|
+
compositionStartListener.off();
|
|
2445
|
+
compositionEndListener.off();
|
|
2415
2446
|
},
|
|
2416
2447
|
};
|
|
2417
2448
|
}
|
|
@@ -422,7 +422,7 @@ export const PopsInstanceUtils = {
|
|
|
422
422
|
popsDOMUtils.on($pops, popsDOMUtils.getTransitionEndNameList(), closeCallBack);
|
|
423
423
|
const popsTransForm = getComputedStyle($pops).transform;
|
|
424
424
|
if (popsTransForm !== "none") {
|
|
425
|
-
popsDOMUtils.
|
|
425
|
+
popsDOMUtils.emit($pops, popsDOMUtils.getTransitionEndNameList(), void 0, true);
|
|
426
426
|
return;
|
|
427
427
|
}
|
|
428
428
|
if (["top"].includes(drawerConfig.direction)) {
|
|
@@ -461,7 +461,7 @@ export const PopsInstanceUtils = {
|
|
|
461
461
|
options: {
|
|
462
462
|
dragElement: HTMLElement;
|
|
463
463
|
limit: boolean;
|
|
464
|
-
|
|
464
|
+
emitClick?: boolean;
|
|
465
465
|
extraDistance: number;
|
|
466
466
|
container?: Window | typeof globalThis | HTMLElement;
|
|
467
467
|
moveCallBack?: (moveElement: HTMLElement, left: number, top: number) => void;
|
|
@@ -474,7 +474,7 @@ export const PopsInstanceUtils = {
|
|
|
474
474
|
limit: true,
|
|
475
475
|
extraDistance: 3,
|
|
476
476
|
container: PopsCore.globalThis,
|
|
477
|
-
|
|
477
|
+
emitClick: true,
|
|
478
478
|
},
|
|
479
479
|
options
|
|
480
480
|
);
|
|
@@ -631,11 +631,11 @@ export const PopsInstanceUtils = {
|
|
|
631
631
|
}
|
|
632
632
|
}
|
|
633
633
|
});
|
|
634
|
-
if (options.
|
|
634
|
+
if (options.emitClick) {
|
|
635
635
|
// 因为会覆盖上面的点击事件,主动触发一下
|
|
636
636
|
anyTouchElement.on(["tap"], function (event) {
|
|
637
637
|
event.changedPoints.forEach((item) => {
|
|
638
|
-
popsDOMUtils.
|
|
638
|
+
popsDOMUtils.emit(item.target! as HTMLElement, "click", void 0, true);
|
|
639
639
|
});
|
|
640
640
|
});
|
|
641
641
|
}
|