@whitesev/pops 3.3.1 → 3.3.3

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.esm.js CHANGED
@@ -291,6 +291,13 @@ class PopsUtils {
291
291
  isDOM(target) {
292
292
  return target instanceof Node;
293
293
  }
294
+ /**
295
+ * 判断是否是元素列表
296
+ * @param $ele
297
+ */
298
+ isNodeList($ele) {
299
+ return Array.isArray($ele) || $ele instanceof NodeList;
300
+ }
294
301
  /**
295
302
  * 删除对象上的属性
296
303
  * @param target
@@ -475,9 +482,18 @@ class PopsUtils {
475
482
  result = addType ? result + resultType.toString() : parseFloat(result.toString());
476
483
  return result;
477
484
  }
485
+ /**
486
+ * https://github.com/any86/any-touch/blob/master/README.CN.md
487
+ */
478
488
  AnyTouch = () => {
479
489
  return i;
480
490
  };
491
+ /**
492
+ * `any-touch`的`doubletap`事件插件
493
+ */
494
+ AnyTouchDoubleTapPlugin = () => {
495
+ return e;
496
+ };
481
497
  /**
482
498
  * 通过navigator.userAgent判断是否是手机访问
483
499
  * @param userAgent
@@ -1014,7 +1030,7 @@ class PopsDOMUtilsEvent {
1014
1030
  */
1015
1031
  emit(element, eventType, details, useDispatchToEmitEvent = true) {
1016
1032
  if (typeof element === "string") {
1017
- element = PopsCore.document.querySelector(element);
1033
+ element = this.selector(element);
1018
1034
  }
1019
1035
  if (element == null) {
1020
1036
  return;
@@ -1076,18 +1092,18 @@ class PopsDOMUtilsEvent {
1076
1092
  * })
1077
1093
  * */
1078
1094
  click(element, handler, details, useDispatchToEmitEvent) {
1079
- const DOMUtilsContext = this;
1080
1095
  if (typeof element === "string") {
1081
- element = PopsCore.document.querySelector(element);
1096
+ element = this.selector(element);
1082
1097
  }
1083
1098
  if (element == null) {
1084
1099
  return;
1085
1100
  }
1086
1101
  if (handler == null) {
1087
- DOMUtilsContext.emit(element, "click", details, useDispatchToEmitEvent);
1102
+ this.emit(element, "click", details, useDispatchToEmitEvent);
1088
1103
  }
1089
1104
  else {
1090
- DOMUtilsContext.on(element, "click", null, handler);
1105
+ const listener = this.on(element, "click", handler);
1106
+ return listener;
1091
1107
  }
1092
1108
  }
1093
1109
  /**
@@ -1105,18 +1121,18 @@ class PopsDOMUtilsEvent {
1105
1121
  * })
1106
1122
  * */
1107
1123
  blur(element, handler, details, useDispatchToEmitEvent) {
1108
- const DOMUtilsContext = this;
1109
1124
  if (typeof element === "string") {
1110
- element = PopsCore.document.querySelector(element);
1125
+ element = this.selector(element);
1111
1126
  }
1112
1127
  if (element == null) {
1113
1128
  return;
1114
1129
  }
1115
1130
  if (handler === null) {
1116
- DOMUtilsContext.emit(element, "blur", details, useDispatchToEmitEvent);
1131
+ this.emit(element, "blur", details, useDispatchToEmitEvent);
1117
1132
  }
1118
1133
  else {
1119
- DOMUtilsContext.on(element, "blur", null, handler);
1134
+ const listener = this.on(element, "blur", handler);
1135
+ return listener;
1120
1136
  }
1121
1137
  }
1122
1138
  /**
@@ -1134,18 +1150,18 @@ class PopsDOMUtilsEvent {
1134
1150
  * })
1135
1151
  * */
1136
1152
  focus(element, handler, details, useDispatchToEmitEvent) {
1137
- const DOMUtilsContext = this;
1138
1153
  if (typeof element === "string") {
1139
- element = PopsCore.document.querySelector(element);
1154
+ element = this.selector(element);
1140
1155
  }
1141
1156
  if (element == null) {
1142
1157
  return;
1143
1158
  }
1144
1159
  if (handler == null) {
1145
- DOMUtilsContext.emit(element, "focus", details, useDispatchToEmitEvent);
1160
+ this.emit(element, "focus", details, useDispatchToEmitEvent);
1146
1161
  }
1147
1162
  else {
1148
- DOMUtilsContext.on(element, "focus", null, handler);
1163
+ const listener = this.on(element, "focus", handler);
1164
+ return listener;
1149
1165
  }
1150
1166
  }
1151
1167
  /**
@@ -1163,15 +1179,39 @@ class PopsDOMUtilsEvent {
1163
1179
  * })
1164
1180
  */
1165
1181
  onHover(element, handler, option) {
1166
- const DOMUtilsContext = this;
1182
+ const that = this;
1167
1183
  if (typeof element === "string") {
1168
- element = PopsCore.document.querySelector(element);
1184
+ element = that.selectorAll(element);
1169
1185
  }
1170
1186
  if (element == null) {
1171
1187
  return;
1172
1188
  }
1173
- DOMUtilsContext.on(element, "mouseenter", null, handler, option);
1174
- DOMUtilsContext.on(element, "mouseleave", null, handler, option);
1189
+ if (popsUtils.isNodeList(element)) {
1190
+ // 设置
1191
+ const listenerList = [];
1192
+ element.forEach(($ele) => {
1193
+ const listener = that.onHover($ele, handler, option);
1194
+ listenerList.push(listener);
1195
+ });
1196
+ return {
1197
+ off() {
1198
+ listenerList.forEach((listener) => {
1199
+ if (!listener) {
1200
+ return;
1201
+ }
1202
+ listener.off();
1203
+ });
1204
+ },
1205
+ };
1206
+ }
1207
+ const mouseenter_listener = that.on(element, "mouseenter", null, handler, option);
1208
+ const mouseleave_listener = that.on(element, "mouseleave", null, handler, option);
1209
+ return {
1210
+ off() {
1211
+ mouseenter_listener.off();
1212
+ mouseleave_listener.off();
1213
+ },
1214
+ };
1175
1215
  }
1176
1216
  /**
1177
1217
  * 当按键松开时触发事件
@@ -1189,14 +1229,14 @@ class PopsDOMUtilsEvent {
1189
1229
  * })
1190
1230
  */
1191
1231
  onKeyup(target, handler, option) {
1192
- const DOMUtilsContext = this;
1193
1232
  if (target == null) {
1194
1233
  return;
1195
1234
  }
1196
1235
  if (typeof target === "string") {
1197
- target = PopsCore.document.querySelector(target);
1236
+ target = this.selector(target);
1198
1237
  }
1199
- DOMUtilsContext.on(target, "keyup", null, handler, option);
1238
+ const listener = this.on(target, "keyup", handler, option);
1239
+ return listener;
1200
1240
  }
1201
1241
  /**
1202
1242
  * 当按键按下时触发事件
@@ -1214,14 +1254,14 @@ class PopsDOMUtilsEvent {
1214
1254
  * })
1215
1255
  */
1216
1256
  onKeydown(target, handler, option) {
1217
- const DOMUtilsContext = this;
1218
1257
  if (target == null) {
1219
1258
  return;
1220
1259
  }
1221
1260
  if (typeof target === "string") {
1222
- target = PopsCore.document.querySelector(target);
1261
+ target = this.selector(target);
1223
1262
  }
1224
- DOMUtilsContext.on(target, "keydown", null, handler, option);
1263
+ const listener = this.on(target, "keydown", handler, option);
1264
+ return listener;
1225
1265
  }
1226
1266
  /**
1227
1267
  * 当按键按下时触发事件
@@ -1239,38 +1279,69 @@ class PopsDOMUtilsEvent {
1239
1279
  * })
1240
1280
  */
1241
1281
  onKeypress(target, handler, option) {
1242
- const DOMUtilsContext = this;
1243
1282
  if (target == null) {
1244
1283
  return;
1245
1284
  }
1246
1285
  if (typeof target === "string") {
1247
- target = PopsCore.document.querySelector(target);
1286
+ target = this.selector(target);
1248
1287
  }
1249
- DOMUtilsContext.on(target, "keypress", null, handler, option);
1288
+ const listener = this.on(target, "keypress", handler, option);
1289
+ return listener;
1250
1290
  }
1251
- preventEvent(element, eventNameList = [], capture) {
1252
- function stopEvent(event) {
1253
- // 阻止事件的默认行为发生。例如,当点击一个链接时,浏览器会默认打开链接的URL
1291
+ preventEvent(...args) {
1292
+ /**
1293
+ * 阻止事件的默认行为发生,并阻止事件传播
1294
+ */
1295
+ const stopEvent = (event, onlyStopPropagation) => {
1296
+ if (typeof onlyStopPropagation === "boolean" && onlyStopPropagation) {
1297
+ // 停止事件的传播,阻止它继续向更上层的元素冒泡,事件将不会再传播给其他的元素
1298
+ event?.stopPropagation();
1299
+ // 阻止事件传播,并且还能阻止元素上的其他事件处理程序被触发
1300
+ event?.stopImmediatePropagation();
1301
+ return;
1302
+ }
1303
+ // 阻止事件的默认行为发生。例如,当点击一个链接时,浏览器会默认打开链接的URL,或者在输入框内输入文字
1254
1304
  event?.preventDefault();
1255
- // 停止事件的传播,阻止它继续向更上层的元素冒泡,事件将不会再传播给其他的元素
1256
- event?.stopPropagation();
1257
- // 阻止事件传播,并且还能阻止元素上的其他事件处理程序被触发
1258
- event?.stopImmediatePropagation();
1259
1305
  return false;
1260
- }
1261
- if (arguments.length === 1) {
1306
+ };
1307
+ if (args[0] instanceof Event) {
1262
1308
  // 直接阻止事件
1263
- // eslint-disable-next-line prefer-rest-params
1264
- return stopEvent(arguments[0]);
1309
+ const onlyStopPropagation = args[1];
1310
+ return stopEvent(args[0], onlyStopPropagation);
1265
1311
  }
1266
1312
  else {
1313
+ const $el = args[0];
1314
+ let eventNameList = args[1];
1315
+ let selector = void 0;
1316
+ let capture = false;
1317
+ let onlyStopPropagation = false;
1267
1318
  // 添加对应的事件来阻止触发
1268
1319
  if (typeof eventNameList === "string") {
1269
1320
  eventNameList = [eventNameList];
1270
1321
  }
1271
- eventNameList.forEach((eventName) => {
1272
- this.on(element, eventName, stopEvent, { capture: Boolean(capture) });
1273
- });
1322
+ let option = void 0;
1323
+ if (typeof args[2] === "string" || Array.isArray(args[2])) {
1324
+ // selector
1325
+ selector = args[2];
1326
+ if (typeof args[3] === "object" && args[3] != null) {
1327
+ option = args[3];
1328
+ }
1329
+ }
1330
+ else if (typeof args[2] === "object" && args[2] != null && !Array.isArray(args[2])) {
1331
+ // option
1332
+ option = args[2];
1333
+ }
1334
+ else {
1335
+ throw new TypeError("Invalid argument");
1336
+ }
1337
+ if (option) {
1338
+ capture = Boolean(option.capture);
1339
+ onlyStopPropagation = Boolean(option.onlyStopPropagation);
1340
+ }
1341
+ const listener = this.on($el, eventNameList, selector, (evt) => {
1342
+ return stopEvent(evt, onlyStopPropagation);
1343
+ }, { capture: capture });
1344
+ return listener;
1274
1345
  }
1275
1346
  }
1276
1347
  selector(selector) {
@@ -1456,7 +1527,7 @@ class PopsDOMUtils extends PopsDOMUtilsEvent {
1456
1527
  width(element, isShow = false, parent) {
1457
1528
  const DOMUtilsContext = this;
1458
1529
  if (typeof element === "string") {
1459
- element = PopsCore.document.querySelector(element);
1530
+ element = this.selector(element);
1460
1531
  }
1461
1532
  if (element == null) {
1462
1533
  return;
@@ -1507,7 +1578,7 @@ class PopsDOMUtils extends PopsDOMUtilsEvent {
1507
1578
  return PopsCore.window.document.documentElement.clientHeight;
1508
1579
  }
1509
1580
  if (typeof element === "string") {
1510
- element = PopsCore.document.querySelector(element);
1581
+ element = this.selector(element);
1511
1582
  }
1512
1583
  if (element == null) {
1513
1584
  return;
@@ -1555,7 +1626,7 @@ class PopsDOMUtils extends PopsDOMUtilsEvent {
1555
1626
  return PopsCore.window.innerWidth;
1556
1627
  }
1557
1628
  if (typeof element === "string") {
1558
- element = PopsCore.document.querySelector(element);
1629
+ element = this.selector(element);
1559
1630
  }
1560
1631
  if (element == null) {
1561
1632
  return;
@@ -1580,7 +1651,7 @@ class PopsDOMUtils extends PopsDOMUtilsEvent {
1580
1651
  return PopsCore.window.innerHeight;
1581
1652
  }
1582
1653
  if (typeof element === "string") {
1583
- element = PopsCore.document.querySelector(element);
1654
+ element = this.selector(element);
1584
1655
  }
1585
1656
  element = element;
1586
1657
  if (isShow || (!isShow && popsDOMUtils.isShow(element))) {
@@ -2002,12 +2073,12 @@ class PopsDOMUtils extends PopsDOMUtilsEvent {
2002
2073
  * @param content 子元素或HTML字符串
2003
2074
  * @example
2004
2075
  * // 元素a.xx的内部末尾添加一个元素
2005
- * DOMUtils.append(document.querySelector("a.xx"),document.querySelector("b.xx"))
2076
+ * DOMUtils.append(document.querySelector("a.xx"), document.querySelector("b.xx"))
2006
2077
  * DOMUtils.append("a.xx","'<b class="xx"></b>")
2007
2078
  * */
2008
2079
  append(element, content) {
2009
2080
  if (typeof element === "string") {
2010
- element = PopsCore.document.querySelector(element);
2081
+ element = this.selector(element);
2011
2082
  }
2012
2083
  if (element == null) {
2013
2084
  return;
@@ -2143,7 +2214,7 @@ class PopsDOMUtils extends PopsDOMUtilsEvent {
2143
2214
  * */
2144
2215
  before(element, content) {
2145
2216
  if (typeof element === "string") {
2146
- element = PopsCore.document.querySelector(element);
2217
+ element = this.selector(element);
2147
2218
  }
2148
2219
  if (element == null) {
2149
2220
  return;
@@ -2166,7 +2237,7 @@ class PopsDOMUtils extends PopsDOMUtilsEvent {
2166
2237
  * */
2167
2238
  after(element, content) {
2168
2239
  if (typeof element === "string") {
2169
- element = PopsCore.document.querySelector(element);
2240
+ element = this.selector(element);
2170
2241
  }
2171
2242
  if (element == null) {
2172
2243
  return;
@@ -3531,14 +3602,14 @@ const PopsHandler = {
3531
3602
  element.hasAttribute("anim"));
3532
3603
  }
3533
3604
  // 判断按下的元素是否是pops-anim
3534
- popsDOMUtils.on(config.animElement, ["touchstart", "mousedown"], (event) => {
3605
+ popsDOMUtils.on(config.animElement, "pointerup", (event) => {
3535
3606
  const $click = event.composedPath()[0];
3536
3607
  isMaskClick = isAnimElement($click);
3537
3608
  });
3538
3609
  // 如果有动画层,在动画层上监听点击事件
3539
3610
  popsDOMUtils.on(config.animElement, "click", (event) => {
3540
3611
  const $click = event.composedPath()[0];
3541
- if (isAnimElement($click) && isMaskClick) {
3612
+ if (isMaskClick && isAnimElement($click)) {
3542
3613
  return clickEvent(event);
3543
3614
  }
3544
3615
  });
@@ -5817,7 +5888,7 @@ const PopsIframe = {
5817
5888
  */
5818
5889
  const $anim = PopsElementHandler.parseElement(animHTML);
5819
5890
  const { $pops: $pops, $headerBtnClose: headerCloseBtnElement, $headerControls: headerControlsElement, $title: $title, $iframe: $iframe, $loading: loadingElement, $contentLoading: $contentLoading, $headerBtnMin: headerMinBtnElement, $headerBtnMax: headerMaxBtnElement, $headerBtnMise: headerMiseBtnElement, } = PopsHandler.handleQueryElement($anim, popsType);
5820
- let $iframeContainer = PopsCore.document.querySelector(".pops-iframe-container");
5891
+ let $iframeContainer = popsDOMUtils.selector(".pops-iframe-container");
5821
5892
  if (!$iframeContainer) {
5822
5893
  $iframeContainer = popsDOMUtils.createElement("div", {
5823
5894
  className: "pops-iframe-container",
@@ -13295,7 +13366,7 @@ const PopsSearchSuggestion = {
13295
13366
  },
13296
13367
  };
13297
13368
 
13298
- const version = "3.3.1";
13369
+ const version = "3.3.3";
13299
13370
 
13300
13371
  class Pops {
13301
13372
  /** 配置 */