@whitesev/domutils 1.5.6 → 1.5.7

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.umd.js CHANGED
@@ -464,6 +464,13 @@
464
464
  globalThis.clearInterval(timeId);
465
465
  }
466
466
  },
467
+ /**
468
+ * 判断是否是元素列表
469
+ * @param $ele
470
+ */
471
+ isNodeList($ele) {
472
+ return Array.isArray($ele) || $ele instanceof NodeList;
473
+ },
467
474
  };
468
475
 
469
476
  /* 数据 */
@@ -590,12 +597,12 @@
590
597
  : elementItem;
591
598
  let findValue = selectorList.find((selectorItem) => {
592
599
  // 判断目标元素是否匹配选择器
593
- if (eventTarget?.matches(selectorItem)) {
600
+ if (DOMUtilsContext.matches(eventTarget, selectorItem)) {
594
601
  /* 当前目标可以被selector所匹配到 */
595
602
  return true;
596
603
  }
597
604
  /* 在上层与主元素之间寻找可以被selector所匹配到的 */
598
- let $closestMatches = eventTarget?.closest(selectorItem);
605
+ let $closestMatches = DOMUtilsContext.closest(eventTarget, selectorItem);
599
606
  if ($closestMatches && totalParent?.contains($closestMatches)) {
600
607
  eventTarget = $closestMatches;
601
608
  return true;
@@ -977,7 +984,7 @@
977
984
  if (element == null) {
978
985
  return;
979
986
  }
980
- if (isNodeList(element)) {
987
+ if (DOMUtilsCommonUtils.isNodeList(element)) {
981
988
  // 设置
982
989
  element.forEach(($ele) => {
983
990
  DOMUtilsContext.click($ele, handler, details, useDispatchToTriggerEvent);
@@ -1013,7 +1020,7 @@
1013
1020
  if (element == null) {
1014
1021
  return;
1015
1022
  }
1016
- if (isNodeList(element)) {
1023
+ if (DOMUtilsCommonUtils.isNodeList(element)) {
1017
1024
  // 设置
1018
1025
  element.forEach(($ele) => {
1019
1026
  DOMUtilsContext.focus($ele, handler, details, useDispatchToTriggerEvent);
@@ -1049,7 +1056,7 @@
1049
1056
  if (element == null) {
1050
1057
  return;
1051
1058
  }
1052
- if (isNodeList(element)) {
1059
+ if (DOMUtilsCommonUtils.isNodeList(element)) {
1053
1060
  // 设置
1054
1061
  element.forEach(($ele) => {
1055
1062
  DOMUtilsContext.focus($ele, handler, details, useDispatchToTriggerEvent);
@@ -1085,7 +1092,7 @@
1085
1092
  if (element == null) {
1086
1093
  return;
1087
1094
  }
1088
- if (isNodeList(element)) {
1095
+ if (DOMUtilsCommonUtils.isNodeList(element)) {
1089
1096
  // 设置
1090
1097
  element.forEach(($ele) => {
1091
1098
  DOMUtilsContext.hover($ele, handler, option);
@@ -1118,7 +1125,7 @@
1118
1125
  if (typeof element === "string") {
1119
1126
  element = DOMUtilsContext.selectorAll(element);
1120
1127
  }
1121
- if (isNodeList(element)) {
1128
+ if (DOMUtilsCommonUtils.isNodeList(element)) {
1122
1129
  // 设置
1123
1130
  element.forEach(($ele) => {
1124
1131
  DOMUtilsContext.keyup($ele, handler, option);
@@ -1150,7 +1157,7 @@
1150
1157
  if (typeof element === "string") {
1151
1158
  element = DOMUtilsContext.selectorAll(element);
1152
1159
  }
1153
- if (isNodeList(element)) {
1160
+ if (DOMUtilsCommonUtils.isNodeList(element)) {
1154
1161
  // 设置
1155
1162
  element.forEach(($ele) => {
1156
1163
  DOMUtilsContext.keydown($ele, handler, option);
@@ -1182,7 +1189,7 @@
1182
1189
  if (typeof element === "string") {
1183
1190
  element = DOMUtilsContext.selectorAll(element);
1184
1191
  }
1185
- if (isNodeList(element)) {
1192
+ if (DOMUtilsCommonUtils.isNodeList(element)) {
1186
1193
  // 设置
1187
1194
  element.forEach(($ele) => {
1188
1195
  DOMUtilsContext.keypress($ele, handler, option);
@@ -1336,21 +1343,121 @@
1336
1343
  return Array.from(context.windowApi.document.querySelectorAll(selector));
1337
1344
  }
1338
1345
  }
1346
+ /**
1347
+ * 匹配元素,可使用以下的额外语法
1348
+ */
1349
+ matches($el, selector) {
1350
+ selector = selector.trim();
1351
+ if ($el == null) {
1352
+ return false;
1353
+ }
1354
+ if (selector.match(/[^\s]{1}:empty$/gi)) {
1355
+ // empty 语法
1356
+ selector = selector.replace(/:empty$/gi, "");
1357
+ return $el.matches(selector) && $el?.innerHTML?.trim() === "";
1358
+ }
1359
+ else if (selector.match(/[^\s]{1}:contains\("(.*)"\)$/i) ||
1360
+ selector.match(/[^\s]{1}:contains\('(.*)'\)$/i)) {
1361
+ // contains 语法
1362
+ let textMatch = selector.match(/:contains\(("|')(.*)("|')\)$/i);
1363
+ let text = textMatch[2];
1364
+ selector = selector.replace(/:contains\(("|')(.*)("|')\)$/gi, "");
1365
+ // @ts-ignore
1366
+ let content = $el?.textContent || $el?.innerText;
1367
+ if (typeof content !== "string") {
1368
+ content = "";
1369
+ }
1370
+ return $el.matches(selector) && content?.includes(text);
1371
+ }
1372
+ else if (selector.match(/[^\s]{1}:regexp\("(.*)"\)$/i) ||
1373
+ selector.match(/[^\s]{1}:regexp\('(.*)'\)$/i)) {
1374
+ // regexp 语法
1375
+ let textMatch = selector.match(/:regexp\(("|')(.*)("|')\)$/i);
1376
+ let pattern = textMatch[2];
1377
+ let flagMatch = pattern.match(/("|'),[\s]*("|')([igm]{0,3})$/i);
1378
+ let flags = "";
1379
+ if (flagMatch) {
1380
+ pattern = pattern.replace(/("|'),[\s]*("|')([igm]{0,3})$/gi, "");
1381
+ flags = flagMatch[3];
1382
+ }
1383
+ let regexp = new RegExp(pattern, flags);
1384
+ selector = selector.replace(/:regexp\(("|')(.*)("|')\)$/gi, "");
1385
+ // @ts-ignore
1386
+ let content = $el?.textContent || $el?.innerText;
1387
+ if (typeof content !== "string") {
1388
+ content = "";
1389
+ }
1390
+ return $el.matches(selector) && Boolean(content?.match(regexp));
1391
+ }
1392
+ else {
1393
+ // 普通语法
1394
+ return $el.matches(selector);
1395
+ }
1396
+ }
1397
+ closest($el, selector) {
1398
+ selector = selector.trim();
1399
+ if (selector.match(/[^\s]{1}:empty$/gi)) {
1400
+ // empty 语法
1401
+ selector = selector.replace(/:empty$/gi, "");
1402
+ let $closest = $el?.closest(selector);
1403
+ if ($closest && $closest?.innerHTML?.trim() === "") {
1404
+ return $closest;
1405
+ }
1406
+ return null;
1407
+ }
1408
+ else if (selector.match(/[^\s]{1}:contains\("(.*)"\)$/i) ||
1409
+ selector.match(/[^\s]{1}:contains\('(.*)'\)$/i)) {
1410
+ // contains 语法
1411
+ let textMatch = selector.match(/:contains\(("|')(.*)("|')\)$/i);
1412
+ let text = textMatch[2];
1413
+ selector = selector.replace(/:contains\(("|')(.*)("|')\)$/gi, "");
1414
+ let $closest = $el?.closest(selector);
1415
+ if ($closest) {
1416
+ // @ts-ignore
1417
+ let content = $el?.textContent || $el?.innerText;
1418
+ if (typeof content === "string" && content.includes(text)) {
1419
+ return $closest;
1420
+ }
1421
+ }
1422
+ return null;
1423
+ }
1424
+ else if (selector.match(/[^\s]{1}:regexp\("(.*)"\)$/i) ||
1425
+ selector.match(/[^\s]{1}:regexp\('(.*)'\)$/i)) {
1426
+ // regexp 语法
1427
+ let textMatch = selector.match(/:regexp\(("|')(.*)("|')\)$/i);
1428
+ let pattern = textMatch[2];
1429
+ let flagMatch = pattern.match(/("|'),[\s]*("|')([igm]{0,3})$/i);
1430
+ let flags = "";
1431
+ if (flagMatch) {
1432
+ pattern = pattern.replace(/("|'),[\s]*("|')([igm]{0,3})$/gi, "");
1433
+ flags = flagMatch[3];
1434
+ }
1435
+ let regexp = new RegExp(pattern, flags);
1436
+ selector = selector.replace(/:regexp\(("|')(.*)("|')\)$/gi, "");
1437
+ let $closest = $el?.closest(selector);
1438
+ if ($closest) {
1439
+ // @ts-ignore
1440
+ let content = $el?.textContent || $el?.innerText;
1441
+ if (typeof content === "string" && content.match(regexp)) {
1442
+ return $closest;
1443
+ }
1444
+ }
1445
+ return null;
1446
+ }
1447
+ else {
1448
+ // 普通语法
1449
+ let $closest = $el?.closest(selector);
1450
+ return $closest;
1451
+ }
1452
+ }
1339
1453
  }
1340
1454
 
1341
- /**
1342
- * 判断是否是元素列表
1343
- * @param $ele
1344
- */
1345
- const isNodeList = ($ele) => {
1346
- return Array.isArray($ele) || $ele instanceof NodeList;
1347
- };
1348
1455
  class DOMUtils extends DOMUtilsEvent {
1349
1456
  constructor(option) {
1350
1457
  super(option);
1351
1458
  }
1352
1459
  /** 版本号 */
1353
- version = "2025.5.26";
1460
+ version = "2025.5.30";
1354
1461
  attr(element, attrName, attrValue) {
1355
1462
  let DOMUtilsContext = this;
1356
1463
  if (typeof element === "string") {
@@ -1359,7 +1466,7 @@
1359
1466
  if (element == null) {
1360
1467
  return;
1361
1468
  }
1362
- if (isNodeList(element)) {
1469
+ if (DOMUtilsCommonUtils.isNodeList(element)) {
1363
1470
  if (attrValue == null) {
1364
1471
  // 获取属性
1365
1472
  return DOMUtilsContext.attr(element[0], attrName, attrValue);
@@ -1469,7 +1576,7 @@
1469
1576
  if (element == null) {
1470
1577
  return;
1471
1578
  }
1472
- if (isNodeList(element)) {
1579
+ if (DOMUtilsCommonUtils.isNodeList(element)) {
1473
1580
  if (typeof property === "string") {
1474
1581
  if (value == null) {
1475
1582
  // 获取属性
@@ -1536,7 +1643,7 @@
1536
1643
  if (element == null) {
1537
1644
  return;
1538
1645
  }
1539
- if (isNodeList(element)) {
1646
+ if (DOMUtilsCommonUtils.isNodeList(element)) {
1540
1647
  if (text == null) {
1541
1648
  // 获取
1542
1649
  return DOMUtilsContext.text(element[0]);
@@ -1572,7 +1679,7 @@
1572
1679
  if (element == null) {
1573
1680
  return;
1574
1681
  }
1575
- if (isNodeList(element)) {
1682
+ if (DOMUtilsCommonUtils.isNodeList(element)) {
1576
1683
  if (html == null) {
1577
1684
  // 获取
1578
1685
  return DOMUtilsContext.html(element[0]);
@@ -1642,7 +1749,7 @@
1642
1749
  if (element == null) {
1643
1750
  return;
1644
1751
  }
1645
- if (isNodeList(element)) {
1752
+ if (DOMUtilsCommonUtils.isNodeList(element)) {
1646
1753
  if (value == null) {
1647
1754
  // 获取
1648
1755
  return DOMUtilsContext.val(element[0]);
@@ -1684,7 +1791,7 @@
1684
1791
  if (element == null) {
1685
1792
  return;
1686
1793
  }
1687
- if (isNodeList(element)) {
1794
+ if (DOMUtilsCommonUtils.isNodeList(element)) {
1688
1795
  if (propValue == null) {
1689
1796
  // 获取
1690
1797
  return DOMUtilsContext.prop(element[0], propName);
@@ -1726,7 +1833,7 @@
1726
1833
  if (element == null) {
1727
1834
  return;
1728
1835
  }
1729
- if (isNodeList(element)) {
1836
+ if (DOMUtilsCommonUtils.isNodeList(element)) {
1730
1837
  // 设置
1731
1838
  element.forEach(($ele) => {
1732
1839
  DOMUtilsContext.removeAttr($ele, attrName);
@@ -1752,7 +1859,7 @@
1752
1859
  if (element == null) {
1753
1860
  return;
1754
1861
  }
1755
- if (isNodeList(element)) {
1862
+ if (DOMUtilsCommonUtils.isNodeList(element)) {
1756
1863
  // 设置
1757
1864
  element.forEach(($ele) => {
1758
1865
  DOMUtilsContext.removeClass($ele, className);
@@ -1789,7 +1896,7 @@
1789
1896
  if (element == null) {
1790
1897
  return;
1791
1898
  }
1792
- if (isNodeList(element)) {
1899
+ if (DOMUtilsCommonUtils.isNodeList(element)) {
1793
1900
  // 设置
1794
1901
  element.forEach(($ele) => {
1795
1902
  DOMUtilsContext.removeProp($ele, propName);
@@ -1815,7 +1922,7 @@
1815
1922
  if (element == null) {
1816
1923
  return;
1817
1924
  }
1818
- if (isNodeList(element)) {
1925
+ if (DOMUtilsCommonUtils.isNodeList(element)) {
1819
1926
  // 设置
1820
1927
  element.forEach(($ele) => {
1821
1928
  DOMUtilsContext.replaceWith($ele, newElement);
@@ -1844,7 +1951,7 @@
1844
1951
  if (element == null) {
1845
1952
  return;
1846
1953
  }
1847
- if (isNodeList(element)) {
1954
+ if (DOMUtilsCommonUtils.isNodeList(element)) {
1848
1955
  // 设置
1849
1956
  element.forEach(($ele) => {
1850
1957
  DOMUtilsContext.addClass($ele, className);
@@ -1874,7 +1981,7 @@
1874
1981
  if (element == null) {
1875
1982
  return false;
1876
1983
  }
1877
- if (isNodeList(element)) {
1984
+ if (DOMUtilsCommonUtils.isNodeList(element)) {
1878
1985
  let flag = true;
1879
1986
  for (let index = 0; index < element.length; index++) {
1880
1987
  const $ele = element[index];
@@ -1913,7 +2020,7 @@
1913
2020
  if (element == null) {
1914
2021
  return;
1915
2022
  }
1916
- if (isNodeList(element)) {
2023
+ if (DOMUtilsCommonUtils.isNodeList(element)) {
1917
2024
  // 设置
1918
2025
  element.forEach(($ele) => {
1919
2026
  DOMUtilsContext.append($ele, content);
@@ -1960,7 +2067,7 @@
1960
2067
  if (element == null) {
1961
2068
  return;
1962
2069
  }
1963
- if (isNodeList(element)) {
2070
+ if (DOMUtilsCommonUtils.isNodeList(element)) {
1964
2071
  // 设置
1965
2072
  element.forEach(($ele) => {
1966
2073
  DOMUtilsContext.prepend($ele, content);
@@ -1997,7 +2104,7 @@
1997
2104
  if (element == null) {
1998
2105
  return;
1999
2106
  }
2000
- if (isNodeList(element)) {
2107
+ if (DOMUtilsCommonUtils.isNodeList(element)) {
2001
2108
  // 设置
2002
2109
  element.forEach(($ele) => {
2003
2110
  DOMUtilsContext.after($ele, content);
@@ -2036,7 +2143,7 @@
2036
2143
  if (element == null) {
2037
2144
  return;
2038
2145
  }
2039
- if (isNodeList(element)) {
2146
+ if (DOMUtilsCommonUtils.isNodeList(element)) {
2040
2147
  // 设置
2041
2148
  element.forEach(($ele) => {
2042
2149
  DOMUtilsContext.before($ele, content);
@@ -2073,7 +2180,7 @@
2073
2180
  if (element == null) {
2074
2181
  return;
2075
2182
  }
2076
- if (isNodeList(element)) {
2183
+ if (DOMUtilsCommonUtils.isNodeList(element)) {
2077
2184
  element.forEach(($ele) => {
2078
2185
  DOMUtilsContext.remove($ele);
2079
2186
  });
@@ -2097,7 +2204,7 @@
2097
2204
  if (element == null) {
2098
2205
  return;
2099
2206
  }
2100
- if (isNodeList(element)) {
2207
+ if (DOMUtilsCommonUtils.isNodeList(element)) {
2101
2208
  // 设置
2102
2209
  element.forEach(($ele) => {
2103
2210
  DOMUtilsContext.empty($ele);
@@ -2304,7 +2411,7 @@
2304
2411
  if (element == null) {
2305
2412
  return;
2306
2413
  }
2307
- if (isNodeList(element)) {
2414
+ if (DOMUtilsCommonUtils.isNodeList(element)) {
2308
2415
  // 设置
2309
2416
  element.forEach(($ele) => {
2310
2417
  DOMUtilsContext.animate($ele, styles, duration, callback);
@@ -2366,7 +2473,7 @@
2366
2473
  if (element == null) {
2367
2474
  return;
2368
2475
  }
2369
- if (isNodeList(element)) {
2476
+ if (DOMUtilsCommonUtils.isNodeList(element)) {
2370
2477
  // 设置
2371
2478
  element.forEach(($ele) => {
2372
2479
  DOMUtilsContext.wrap($ele, wrapperHTML);
@@ -2446,7 +2553,7 @@
2446
2553
  if (element == null) {
2447
2554
  return;
2448
2555
  }
2449
- if (isNodeList(element)) {
2556
+ if (DOMUtilsCommonUtils.isNodeList(element)) {
2450
2557
  let resultArray = [];
2451
2558
  element.forEach(($ele) => {
2452
2559
  resultArray.push(DOMUtilsContext.parent($ele));
@@ -2625,7 +2732,7 @@
2625
2732
  if (typeof element === "string") {
2626
2733
  element = DOMUtilsContext.selectorAll(element);
2627
2734
  }
2628
- if (isNodeList(element)) {
2735
+ if (DOMUtilsCommonUtils.isNodeList(element)) {
2629
2736
  // 设置
2630
2737
  element.forEach(($ele) => {
2631
2738
  DOMUtilsContext.fadeIn($ele, duration, callback);
@@ -2676,7 +2783,7 @@
2676
2783
  if (typeof element === "string") {
2677
2784
  element = DOMUtilsContext.selectorAll(element);
2678
2785
  }
2679
- if (isNodeList(element)) {
2786
+ if (DOMUtilsCommonUtils.isNodeList(element)) {
2680
2787
  // 设置
2681
2788
  element.forEach(($ele) => {
2682
2789
  DOMUtilsContext.fadeOut($ele, duration, callback);
@@ -2722,7 +2829,7 @@
2722
2829
  if (element == null) {
2723
2830
  return;
2724
2831
  }
2725
- if (isNodeList(element)) {
2832
+ if (DOMUtilsCommonUtils.isNodeList(element)) {
2726
2833
  // 设置
2727
2834
  element.forEach(($ele) => {
2728
2835
  DOMUtilsContext.toggle($ele);