@whitesev/domutils 1.9.6 → 1.9.7
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 +41 -22
- 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 +41 -22
- 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 +41 -22
- 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 +41 -22
- 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 +41 -22
- 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 +41 -22
- 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/ElementEvent.d.ts +13 -10
- package/package.json +1 -1
- package/src/ElementEvent.ts +57 -29
package/src/ElementEvent.ts
CHANGED
|
@@ -830,20 +830,23 @@ class ElementEvent extends ElementAnimate {
|
|
|
830
830
|
/**
|
|
831
831
|
* 主动触发事件
|
|
832
832
|
* @param element 需要触发的元素|元素数组|window
|
|
833
|
-
* @param
|
|
834
|
-
* @param extraDetails
|
|
835
|
-
* @param useDispatchToTriggerEvent
|
|
833
|
+
* @param event 触发的事件
|
|
834
|
+
* @param extraDetails (可选)赋予触发的Event的额外属性
|
|
835
|
+
* @param useDispatchToTriggerEvent (可选)是否使用dispatchEvent来触发事件,默认true,如果为false,则直接调用通过.on监听的callback(),但是这种只有一个入参,如果使用$selector则没有值
|
|
836
836
|
* @example
|
|
837
|
-
*
|
|
838
|
-
*
|
|
839
|
-
* DOMUtils.emit("a.xx","click")
|
|
840
|
-
*
|
|
841
|
-
*
|
|
842
|
-
*
|
|
837
|
+
* DOMUtils.emit("a.xx", new Event("click"))
|
|
838
|
+
* @example
|
|
839
|
+
* DOMUtils.emit("a.xx", new Event("click"), {
|
|
840
|
+
* disableHook: true
|
|
841
|
+
* })
|
|
842
|
+
* @example
|
|
843
|
+
* DOMUtils.emit("a.xx", new Event("click"), {
|
|
844
|
+
* disableHook: true
|
|
845
|
+
* },false)
|
|
843
846
|
*/
|
|
844
847
|
emit(
|
|
845
848
|
element: Element | string | NodeList | any[] | Window | Document,
|
|
846
|
-
|
|
849
|
+
event: Event,
|
|
847
850
|
extraDetails?: object,
|
|
848
851
|
useDispatchToTriggerEvent?: boolean
|
|
849
852
|
): void;
|
|
@@ -863,7 +866,7 @@ class ElementEvent extends ElementAnimate {
|
|
|
863
866
|
*/
|
|
864
867
|
emit(
|
|
865
868
|
element: Element | string | NodeList | any[] | Window | Document,
|
|
866
|
-
eventType: DOMUtils_EventType | DOMUtils_EventType[] | string | string[],
|
|
869
|
+
eventType: DOMUtils_EventType | DOMUtils_EventType[] | string | string[] | Event,
|
|
867
870
|
extraDetails?: object | boolean,
|
|
868
871
|
useDispatchToTriggerEvent: boolean = true
|
|
869
872
|
) {
|
|
@@ -880,11 +883,33 @@ class ElementEvent extends ElementAnimate {
|
|
|
880
883
|
} else {
|
|
881
884
|
$elList.push(element);
|
|
882
885
|
}
|
|
886
|
+
|
|
887
|
+
/**
|
|
888
|
+
* 主动添加属性
|
|
889
|
+
*/
|
|
890
|
+
const addExtraProp = (event: Event, obj: any) => {
|
|
891
|
+
if (event instanceof Event && typeof obj === "object" && obj != null && !Array.isArray(obj)) {
|
|
892
|
+
const detailKeys = Object.keys(obj);
|
|
893
|
+
detailKeys.forEach((keyName) => {
|
|
894
|
+
const value = Reflect.get(obj, keyName);
|
|
895
|
+
// 在event上添加属性
|
|
896
|
+
Reflect.set(event, keyName, value);
|
|
897
|
+
});
|
|
898
|
+
}
|
|
899
|
+
};
|
|
900
|
+
|
|
883
901
|
let eventTypeList: string[] = [];
|
|
902
|
+
/**
|
|
903
|
+
* 主动传递的事件
|
|
904
|
+
*/
|
|
905
|
+
let __event__: Event | null = null;
|
|
884
906
|
if (Array.isArray(eventType)) {
|
|
885
907
|
eventTypeList = eventType.filter((it) => typeof it === "string" && it.trim() !== "");
|
|
886
908
|
} else if (typeof eventType === "string") {
|
|
887
909
|
eventTypeList = eventType.split(" ");
|
|
910
|
+
} else if (eventType instanceof Event) {
|
|
911
|
+
__event__ = eventType;
|
|
912
|
+
addExtraProp(__event__, extraDetails);
|
|
888
913
|
}
|
|
889
914
|
|
|
890
915
|
$elList.forEach(($elItem) => {
|
|
@@ -892,31 +917,34 @@ class ElementEvent extends ElementAnimate {
|
|
|
892
917
|
const elementEvents: {
|
|
893
918
|
[key: string]: DOMUtilsEventListenerOptionsAttribute[];
|
|
894
919
|
} = Reflect.get($elItem, GlobalData.domEventSymbol) || {};
|
|
895
|
-
|
|
896
|
-
|
|
897
|
-
|
|
898
|
-
|
|
899
|
-
|
|
900
|
-
// 构造事件
|
|
901
|
-
event = new Event(eventTypeItem);
|
|
902
|
-
if (typeof extraDetails === "object" && extraDetails != null) {
|
|
903
|
-
const detailKeys = Object.keys(extraDetails);
|
|
904
|
-
detailKeys.forEach((keyName) => {
|
|
905
|
-
const value = Reflect.get(extraDetails, keyName);
|
|
906
|
-
// 在event上添加属性
|
|
907
|
-
Reflect.set(event, keyName, value);
|
|
908
|
-
});
|
|
909
|
-
}
|
|
910
|
-
}
|
|
920
|
+
|
|
921
|
+
/**
|
|
922
|
+
* 触发事件
|
|
923
|
+
*/
|
|
924
|
+
const dispatchEvent = (event: Event, eventTypeItem: string) => {
|
|
911
925
|
if (useDispatchToTriggerEvent == false && eventTypeItem in elementEvents) {
|
|
912
|
-
//
|
|
926
|
+
// 直接调用.on监听的事件
|
|
913
927
|
elementEvents[eventTypeItem].forEach((eventsItem) => {
|
|
914
928
|
eventsItem.handlerCallBack(event);
|
|
915
929
|
});
|
|
916
930
|
} else {
|
|
917
931
|
$elItem.dispatchEvent(event);
|
|
918
932
|
}
|
|
919
|
-
}
|
|
933
|
+
};
|
|
934
|
+
|
|
935
|
+
if (__event__) {
|
|
936
|
+
// 使用主动传递的事件直接触发
|
|
937
|
+
const event = __event__;
|
|
938
|
+
const eventTypeItem = event.type;
|
|
939
|
+
dispatchEvent(event, eventTypeItem);
|
|
940
|
+
} else {
|
|
941
|
+
eventTypeList.forEach((eventTypeItem) => {
|
|
942
|
+
// 构造事件
|
|
943
|
+
const event = new Event(eventTypeItem);
|
|
944
|
+
addExtraProp(event, extraDetails);
|
|
945
|
+
dispatchEvent(event, eventTypeItem);
|
|
946
|
+
});
|
|
947
|
+
}
|
|
920
948
|
});
|
|
921
949
|
}
|
|
922
950
|
|