@whitesev/domutils 1.3.4 → 1.3.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.
@@ -1,6 +1,8 @@
1
+ import { isNodeList } from "./DOMUtils";
1
2
  import { DOMUtilsCommonUtils } from "./DOMUtilsCommonUtils";
2
3
  import { DOMUtilsData } from "./DOMUtilsData";
3
4
  import { OriginPrototype } from "./DOMUtilsOriginPrototype";
5
+ import type { DOMUtilsTargetElementType } from "./types/global";
4
6
  import { UtilsWindowApiOption, WindowApi } from "./WindowApi";
5
7
 
6
8
  export type DOMUtilsEventObject<T extends Node> = Event & {
@@ -913,7 +915,12 @@ export class DOMUtilsEvent {
913
915
  * DOMUtils.trigger("a.xx",["click","tap","hover"])
914
916
  */
915
917
  trigger(
916
- element: HTMLElement | string | NodeList | any[] | Window | Document,
918
+ element:
919
+ | DOMUtilsTargetElementType
920
+ | any[]
921
+ | typeof globalThis
922
+ | Window
923
+ | Document,
917
924
  eventType: string,
918
925
  details?: object,
919
926
  useDispatchToTriggerEvent?: boolean
@@ -1022,20 +1029,30 @@ export class DOMUtilsEvent {
1022
1029
  * })
1023
1030
  * */
1024
1031
  click(
1025
- element: HTMLElement | string | Window,
1032
+ element: DOMUtilsTargetElementType | typeof globalThis | Window,
1026
1033
  handler?: (event: DOMUtils_Event["click"]) => void,
1027
1034
  details?: any,
1028
1035
  useDispatchToTriggerEvent?: boolean
1029
1036
  ) {
1030
1037
  let DOMUtilsContext = this;
1031
1038
  if (typeof element === "string") {
1032
- element = DOMUtilsContext.windowApi.document.querySelector(
1033
- element
1034
- ) as HTMLElement;
1039
+ element = DOMUtilsContext.windowApi.document.querySelectorAll(element);
1035
1040
  }
1036
1041
  if (element == null) {
1037
1042
  return;
1038
1043
  }
1044
+ if (isNodeList(element)) {
1045
+ // 设置
1046
+ element.forEach(($ele) => {
1047
+ DOMUtilsContext.click(
1048
+ $ele as HTMLElement,
1049
+ handler,
1050
+ details,
1051
+ useDispatchToTriggerEvent
1052
+ );
1053
+ });
1054
+ return;
1055
+ }
1039
1056
  if (handler == null) {
1040
1057
  DOMUtilsContext.trigger(
1041
1058
  element,
@@ -1062,7 +1079,7 @@ export class DOMUtilsEvent {
1062
1079
  * })
1063
1080
  * */
1064
1081
  blur(
1065
- element: HTMLElement | string | Window,
1082
+ element: DOMUtilsTargetElementType | typeof globalThis | Window,
1066
1083
  handler?: (event: DOMUtils_Event["blur"]) => void,
1067
1084
  details?: object,
1068
1085
  useDispatchToTriggerEvent?: boolean
@@ -1076,6 +1093,18 @@ export class DOMUtilsEvent {
1076
1093
  if (element == null) {
1077
1094
  return;
1078
1095
  }
1096
+ if (isNodeList(element)) {
1097
+ // 设置
1098
+ element.forEach(($ele) => {
1099
+ DOMUtilsContext.focus(
1100
+ $ele as HTMLElement,
1101
+ handler,
1102
+ details,
1103
+ useDispatchToTriggerEvent
1104
+ );
1105
+ });
1106
+ return;
1107
+ }
1079
1108
  if (handler === null) {
1080
1109
  DOMUtilsContext.trigger(
1081
1110
  element,
@@ -1107,20 +1136,30 @@ export class DOMUtilsEvent {
1107
1136
  * })
1108
1137
  * */
1109
1138
  focus(
1110
- element: HTMLElement | string | Window,
1139
+ element: DOMUtilsTargetElementType | typeof globalThis | Window,
1111
1140
  handler?: (event: DOMUtils_Event["focus"]) => void,
1112
1141
  details?: object,
1113
1142
  useDispatchToTriggerEvent?: boolean
1114
1143
  ) {
1115
1144
  let DOMUtilsContext = this;
1116
1145
  if (typeof element === "string") {
1117
- element = DOMUtilsContext.windowApi.document.querySelector(
1118
- element
1119
- ) as HTMLElement;
1146
+ element = DOMUtilsContext.windowApi.document.querySelectorAll(element);
1120
1147
  }
1121
1148
  if (element == null) {
1122
1149
  return;
1123
1150
  }
1151
+ if (isNodeList(element)) {
1152
+ // 设置
1153
+ element.forEach(($ele) => {
1154
+ DOMUtilsContext.focus(
1155
+ $ele as HTMLElement,
1156
+ handler,
1157
+ details,
1158
+ useDispatchToTriggerEvent
1159
+ );
1160
+ });
1161
+ return;
1162
+ }
1124
1163
  if (handler == null) {
1125
1164
  DOMUtilsContext.trigger(
1126
1165
  element,
@@ -1147,26 +1186,31 @@ export class DOMUtilsEvent {
1147
1186
  * })
1148
1187
  */
1149
1188
  hover(
1150
- element: HTMLElement | string,
1189
+ element: DOMUtilsTargetElementType,
1151
1190
  handler: (event: DOMUtils_Event["hover"]) => void,
1152
1191
  option?: boolean | AddEventListenerOptions
1153
1192
  ) {
1154
1193
  let DOMUtilsContext = this;
1155
1194
  if (typeof element === "string") {
1156
- element = DOMUtilsContext.windowApi.document.querySelector(
1157
- element
1158
- ) as HTMLElement;
1195
+ element = DOMUtilsContext.windowApi.document.querySelectorAll(element);
1159
1196
  }
1160
1197
  if (element == null) {
1161
1198
  return;
1162
1199
  }
1200
+ if (isNodeList(element)) {
1201
+ // 设置
1202
+ element.forEach(($ele) => {
1203
+ DOMUtilsContext.hover($ele as HTMLElement, handler, option);
1204
+ });
1205
+ return;
1206
+ }
1163
1207
  DOMUtilsContext.on(element, "mouseenter", null, handler, option);
1164
1208
  DOMUtilsContext.on(element, "mouseleave", null, handler, option);
1165
1209
  }
1166
1210
  /**
1167
1211
  * 当按键松开时触发事件
1168
1212
  * keydown - > keypress - > keyup
1169
- * @param target 当前元素
1213
+ * @param element 当前元素
1170
1214
  * @param handler 事件处理函数
1171
1215
  * @param option 配置
1172
1216
  * @example
@@ -1179,25 +1223,30 @@ export class DOMUtilsEvent {
1179
1223
  * })
1180
1224
  */
1181
1225
  keyup(
1182
- target: HTMLElement | string | Window | typeof globalThis,
1226
+ element: DOMUtilsTargetElementType | Window | typeof globalThis,
1183
1227
  handler: (event: DOMUtils_Event["keyup"]) => void,
1184
1228
  option?: boolean | AddEventListenerOptions
1185
1229
  ) {
1186
1230
  let DOMUtilsContext = this;
1187
- if (target == null) {
1231
+ if (element == null) {
1188
1232
  return;
1189
1233
  }
1190
- if (typeof target === "string") {
1191
- target = DOMUtilsContext.windowApi.document.querySelector(
1192
- target
1193
- ) as HTMLElement;
1234
+ if (typeof element === "string") {
1235
+ element = DOMUtilsContext.windowApi.document.querySelectorAll(element);
1194
1236
  }
1195
- DOMUtilsContext.on(target, "keyup", null, handler, option);
1237
+ if (isNodeList(element)) {
1238
+ // 设置
1239
+ element.forEach(($ele) => {
1240
+ DOMUtilsContext.keyup($ele as HTMLElement, handler, option);
1241
+ });
1242
+ return;
1243
+ }
1244
+ DOMUtilsContext.on(element, "keyup", null, handler, option);
1196
1245
  }
1197
1246
  /**
1198
1247
  * 当按键按下时触发事件
1199
1248
  * keydown - > keypress - > keyup
1200
- * @param target 目标
1249
+ * @param element 目标
1201
1250
  * @param handler 事件处理函数
1202
1251
  * @param option 配置
1203
1252
  * @example
@@ -1210,25 +1259,30 @@ export class DOMUtilsEvent {
1210
1259
  * })
1211
1260
  */
1212
1261
  keydown(
1213
- target: HTMLElement | Window | typeof globalThis | string,
1262
+ element: DOMUtilsTargetElementType | Window | typeof globalThis,
1214
1263
  handler: (event: DOMUtils_Event["keydown"]) => void,
1215
1264
  option?: boolean | AddEventListenerOptions
1216
1265
  ) {
1217
1266
  let DOMUtilsContext = this;
1218
- if (target == null) {
1267
+ if (element == null) {
1219
1268
  return;
1220
1269
  }
1221
- if (typeof target === "string") {
1222
- target = DOMUtilsContext.windowApi.document.querySelector(
1223
- target
1224
- ) as HTMLElement;
1270
+ if (typeof element === "string") {
1271
+ element = DOMUtilsContext.windowApi.document.querySelectorAll(element);
1225
1272
  }
1226
- DOMUtilsContext.on(target, "keydown", null, handler, option);
1273
+ if (isNodeList(element)) {
1274
+ // 设置
1275
+ element.forEach(($ele) => {
1276
+ DOMUtilsContext.keydown($ele as HTMLElement, handler, option);
1277
+ });
1278
+ return;
1279
+ }
1280
+ DOMUtilsContext.on(element, "keydown", null, handler, option);
1227
1281
  }
1228
1282
  /**
1229
1283
  * 当按键按下时触发事件
1230
1284
  * keydown - > keypress - > keyup
1231
- * @param target 目标
1285
+ * @param element 目标
1232
1286
  * @param handler 事件处理函数
1233
1287
  * @param option 配置
1234
1288
  * @example
@@ -1241,26 +1295,31 @@ export class DOMUtilsEvent {
1241
1295
  * })
1242
1296
  */
1243
1297
  keypress(
1244
- target: HTMLElement | Window | typeof globalThis | string,
1298
+ element: DOMUtilsTargetElementType | Window | typeof globalThis,
1245
1299
  handler: (event: DOMUtils_Event["keypress"]) => void,
1246
1300
  option?: boolean | AddEventListenerOptions
1247
1301
  ) {
1248
1302
  let DOMUtilsContext = this;
1249
- if (target == null) {
1303
+ if (element == null) {
1250
1304
  return;
1251
1305
  }
1252
- if (typeof target === "string") {
1253
- target = DOMUtilsContext.windowApi.document.querySelector(
1254
- target
1255
- ) as HTMLElement;
1306
+ if (typeof element === "string") {
1307
+ element = DOMUtilsContext.windowApi.document.querySelectorAll(element);
1256
1308
  }
1257
- DOMUtilsContext.on(target, "keypress", null, handler, option);
1309
+ if (isNodeList(element)) {
1310
+ // 设置
1311
+ element.forEach(($ele) => {
1312
+ DOMUtilsContext.keypress($ele as HTMLElement, handler, option);
1313
+ });
1314
+ return;
1315
+ }
1316
+ DOMUtilsContext.on(element, "keypress", null, handler, option);
1258
1317
  }
1259
1318
 
1260
1319
  /**
1261
1320
  * 监听某个元素键盘按键事件或window全局按键事件
1262
1321
  * 按下有值的键时触发,按下Ctrl\Alt\Shift\Meta是无值键。按下先触发keydown事件,再触发keypress事件。
1263
- * @param target 需要监听的对象,可以是全局Window或者某个元素
1322
+ * @param element 需要监听的对象,可以是全局Window或者某个元素
1264
1323
  * @param eventName 事件名,默认keypress
1265
1324
  * @param callback 自己定义的回调事件,参数1为当前的key,参数2为组合按键,数组类型,包含ctrl、shift、alt和meta(win键或mac的cmd键)
1266
1325
  * @param options 监听事件的配置
@@ -1321,7 +1380,7 @@ export class DOMUtilsEvent {
1321
1380
  收藏 171
1322
1381
  **/
1323
1382
  listenKeyboard(
1324
- target: Window | Node | HTMLElement | typeof globalThis,
1383
+ element: DOMUtilsTargetElementType | Window | Node | typeof globalThis,
1325
1384
  eventName: "keyup" | "keypress" | "keydown" = "keypress",
1326
1385
  callback: (
1327
1386
  keyName: string,
@@ -1333,6 +1392,10 @@ export class DOMUtilsEvent {
1333
1392
  ): {
1334
1393
  removeListen(): void;
1335
1394
  } {
1395
+ let DOMUtilsContext = this;
1396
+ if (typeof element === "string") {
1397
+ element = DOMUtilsContext.windowApi.document.querySelectorAll(element);
1398
+ }
1336
1399
  let keyboardEventCallBack = function (event: KeyboardEvent) {
1337
1400
  /** 键名 */
1338
1401
  let keyName = event.key || event.code;
@@ -1356,10 +1419,10 @@ export class DOMUtilsEvent {
1356
1419
  callback(keyName, keyValue, otherCodeList, event);
1357
1420
  }
1358
1421
  };
1359
- this.on(target, eventName, keyboardEventCallBack, options);
1422
+ DOMUtilsContext.on(element, eventName, keyboardEventCallBack, options);
1360
1423
  return {
1361
1424
  removeListen: () => {
1362
- this.off(target, eventName, keyboardEventCallBack, options);
1425
+ DOMUtilsContext.off(element, eventName, keyboardEventCallBack, options);
1363
1426
  },
1364
1427
  };
1365
1428
  }
@@ -3,3 +3,9 @@ export type ParseHTMLReturnType<T1, T2> = T1 extends true
3
3
  ? Document
4
4
  : HTMLElement
5
5
  : HTMLElement;
6
+
7
+ export type DOMUtilsTargetElementType =
8
+ | HTMLElement
9
+ | string
10
+ | NodeList
11
+ | HTMLElement[];