@whitesev/domutils 1.5.5 → 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.esm.js CHANGED
@@ -458,6 +458,13 @@ const DOMUtilsCommonUtils = {
458
458
  globalThis.clearInterval(timeId);
459
459
  }
460
460
  },
461
+ /**
462
+ * 判断是否是元素列表
463
+ * @param $ele
464
+ */
465
+ isNodeList($ele) {
466
+ return Array.isArray($ele) || $ele instanceof NodeList;
467
+ },
461
468
  };
462
469
 
463
470
  /* 数据 */
@@ -584,12 +591,12 @@ class DOMUtilsEvent {
584
591
  : elementItem;
585
592
  let findValue = selectorList.find((selectorItem) => {
586
593
  // 判断目标元素是否匹配选择器
587
- if (eventTarget?.matches(selectorItem)) {
594
+ if (DOMUtilsContext.matches(eventTarget, selectorItem)) {
588
595
  /* 当前目标可以被selector所匹配到 */
589
596
  return true;
590
597
  }
591
598
  /* 在上层与主元素之间寻找可以被selector所匹配到的 */
592
- let $closestMatches = eventTarget?.closest(selectorItem);
599
+ let $closestMatches = DOMUtilsContext.closest(eventTarget, selectorItem);
593
600
  if ($closestMatches && totalParent?.contains($closestMatches)) {
594
601
  eventTarget = $closestMatches;
595
602
  return true;
@@ -971,7 +978,7 @@ class DOMUtilsEvent {
971
978
  if (element == null) {
972
979
  return;
973
980
  }
974
- if (isNodeList(element)) {
981
+ if (DOMUtilsCommonUtils.isNodeList(element)) {
975
982
  // 设置
976
983
  element.forEach(($ele) => {
977
984
  DOMUtilsContext.click($ele, handler, details, useDispatchToTriggerEvent);
@@ -1007,7 +1014,7 @@ class DOMUtilsEvent {
1007
1014
  if (element == null) {
1008
1015
  return;
1009
1016
  }
1010
- if (isNodeList(element)) {
1017
+ if (DOMUtilsCommonUtils.isNodeList(element)) {
1011
1018
  // 设置
1012
1019
  element.forEach(($ele) => {
1013
1020
  DOMUtilsContext.focus($ele, handler, details, useDispatchToTriggerEvent);
@@ -1043,7 +1050,7 @@ class DOMUtilsEvent {
1043
1050
  if (element == null) {
1044
1051
  return;
1045
1052
  }
1046
- if (isNodeList(element)) {
1053
+ if (DOMUtilsCommonUtils.isNodeList(element)) {
1047
1054
  // 设置
1048
1055
  element.forEach(($ele) => {
1049
1056
  DOMUtilsContext.focus($ele, handler, details, useDispatchToTriggerEvent);
@@ -1079,7 +1086,7 @@ class DOMUtilsEvent {
1079
1086
  if (element == null) {
1080
1087
  return;
1081
1088
  }
1082
- if (isNodeList(element)) {
1089
+ if (DOMUtilsCommonUtils.isNodeList(element)) {
1083
1090
  // 设置
1084
1091
  element.forEach(($ele) => {
1085
1092
  DOMUtilsContext.hover($ele, handler, option);
@@ -1112,7 +1119,7 @@ class DOMUtilsEvent {
1112
1119
  if (typeof element === "string") {
1113
1120
  element = DOMUtilsContext.selectorAll(element);
1114
1121
  }
1115
- if (isNodeList(element)) {
1122
+ if (DOMUtilsCommonUtils.isNodeList(element)) {
1116
1123
  // 设置
1117
1124
  element.forEach(($ele) => {
1118
1125
  DOMUtilsContext.keyup($ele, handler, option);
@@ -1144,7 +1151,7 @@ class DOMUtilsEvent {
1144
1151
  if (typeof element === "string") {
1145
1152
  element = DOMUtilsContext.selectorAll(element);
1146
1153
  }
1147
- if (isNodeList(element)) {
1154
+ if (DOMUtilsCommonUtils.isNodeList(element)) {
1148
1155
  // 设置
1149
1156
  element.forEach(($ele) => {
1150
1157
  DOMUtilsContext.keydown($ele, handler, option);
@@ -1176,7 +1183,7 @@ class DOMUtilsEvent {
1176
1183
  if (typeof element === "string") {
1177
1184
  element = DOMUtilsContext.selectorAll(element);
1178
1185
  }
1179
- if (isNodeList(element)) {
1186
+ if (DOMUtilsCommonUtils.isNodeList(element)) {
1180
1187
  // 设置
1181
1188
  element.forEach(($ele) => {
1182
1189
  DOMUtilsContext.keypress($ele, handler, option);
@@ -1330,21 +1337,121 @@ class DOMUtilsEvent {
1330
1337
  return Array.from(context.windowApi.document.querySelectorAll(selector));
1331
1338
  }
1332
1339
  }
1340
+ /**
1341
+ * 匹配元素,可使用以下的额外语法
1342
+ */
1343
+ matches($el, selector) {
1344
+ selector = selector.trim();
1345
+ if ($el == null) {
1346
+ return false;
1347
+ }
1348
+ if (selector.match(/[^\s]{1}:empty$/gi)) {
1349
+ // empty 语法
1350
+ selector = selector.replace(/:empty$/gi, "");
1351
+ return $el.matches(selector) && $el?.innerHTML?.trim() === "";
1352
+ }
1353
+ else if (selector.match(/[^\s]{1}:contains\("(.*)"\)$/i) ||
1354
+ selector.match(/[^\s]{1}:contains\('(.*)'\)$/i)) {
1355
+ // contains 语法
1356
+ let textMatch = selector.match(/:contains\(("|')(.*)("|')\)$/i);
1357
+ let text = textMatch[2];
1358
+ selector = selector.replace(/:contains\(("|')(.*)("|')\)$/gi, "");
1359
+ // @ts-ignore
1360
+ let content = $el?.textContent || $el?.innerText;
1361
+ if (typeof content !== "string") {
1362
+ content = "";
1363
+ }
1364
+ return $el.matches(selector) && content?.includes(text);
1365
+ }
1366
+ else if (selector.match(/[^\s]{1}:regexp\("(.*)"\)$/i) ||
1367
+ selector.match(/[^\s]{1}:regexp\('(.*)'\)$/i)) {
1368
+ // regexp 语法
1369
+ let textMatch = selector.match(/:regexp\(("|')(.*)("|')\)$/i);
1370
+ let pattern = textMatch[2];
1371
+ let flagMatch = pattern.match(/("|'),[\s]*("|')([igm]{0,3})$/i);
1372
+ let flags = "";
1373
+ if (flagMatch) {
1374
+ pattern = pattern.replace(/("|'),[\s]*("|')([igm]{0,3})$/gi, "");
1375
+ flags = flagMatch[3];
1376
+ }
1377
+ let regexp = new RegExp(pattern, flags);
1378
+ selector = selector.replace(/:regexp\(("|')(.*)("|')\)$/gi, "");
1379
+ // @ts-ignore
1380
+ let content = $el?.textContent || $el?.innerText;
1381
+ if (typeof content !== "string") {
1382
+ content = "";
1383
+ }
1384
+ return $el.matches(selector) && Boolean(content?.match(regexp));
1385
+ }
1386
+ else {
1387
+ // 普通语法
1388
+ return $el.matches(selector);
1389
+ }
1390
+ }
1391
+ closest($el, selector) {
1392
+ selector = selector.trim();
1393
+ if (selector.match(/[^\s]{1}:empty$/gi)) {
1394
+ // empty 语法
1395
+ selector = selector.replace(/:empty$/gi, "");
1396
+ let $closest = $el?.closest(selector);
1397
+ if ($closest && $closest?.innerHTML?.trim() === "") {
1398
+ return $closest;
1399
+ }
1400
+ return null;
1401
+ }
1402
+ else if (selector.match(/[^\s]{1}:contains\("(.*)"\)$/i) ||
1403
+ selector.match(/[^\s]{1}:contains\('(.*)'\)$/i)) {
1404
+ // contains 语法
1405
+ let textMatch = selector.match(/:contains\(("|')(.*)("|')\)$/i);
1406
+ let text = textMatch[2];
1407
+ selector = selector.replace(/:contains\(("|')(.*)("|')\)$/gi, "");
1408
+ let $closest = $el?.closest(selector);
1409
+ if ($closest) {
1410
+ // @ts-ignore
1411
+ let content = $el?.textContent || $el?.innerText;
1412
+ if (typeof content === "string" && content.includes(text)) {
1413
+ return $closest;
1414
+ }
1415
+ }
1416
+ return null;
1417
+ }
1418
+ else if (selector.match(/[^\s]{1}:regexp\("(.*)"\)$/i) ||
1419
+ selector.match(/[^\s]{1}:regexp\('(.*)'\)$/i)) {
1420
+ // regexp 语法
1421
+ let textMatch = selector.match(/:regexp\(("|')(.*)("|')\)$/i);
1422
+ let pattern = textMatch[2];
1423
+ let flagMatch = pattern.match(/("|'),[\s]*("|')([igm]{0,3})$/i);
1424
+ let flags = "";
1425
+ if (flagMatch) {
1426
+ pattern = pattern.replace(/("|'),[\s]*("|')([igm]{0,3})$/gi, "");
1427
+ flags = flagMatch[3];
1428
+ }
1429
+ let regexp = new RegExp(pattern, flags);
1430
+ selector = selector.replace(/:regexp\(("|')(.*)("|')\)$/gi, "");
1431
+ let $closest = $el?.closest(selector);
1432
+ if ($closest) {
1433
+ // @ts-ignore
1434
+ let content = $el?.textContent || $el?.innerText;
1435
+ if (typeof content === "string" && content.match(regexp)) {
1436
+ return $closest;
1437
+ }
1438
+ }
1439
+ return null;
1440
+ }
1441
+ else {
1442
+ // 普通语法
1443
+ let $closest = $el?.closest(selector);
1444
+ return $closest;
1445
+ }
1446
+ }
1333
1447
  }
1334
1448
 
1335
- /**
1336
- * 判断是否是元素列表
1337
- * @param $ele
1338
- */
1339
- const isNodeList = ($ele) => {
1340
- return Array.isArray($ele) || $ele instanceof NodeList;
1341
- };
1342
1449
  class DOMUtils extends DOMUtilsEvent {
1343
1450
  constructor(option) {
1344
1451
  super(option);
1345
1452
  }
1346
1453
  /** 版本号 */
1347
- version = "2025.5.26";
1454
+ version = "2025.5.30";
1348
1455
  attr(element, attrName, attrValue) {
1349
1456
  let DOMUtilsContext = this;
1350
1457
  if (typeof element === "string") {
@@ -1353,7 +1460,7 @@ class DOMUtils extends DOMUtilsEvent {
1353
1460
  if (element == null) {
1354
1461
  return;
1355
1462
  }
1356
- if (isNodeList(element)) {
1463
+ if (DOMUtilsCommonUtils.isNodeList(element)) {
1357
1464
  if (attrValue == null) {
1358
1465
  // 获取属性
1359
1466
  return DOMUtilsContext.attr(element[0], attrName, attrValue);
@@ -1463,7 +1570,7 @@ class DOMUtils extends DOMUtilsEvent {
1463
1570
  if (element == null) {
1464
1571
  return;
1465
1572
  }
1466
- if (isNodeList(element)) {
1573
+ if (DOMUtilsCommonUtils.isNodeList(element)) {
1467
1574
  if (typeof property === "string") {
1468
1575
  if (value == null) {
1469
1576
  // 获取属性
@@ -1530,7 +1637,7 @@ class DOMUtils extends DOMUtilsEvent {
1530
1637
  if (element == null) {
1531
1638
  return;
1532
1639
  }
1533
- if (isNodeList(element)) {
1640
+ if (DOMUtilsCommonUtils.isNodeList(element)) {
1534
1641
  if (text == null) {
1535
1642
  // 获取
1536
1643
  return DOMUtilsContext.text(element[0]);
@@ -1566,7 +1673,7 @@ class DOMUtils extends DOMUtilsEvent {
1566
1673
  if (element == null) {
1567
1674
  return;
1568
1675
  }
1569
- if (isNodeList(element)) {
1676
+ if (DOMUtilsCommonUtils.isNodeList(element)) {
1570
1677
  if (html == null) {
1571
1678
  // 获取
1572
1679
  return DOMUtilsContext.html(element[0]);
@@ -1636,7 +1743,7 @@ class DOMUtils extends DOMUtilsEvent {
1636
1743
  if (element == null) {
1637
1744
  return;
1638
1745
  }
1639
- if (isNodeList(element)) {
1746
+ if (DOMUtilsCommonUtils.isNodeList(element)) {
1640
1747
  if (value == null) {
1641
1748
  // 获取
1642
1749
  return DOMUtilsContext.val(element[0]);
@@ -1678,7 +1785,7 @@ class DOMUtils extends DOMUtilsEvent {
1678
1785
  if (element == null) {
1679
1786
  return;
1680
1787
  }
1681
- if (isNodeList(element)) {
1788
+ if (DOMUtilsCommonUtils.isNodeList(element)) {
1682
1789
  if (propValue == null) {
1683
1790
  // 获取
1684
1791
  return DOMUtilsContext.prop(element[0], propName);
@@ -1720,7 +1827,7 @@ class DOMUtils extends DOMUtilsEvent {
1720
1827
  if (element == null) {
1721
1828
  return;
1722
1829
  }
1723
- if (isNodeList(element)) {
1830
+ if (DOMUtilsCommonUtils.isNodeList(element)) {
1724
1831
  // 设置
1725
1832
  element.forEach(($ele) => {
1726
1833
  DOMUtilsContext.removeAttr($ele, attrName);
@@ -1746,7 +1853,7 @@ class DOMUtils extends DOMUtilsEvent {
1746
1853
  if (element == null) {
1747
1854
  return;
1748
1855
  }
1749
- if (isNodeList(element)) {
1856
+ if (DOMUtilsCommonUtils.isNodeList(element)) {
1750
1857
  // 设置
1751
1858
  element.forEach(($ele) => {
1752
1859
  DOMUtilsContext.removeClass($ele, className);
@@ -1783,7 +1890,7 @@ class DOMUtils extends DOMUtilsEvent {
1783
1890
  if (element == null) {
1784
1891
  return;
1785
1892
  }
1786
- if (isNodeList(element)) {
1893
+ if (DOMUtilsCommonUtils.isNodeList(element)) {
1787
1894
  // 设置
1788
1895
  element.forEach(($ele) => {
1789
1896
  DOMUtilsContext.removeProp($ele, propName);
@@ -1809,7 +1916,7 @@ class DOMUtils extends DOMUtilsEvent {
1809
1916
  if (element == null) {
1810
1917
  return;
1811
1918
  }
1812
- if (isNodeList(element)) {
1919
+ if (DOMUtilsCommonUtils.isNodeList(element)) {
1813
1920
  // 设置
1814
1921
  element.forEach(($ele) => {
1815
1922
  DOMUtilsContext.replaceWith($ele, newElement);
@@ -1838,7 +1945,7 @@ class DOMUtils extends DOMUtilsEvent {
1838
1945
  if (element == null) {
1839
1946
  return;
1840
1947
  }
1841
- if (isNodeList(element)) {
1948
+ if (DOMUtilsCommonUtils.isNodeList(element)) {
1842
1949
  // 设置
1843
1950
  element.forEach(($ele) => {
1844
1951
  DOMUtilsContext.addClass($ele, className);
@@ -1868,7 +1975,7 @@ class DOMUtils extends DOMUtilsEvent {
1868
1975
  if (element == null) {
1869
1976
  return false;
1870
1977
  }
1871
- if (isNodeList(element)) {
1978
+ if (DOMUtilsCommonUtils.isNodeList(element)) {
1872
1979
  let flag = true;
1873
1980
  for (let index = 0; index < element.length; index++) {
1874
1981
  const $ele = element[index];
@@ -1907,7 +2014,7 @@ class DOMUtils extends DOMUtilsEvent {
1907
2014
  if (element == null) {
1908
2015
  return;
1909
2016
  }
1910
- if (isNodeList(element)) {
2017
+ if (DOMUtilsCommonUtils.isNodeList(element)) {
1911
2018
  // 设置
1912
2019
  element.forEach(($ele) => {
1913
2020
  DOMUtilsContext.append($ele, content);
@@ -1954,7 +2061,7 @@ class DOMUtils extends DOMUtilsEvent {
1954
2061
  if (element == null) {
1955
2062
  return;
1956
2063
  }
1957
- if (isNodeList(element)) {
2064
+ if (DOMUtilsCommonUtils.isNodeList(element)) {
1958
2065
  // 设置
1959
2066
  element.forEach(($ele) => {
1960
2067
  DOMUtilsContext.prepend($ele, content);
@@ -1991,7 +2098,7 @@ class DOMUtils extends DOMUtilsEvent {
1991
2098
  if (element == null) {
1992
2099
  return;
1993
2100
  }
1994
- if (isNodeList(element)) {
2101
+ if (DOMUtilsCommonUtils.isNodeList(element)) {
1995
2102
  // 设置
1996
2103
  element.forEach(($ele) => {
1997
2104
  DOMUtilsContext.after($ele, content);
@@ -2030,7 +2137,7 @@ class DOMUtils extends DOMUtilsEvent {
2030
2137
  if (element == null) {
2031
2138
  return;
2032
2139
  }
2033
- if (isNodeList(element)) {
2140
+ if (DOMUtilsCommonUtils.isNodeList(element)) {
2034
2141
  // 设置
2035
2142
  element.forEach(($ele) => {
2036
2143
  DOMUtilsContext.before($ele, content);
@@ -2067,7 +2174,7 @@ class DOMUtils extends DOMUtilsEvent {
2067
2174
  if (element == null) {
2068
2175
  return;
2069
2176
  }
2070
- if (isNodeList(element)) {
2177
+ if (DOMUtilsCommonUtils.isNodeList(element)) {
2071
2178
  element.forEach(($ele) => {
2072
2179
  DOMUtilsContext.remove($ele);
2073
2180
  });
@@ -2091,7 +2198,7 @@ class DOMUtils extends DOMUtilsEvent {
2091
2198
  if (element == null) {
2092
2199
  return;
2093
2200
  }
2094
- if (isNodeList(element)) {
2201
+ if (DOMUtilsCommonUtils.isNodeList(element)) {
2095
2202
  // 设置
2096
2203
  element.forEach(($ele) => {
2097
2204
  DOMUtilsContext.empty($ele);
@@ -2298,7 +2405,7 @@ class DOMUtils extends DOMUtilsEvent {
2298
2405
  if (element == null) {
2299
2406
  return;
2300
2407
  }
2301
- if (isNodeList(element)) {
2408
+ if (DOMUtilsCommonUtils.isNodeList(element)) {
2302
2409
  // 设置
2303
2410
  element.forEach(($ele) => {
2304
2411
  DOMUtilsContext.animate($ele, styles, duration, callback);
@@ -2360,7 +2467,7 @@ class DOMUtils extends DOMUtilsEvent {
2360
2467
  if (element == null) {
2361
2468
  return;
2362
2469
  }
2363
- if (isNodeList(element)) {
2470
+ if (DOMUtilsCommonUtils.isNodeList(element)) {
2364
2471
  // 设置
2365
2472
  element.forEach(($ele) => {
2366
2473
  DOMUtilsContext.wrap($ele, wrapperHTML);
@@ -2440,7 +2547,7 @@ class DOMUtils extends DOMUtilsEvent {
2440
2547
  if (element == null) {
2441
2548
  return;
2442
2549
  }
2443
- if (isNodeList(element)) {
2550
+ if (DOMUtilsCommonUtils.isNodeList(element)) {
2444
2551
  let resultArray = [];
2445
2552
  element.forEach(($ele) => {
2446
2553
  resultArray.push(DOMUtilsContext.parent($ele));
@@ -2619,7 +2726,7 @@ class DOMUtils extends DOMUtilsEvent {
2619
2726
  if (typeof element === "string") {
2620
2727
  element = DOMUtilsContext.selectorAll(element);
2621
2728
  }
2622
- if (isNodeList(element)) {
2729
+ if (DOMUtilsCommonUtils.isNodeList(element)) {
2623
2730
  // 设置
2624
2731
  element.forEach(($ele) => {
2625
2732
  DOMUtilsContext.fadeIn($ele, duration, callback);
@@ -2670,7 +2777,7 @@ class DOMUtils extends DOMUtilsEvent {
2670
2777
  if (typeof element === "string") {
2671
2778
  element = DOMUtilsContext.selectorAll(element);
2672
2779
  }
2673
- if (isNodeList(element)) {
2780
+ if (DOMUtilsCommonUtils.isNodeList(element)) {
2674
2781
  // 设置
2675
2782
  element.forEach(($ele) => {
2676
2783
  DOMUtilsContext.fadeOut($ele, duration, callback);
@@ -2716,7 +2823,7 @@ class DOMUtils extends DOMUtilsEvent {
2716
2823
  if (element == null) {
2717
2824
  return;
2718
2825
  }
2719
- if (isNodeList(element)) {
2826
+ if (DOMUtilsCommonUtils.isNodeList(element)) {
2720
2827
  // 设置
2721
2828
  element.forEach(($ele) => {
2722
2829
  DOMUtilsContext.toggle($ele);