@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.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 =
|
|
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 =
|
|
1096
|
+
element = this.selector(element);
|
|
1082
1097
|
}
|
|
1083
1098
|
if (element == null) {
|
|
1084
1099
|
return;
|
|
1085
1100
|
}
|
|
1086
1101
|
if (handler == null) {
|
|
1087
|
-
|
|
1102
|
+
this.emit(element, "click", details, useDispatchToEmitEvent);
|
|
1088
1103
|
}
|
|
1089
1104
|
else {
|
|
1090
|
-
|
|
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 =
|
|
1125
|
+
element = this.selector(element);
|
|
1111
1126
|
}
|
|
1112
1127
|
if (element == null) {
|
|
1113
1128
|
return;
|
|
1114
1129
|
}
|
|
1115
1130
|
if (handler === null) {
|
|
1116
|
-
|
|
1131
|
+
this.emit(element, "blur", details, useDispatchToEmitEvent);
|
|
1117
1132
|
}
|
|
1118
1133
|
else {
|
|
1119
|
-
|
|
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 =
|
|
1154
|
+
element = this.selector(element);
|
|
1140
1155
|
}
|
|
1141
1156
|
if (element == null) {
|
|
1142
1157
|
return;
|
|
1143
1158
|
}
|
|
1144
1159
|
if (handler == null) {
|
|
1145
|
-
|
|
1160
|
+
this.emit(element, "focus", details, useDispatchToEmitEvent);
|
|
1146
1161
|
}
|
|
1147
1162
|
else {
|
|
1148
|
-
|
|
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
|
|
1182
|
+
const that = this;
|
|
1167
1183
|
if (typeof element === "string") {
|
|
1168
|
-
element =
|
|
1184
|
+
element = that.selectorAll(element);
|
|
1169
1185
|
}
|
|
1170
1186
|
if (element == null) {
|
|
1171
1187
|
return;
|
|
1172
1188
|
}
|
|
1173
|
-
|
|
1174
|
-
|
|
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 =
|
|
1236
|
+
target = this.selector(target);
|
|
1198
1237
|
}
|
|
1199
|
-
|
|
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 =
|
|
1261
|
+
target = this.selector(target);
|
|
1223
1262
|
}
|
|
1224
|
-
|
|
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 =
|
|
1286
|
+
target = this.selector(target);
|
|
1248
1287
|
}
|
|
1249
|
-
|
|
1288
|
+
const listener = this.on(target, "keypress", handler, option);
|
|
1289
|
+
return listener;
|
|
1250
1290
|
}
|
|
1251
|
-
preventEvent(
|
|
1252
|
-
|
|
1253
|
-
|
|
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 (
|
|
1306
|
+
};
|
|
1307
|
+
if (args[0] instanceof Event) {
|
|
1262
1308
|
// 直接阻止事件
|
|
1263
|
-
|
|
1264
|
-
return stopEvent(
|
|
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
|
-
|
|
1272
|
-
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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,
|
|
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)
|
|
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 =
|
|
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.
|
|
13369
|
+
const version = "3.3.3";
|
|
13299
13370
|
|
|
13300
13371
|
class Pops {
|
|
13301
13372
|
/** 配置 */
|