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