@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.
@@ -461,6 +461,13 @@ var DOMUtils = (function () {
461
461
  globalThis.clearInterval(timeId);
462
462
  }
463
463
  },
464
+ /**
465
+ * 判断是否是元素列表
466
+ * @param $ele
467
+ */
468
+ isNodeList($ele) {
469
+ return Array.isArray($ele) || $ele instanceof NodeList;
470
+ },
464
471
  };
465
472
 
466
473
  /* 数据 */
@@ -587,12 +594,12 @@ var DOMUtils = (function () {
587
594
  : elementItem;
588
595
  let findValue = selectorList.find((selectorItem) => {
589
596
  // 判断目标元素是否匹配选择器
590
- if (eventTarget?.matches(selectorItem)) {
597
+ if (DOMUtilsContext.matches(eventTarget, selectorItem)) {
591
598
  /* 当前目标可以被selector所匹配到 */
592
599
  return true;
593
600
  }
594
601
  /* 在上层与主元素之间寻找可以被selector所匹配到的 */
595
- let $closestMatches = eventTarget?.closest(selectorItem);
602
+ let $closestMatches = DOMUtilsContext.closest(eventTarget, selectorItem);
596
603
  if ($closestMatches && totalParent?.contains($closestMatches)) {
597
604
  eventTarget = $closestMatches;
598
605
  return true;
@@ -974,7 +981,7 @@ var DOMUtils = (function () {
974
981
  if (element == null) {
975
982
  return;
976
983
  }
977
- if (isNodeList(element)) {
984
+ if (DOMUtilsCommonUtils.isNodeList(element)) {
978
985
  // 设置
979
986
  element.forEach(($ele) => {
980
987
  DOMUtilsContext.click($ele, handler, details, useDispatchToTriggerEvent);
@@ -1010,7 +1017,7 @@ var DOMUtils = (function () {
1010
1017
  if (element == null) {
1011
1018
  return;
1012
1019
  }
1013
- if (isNodeList(element)) {
1020
+ if (DOMUtilsCommonUtils.isNodeList(element)) {
1014
1021
  // 设置
1015
1022
  element.forEach(($ele) => {
1016
1023
  DOMUtilsContext.focus($ele, handler, details, useDispatchToTriggerEvent);
@@ -1046,7 +1053,7 @@ var DOMUtils = (function () {
1046
1053
  if (element == null) {
1047
1054
  return;
1048
1055
  }
1049
- if (isNodeList(element)) {
1056
+ if (DOMUtilsCommonUtils.isNodeList(element)) {
1050
1057
  // 设置
1051
1058
  element.forEach(($ele) => {
1052
1059
  DOMUtilsContext.focus($ele, handler, details, useDispatchToTriggerEvent);
@@ -1082,7 +1089,7 @@ var DOMUtils = (function () {
1082
1089
  if (element == null) {
1083
1090
  return;
1084
1091
  }
1085
- if (isNodeList(element)) {
1092
+ if (DOMUtilsCommonUtils.isNodeList(element)) {
1086
1093
  // 设置
1087
1094
  element.forEach(($ele) => {
1088
1095
  DOMUtilsContext.hover($ele, handler, option);
@@ -1115,7 +1122,7 @@ var DOMUtils = (function () {
1115
1122
  if (typeof element === "string") {
1116
1123
  element = DOMUtilsContext.selectorAll(element);
1117
1124
  }
1118
- if (isNodeList(element)) {
1125
+ if (DOMUtilsCommonUtils.isNodeList(element)) {
1119
1126
  // 设置
1120
1127
  element.forEach(($ele) => {
1121
1128
  DOMUtilsContext.keyup($ele, handler, option);
@@ -1147,7 +1154,7 @@ var DOMUtils = (function () {
1147
1154
  if (typeof element === "string") {
1148
1155
  element = DOMUtilsContext.selectorAll(element);
1149
1156
  }
1150
- if (isNodeList(element)) {
1157
+ if (DOMUtilsCommonUtils.isNodeList(element)) {
1151
1158
  // 设置
1152
1159
  element.forEach(($ele) => {
1153
1160
  DOMUtilsContext.keydown($ele, handler, option);
@@ -1179,7 +1186,7 @@ var DOMUtils = (function () {
1179
1186
  if (typeof element === "string") {
1180
1187
  element = DOMUtilsContext.selectorAll(element);
1181
1188
  }
1182
- if (isNodeList(element)) {
1189
+ if (DOMUtilsCommonUtils.isNodeList(element)) {
1183
1190
  // 设置
1184
1191
  element.forEach(($ele) => {
1185
1192
  DOMUtilsContext.keypress($ele, handler, option);
@@ -1333,21 +1340,121 @@ var DOMUtils = (function () {
1333
1340
  return Array.from(context.windowApi.document.querySelectorAll(selector));
1334
1341
  }
1335
1342
  }
1343
+ /**
1344
+ * 匹配元素,可使用以下的额外语法
1345
+ */
1346
+ matches($el, selector) {
1347
+ selector = selector.trim();
1348
+ if ($el == null) {
1349
+ return false;
1350
+ }
1351
+ if (selector.match(/[^\s]{1}:empty$/gi)) {
1352
+ // empty 语法
1353
+ selector = selector.replace(/:empty$/gi, "");
1354
+ return $el.matches(selector) && $el?.innerHTML?.trim() === "";
1355
+ }
1356
+ else if (selector.match(/[^\s]{1}:contains\("(.*)"\)$/i) ||
1357
+ selector.match(/[^\s]{1}:contains\('(.*)'\)$/i)) {
1358
+ // contains 语法
1359
+ let textMatch = selector.match(/:contains\(("|')(.*)("|')\)$/i);
1360
+ let text = textMatch[2];
1361
+ selector = selector.replace(/:contains\(("|')(.*)("|')\)$/gi, "");
1362
+ // @ts-ignore
1363
+ let content = $el?.textContent || $el?.innerText;
1364
+ if (typeof content !== "string") {
1365
+ content = "";
1366
+ }
1367
+ return $el.matches(selector) && content?.includes(text);
1368
+ }
1369
+ else if (selector.match(/[^\s]{1}:regexp\("(.*)"\)$/i) ||
1370
+ selector.match(/[^\s]{1}:regexp\('(.*)'\)$/i)) {
1371
+ // regexp 语法
1372
+ let textMatch = selector.match(/:regexp\(("|')(.*)("|')\)$/i);
1373
+ let pattern = textMatch[2];
1374
+ let flagMatch = pattern.match(/("|'),[\s]*("|')([igm]{0,3})$/i);
1375
+ let flags = "";
1376
+ if (flagMatch) {
1377
+ pattern = pattern.replace(/("|'),[\s]*("|')([igm]{0,3})$/gi, "");
1378
+ flags = flagMatch[3];
1379
+ }
1380
+ let regexp = new RegExp(pattern, flags);
1381
+ selector = selector.replace(/:regexp\(("|')(.*)("|')\)$/gi, "");
1382
+ // @ts-ignore
1383
+ let content = $el?.textContent || $el?.innerText;
1384
+ if (typeof content !== "string") {
1385
+ content = "";
1386
+ }
1387
+ return $el.matches(selector) && Boolean(content?.match(regexp));
1388
+ }
1389
+ else {
1390
+ // 普通语法
1391
+ return $el.matches(selector);
1392
+ }
1393
+ }
1394
+ closest($el, selector) {
1395
+ selector = selector.trim();
1396
+ if (selector.match(/[^\s]{1}:empty$/gi)) {
1397
+ // empty 语法
1398
+ selector = selector.replace(/:empty$/gi, "");
1399
+ let $closest = $el?.closest(selector);
1400
+ if ($closest && $closest?.innerHTML?.trim() === "") {
1401
+ return $closest;
1402
+ }
1403
+ return null;
1404
+ }
1405
+ else if (selector.match(/[^\s]{1}:contains\("(.*)"\)$/i) ||
1406
+ selector.match(/[^\s]{1}:contains\('(.*)'\)$/i)) {
1407
+ // contains 语法
1408
+ let textMatch = selector.match(/:contains\(("|')(.*)("|')\)$/i);
1409
+ let text = textMatch[2];
1410
+ selector = selector.replace(/:contains\(("|')(.*)("|')\)$/gi, "");
1411
+ let $closest = $el?.closest(selector);
1412
+ if ($closest) {
1413
+ // @ts-ignore
1414
+ let content = $el?.textContent || $el?.innerText;
1415
+ if (typeof content === "string" && content.includes(text)) {
1416
+ return $closest;
1417
+ }
1418
+ }
1419
+ return null;
1420
+ }
1421
+ else if (selector.match(/[^\s]{1}:regexp\("(.*)"\)$/i) ||
1422
+ selector.match(/[^\s]{1}:regexp\('(.*)'\)$/i)) {
1423
+ // regexp 语法
1424
+ let textMatch = selector.match(/:regexp\(("|')(.*)("|')\)$/i);
1425
+ let pattern = textMatch[2];
1426
+ let flagMatch = pattern.match(/("|'),[\s]*("|')([igm]{0,3})$/i);
1427
+ let flags = "";
1428
+ if (flagMatch) {
1429
+ pattern = pattern.replace(/("|'),[\s]*("|')([igm]{0,3})$/gi, "");
1430
+ flags = flagMatch[3];
1431
+ }
1432
+ let regexp = new RegExp(pattern, flags);
1433
+ selector = selector.replace(/:regexp\(("|')(.*)("|')\)$/gi, "");
1434
+ let $closest = $el?.closest(selector);
1435
+ if ($closest) {
1436
+ // @ts-ignore
1437
+ let content = $el?.textContent || $el?.innerText;
1438
+ if (typeof content === "string" && content.match(regexp)) {
1439
+ return $closest;
1440
+ }
1441
+ }
1442
+ return null;
1443
+ }
1444
+ else {
1445
+ // 普通语法
1446
+ let $closest = $el?.closest(selector);
1447
+ return $closest;
1448
+ }
1449
+ }
1336
1450
  }
1337
1451
 
1338
- /**
1339
- * 判断是否是元素列表
1340
- * @param $ele
1341
- */
1342
- const isNodeList = ($ele) => {
1343
- return Array.isArray($ele) || $ele instanceof NodeList;
1344
- };
1345
1452
  class DOMUtils extends DOMUtilsEvent {
1346
1453
  constructor(option) {
1347
1454
  super(option);
1348
1455
  }
1349
1456
  /** 版本号 */
1350
- version = "2025.5.26";
1457
+ version = "2025.5.30";
1351
1458
  attr(element, attrName, attrValue) {
1352
1459
  let DOMUtilsContext = this;
1353
1460
  if (typeof element === "string") {
@@ -1356,7 +1463,7 @@ var DOMUtils = (function () {
1356
1463
  if (element == null) {
1357
1464
  return;
1358
1465
  }
1359
- if (isNodeList(element)) {
1466
+ if (DOMUtilsCommonUtils.isNodeList(element)) {
1360
1467
  if (attrValue == null) {
1361
1468
  // 获取属性
1362
1469
  return DOMUtilsContext.attr(element[0], attrName, attrValue);
@@ -1466,7 +1573,7 @@ var DOMUtils = (function () {
1466
1573
  if (element == null) {
1467
1574
  return;
1468
1575
  }
1469
- if (isNodeList(element)) {
1576
+ if (DOMUtilsCommonUtils.isNodeList(element)) {
1470
1577
  if (typeof property === "string") {
1471
1578
  if (value == null) {
1472
1579
  // 获取属性
@@ -1533,7 +1640,7 @@ var DOMUtils = (function () {
1533
1640
  if (element == null) {
1534
1641
  return;
1535
1642
  }
1536
- if (isNodeList(element)) {
1643
+ if (DOMUtilsCommonUtils.isNodeList(element)) {
1537
1644
  if (text == null) {
1538
1645
  // 获取
1539
1646
  return DOMUtilsContext.text(element[0]);
@@ -1569,7 +1676,7 @@ var DOMUtils = (function () {
1569
1676
  if (element == null) {
1570
1677
  return;
1571
1678
  }
1572
- if (isNodeList(element)) {
1679
+ if (DOMUtilsCommonUtils.isNodeList(element)) {
1573
1680
  if (html == null) {
1574
1681
  // 获取
1575
1682
  return DOMUtilsContext.html(element[0]);
@@ -1639,7 +1746,7 @@ var DOMUtils = (function () {
1639
1746
  if (element == null) {
1640
1747
  return;
1641
1748
  }
1642
- if (isNodeList(element)) {
1749
+ if (DOMUtilsCommonUtils.isNodeList(element)) {
1643
1750
  if (value == null) {
1644
1751
  // 获取
1645
1752
  return DOMUtilsContext.val(element[0]);
@@ -1681,7 +1788,7 @@ var DOMUtils = (function () {
1681
1788
  if (element == null) {
1682
1789
  return;
1683
1790
  }
1684
- if (isNodeList(element)) {
1791
+ if (DOMUtilsCommonUtils.isNodeList(element)) {
1685
1792
  if (propValue == null) {
1686
1793
  // 获取
1687
1794
  return DOMUtilsContext.prop(element[0], propName);
@@ -1723,7 +1830,7 @@ var DOMUtils = (function () {
1723
1830
  if (element == null) {
1724
1831
  return;
1725
1832
  }
1726
- if (isNodeList(element)) {
1833
+ if (DOMUtilsCommonUtils.isNodeList(element)) {
1727
1834
  // 设置
1728
1835
  element.forEach(($ele) => {
1729
1836
  DOMUtilsContext.removeAttr($ele, attrName);
@@ -1749,7 +1856,7 @@ var DOMUtils = (function () {
1749
1856
  if (element == null) {
1750
1857
  return;
1751
1858
  }
1752
- if (isNodeList(element)) {
1859
+ if (DOMUtilsCommonUtils.isNodeList(element)) {
1753
1860
  // 设置
1754
1861
  element.forEach(($ele) => {
1755
1862
  DOMUtilsContext.removeClass($ele, className);
@@ -1786,7 +1893,7 @@ var DOMUtils = (function () {
1786
1893
  if (element == null) {
1787
1894
  return;
1788
1895
  }
1789
- if (isNodeList(element)) {
1896
+ if (DOMUtilsCommonUtils.isNodeList(element)) {
1790
1897
  // 设置
1791
1898
  element.forEach(($ele) => {
1792
1899
  DOMUtilsContext.removeProp($ele, propName);
@@ -1812,7 +1919,7 @@ var DOMUtils = (function () {
1812
1919
  if (element == null) {
1813
1920
  return;
1814
1921
  }
1815
- if (isNodeList(element)) {
1922
+ if (DOMUtilsCommonUtils.isNodeList(element)) {
1816
1923
  // 设置
1817
1924
  element.forEach(($ele) => {
1818
1925
  DOMUtilsContext.replaceWith($ele, newElement);
@@ -1841,7 +1948,7 @@ var DOMUtils = (function () {
1841
1948
  if (element == null) {
1842
1949
  return;
1843
1950
  }
1844
- if (isNodeList(element)) {
1951
+ if (DOMUtilsCommonUtils.isNodeList(element)) {
1845
1952
  // 设置
1846
1953
  element.forEach(($ele) => {
1847
1954
  DOMUtilsContext.addClass($ele, className);
@@ -1871,7 +1978,7 @@ var DOMUtils = (function () {
1871
1978
  if (element == null) {
1872
1979
  return false;
1873
1980
  }
1874
- if (isNodeList(element)) {
1981
+ if (DOMUtilsCommonUtils.isNodeList(element)) {
1875
1982
  let flag = true;
1876
1983
  for (let index = 0; index < element.length; index++) {
1877
1984
  const $ele = element[index];
@@ -1910,7 +2017,7 @@ var DOMUtils = (function () {
1910
2017
  if (element == null) {
1911
2018
  return;
1912
2019
  }
1913
- if (isNodeList(element)) {
2020
+ if (DOMUtilsCommonUtils.isNodeList(element)) {
1914
2021
  // 设置
1915
2022
  element.forEach(($ele) => {
1916
2023
  DOMUtilsContext.append($ele, content);
@@ -1957,7 +2064,7 @@ var DOMUtils = (function () {
1957
2064
  if (element == null) {
1958
2065
  return;
1959
2066
  }
1960
- if (isNodeList(element)) {
2067
+ if (DOMUtilsCommonUtils.isNodeList(element)) {
1961
2068
  // 设置
1962
2069
  element.forEach(($ele) => {
1963
2070
  DOMUtilsContext.prepend($ele, content);
@@ -1994,7 +2101,7 @@ var DOMUtils = (function () {
1994
2101
  if (element == null) {
1995
2102
  return;
1996
2103
  }
1997
- if (isNodeList(element)) {
2104
+ if (DOMUtilsCommonUtils.isNodeList(element)) {
1998
2105
  // 设置
1999
2106
  element.forEach(($ele) => {
2000
2107
  DOMUtilsContext.after($ele, content);
@@ -2033,7 +2140,7 @@ var DOMUtils = (function () {
2033
2140
  if (element == null) {
2034
2141
  return;
2035
2142
  }
2036
- if (isNodeList(element)) {
2143
+ if (DOMUtilsCommonUtils.isNodeList(element)) {
2037
2144
  // 设置
2038
2145
  element.forEach(($ele) => {
2039
2146
  DOMUtilsContext.before($ele, content);
@@ -2070,7 +2177,7 @@ var DOMUtils = (function () {
2070
2177
  if (element == null) {
2071
2178
  return;
2072
2179
  }
2073
- if (isNodeList(element)) {
2180
+ if (DOMUtilsCommonUtils.isNodeList(element)) {
2074
2181
  element.forEach(($ele) => {
2075
2182
  DOMUtilsContext.remove($ele);
2076
2183
  });
@@ -2094,7 +2201,7 @@ var DOMUtils = (function () {
2094
2201
  if (element == null) {
2095
2202
  return;
2096
2203
  }
2097
- if (isNodeList(element)) {
2204
+ if (DOMUtilsCommonUtils.isNodeList(element)) {
2098
2205
  // 设置
2099
2206
  element.forEach(($ele) => {
2100
2207
  DOMUtilsContext.empty($ele);
@@ -2301,7 +2408,7 @@ var DOMUtils = (function () {
2301
2408
  if (element == null) {
2302
2409
  return;
2303
2410
  }
2304
- if (isNodeList(element)) {
2411
+ if (DOMUtilsCommonUtils.isNodeList(element)) {
2305
2412
  // 设置
2306
2413
  element.forEach(($ele) => {
2307
2414
  DOMUtilsContext.animate($ele, styles, duration, callback);
@@ -2363,7 +2470,7 @@ var DOMUtils = (function () {
2363
2470
  if (element == null) {
2364
2471
  return;
2365
2472
  }
2366
- if (isNodeList(element)) {
2473
+ if (DOMUtilsCommonUtils.isNodeList(element)) {
2367
2474
  // 设置
2368
2475
  element.forEach(($ele) => {
2369
2476
  DOMUtilsContext.wrap($ele, wrapperHTML);
@@ -2443,7 +2550,7 @@ var DOMUtils = (function () {
2443
2550
  if (element == null) {
2444
2551
  return;
2445
2552
  }
2446
- if (isNodeList(element)) {
2553
+ if (DOMUtilsCommonUtils.isNodeList(element)) {
2447
2554
  let resultArray = [];
2448
2555
  element.forEach(($ele) => {
2449
2556
  resultArray.push(DOMUtilsContext.parent($ele));
@@ -2622,7 +2729,7 @@ var DOMUtils = (function () {
2622
2729
  if (typeof element === "string") {
2623
2730
  element = DOMUtilsContext.selectorAll(element);
2624
2731
  }
2625
- if (isNodeList(element)) {
2732
+ if (DOMUtilsCommonUtils.isNodeList(element)) {
2626
2733
  // 设置
2627
2734
  element.forEach(($ele) => {
2628
2735
  DOMUtilsContext.fadeIn($ele, duration, callback);
@@ -2673,7 +2780,7 @@ var DOMUtils = (function () {
2673
2780
  if (typeof element === "string") {
2674
2781
  element = DOMUtilsContext.selectorAll(element);
2675
2782
  }
2676
- if (isNodeList(element)) {
2783
+ if (DOMUtilsCommonUtils.isNodeList(element)) {
2677
2784
  // 设置
2678
2785
  element.forEach(($ele) => {
2679
2786
  DOMUtilsContext.fadeOut($ele, duration, callback);
@@ -2719,7 +2826,7 @@ var DOMUtils = (function () {
2719
2826
  if (element == null) {
2720
2827
  return;
2721
2828
  }
2722
- if (isNodeList(element)) {
2829
+ if (DOMUtilsCommonUtils.isNodeList(element)) {
2723
2830
  // 设置
2724
2831
  element.forEach(($ele) => {
2725
2832
  DOMUtilsContext.toggle($ele);