@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.amd.js +123 -52
- 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 +123 -52
- 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 +123 -52
- 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 +123 -52
- 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 +123 -52
- 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 +123 -52
- 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 +24 -10
- package/dist/types/src/utils/PopsDOMUtils.d.ts +71 -21
- package/dist/types/src/utils/PopsUtils.d.ts +13 -0
- package/package.json +2 -1
- package/src/components/iframe/index.ts +2 -3
- package/src/handler/PopsHandler.ts +2 -2
- package/src/utils/PopsDOMUtils.ts +189 -67
- package/src/utils/PopsUtils.ts +17 -0
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 =
|
|
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 =
|
|
1098
|
+
element = this.selector(element);
|
|
1084
1099
|
}
|
|
1085
1100
|
if (element == null) {
|
|
1086
1101
|
return;
|
|
1087
1102
|
}
|
|
1088
1103
|
if (handler == null) {
|
|
1089
|
-
|
|
1104
|
+
this.emit(element, "click", details, useDispatchToEmitEvent);
|
|
1090
1105
|
}
|
|
1091
1106
|
else {
|
|
1092
|
-
|
|
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 =
|
|
1127
|
+
element = this.selector(element);
|
|
1113
1128
|
}
|
|
1114
1129
|
if (element == null) {
|
|
1115
1130
|
return;
|
|
1116
1131
|
}
|
|
1117
1132
|
if (handler === null) {
|
|
1118
|
-
|
|
1133
|
+
this.emit(element, "blur", details, useDispatchToEmitEvent);
|
|
1119
1134
|
}
|
|
1120
1135
|
else {
|
|
1121
|
-
|
|
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 =
|
|
1156
|
+
element = this.selector(element);
|
|
1142
1157
|
}
|
|
1143
1158
|
if (element == null) {
|
|
1144
1159
|
return;
|
|
1145
1160
|
}
|
|
1146
1161
|
if (handler == null) {
|
|
1147
|
-
|
|
1162
|
+
this.emit(element, "focus", details, useDispatchToEmitEvent);
|
|
1148
1163
|
}
|
|
1149
1164
|
else {
|
|
1150
|
-
|
|
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
|
|
1184
|
+
const that = this;
|
|
1169
1185
|
if (typeof element === "string") {
|
|
1170
|
-
element =
|
|
1186
|
+
element = that.selectorAll(element);
|
|
1171
1187
|
}
|
|
1172
1188
|
if (element == null) {
|
|
1173
1189
|
return;
|
|
1174
1190
|
}
|
|
1175
|
-
|
|
1176
|
-
|
|
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 =
|
|
1238
|
+
target = this.selector(target);
|
|
1200
1239
|
}
|
|
1201
|
-
|
|
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 =
|
|
1263
|
+
target = this.selector(target);
|
|
1225
1264
|
}
|
|
1226
|
-
|
|
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 =
|
|
1288
|
+
target = this.selector(target);
|
|
1250
1289
|
}
|
|
1251
|
-
|
|
1290
|
+
const listener = this.on(target, "keypress", handler, option);
|
|
1291
|
+
return listener;
|
|
1252
1292
|
}
|
|
1253
|
-
preventEvent(
|
|
1254
|
-
|
|
1255
|
-
|
|
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 (
|
|
1308
|
+
};
|
|
1309
|
+
if (args[0] instanceof Event) {
|
|
1264
1310
|
// 直接阻止事件
|
|
1265
|
-
|
|
1266
|
-
return stopEvent(
|
|
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
|
-
|
|
1274
|
-
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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,
|
|
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)
|
|
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 =
|
|
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.
|
|
13371
|
+
const version = "3.3.3";
|
|
13301
13372
|
|
|
13302
13373
|
class Pops {
|
|
13303
13374
|
/** 配置 */
|