@whitesev/domutils 1.9.3 → 1.9.4

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.
@@ -6,6 +6,8 @@ import type {
6
6
  DOMUtils_Event,
7
7
  DOMUtils_EventType,
8
8
  DOMUtilsAddEventListenerResult,
9
+ DOMUtilsDoubleClickHandler,
10
+ DOMUtilsDoubleClickHandlerWithSelector,
9
11
  DOMUtilsDoubleClickOption,
10
12
  DOMUtilsElementEventType,
11
13
  DOMUtilsEventListenerOption,
@@ -1398,7 +1400,7 @@ class ElementEvent extends ElementAnimate {
1398
1400
  * @param options 监听器的配置
1399
1401
  */
1400
1402
  onDoubleClick(
1401
- $el: DOMUtilsTargetElementType,
1403
+ $el: DOMUtilsElementEventType,
1402
1404
  handler: (event: MouseEvent | PointerEvent | TouchEvent, option: DOMUtilsDoubleClickOption) => void | Promise<void>,
1403
1405
  options?: DOMUtilsEventListenerOption | boolean
1404
1406
  ): {
@@ -1411,10 +1413,14 @@ class ElementEvent extends ElementAnimate {
1411
1413
  * @param handler 处理的回调函数
1412
1414
  * @param options 监听器的配置
1413
1415
  */
1414
- onDoubleClick(
1415
- $el: DOMUtilsTargetElementType,
1416
- selector: string | string[] | undefined | null,
1417
- handler: (event: MouseEvent | PointerEvent | TouchEvent, option: DOMUtilsDoubleClickOption) => void | Promise<void>,
1416
+ onDoubleClick<T = HTMLElement>(
1417
+ $el: DOMUtilsElementEventType,
1418
+ selector: string | string[],
1419
+ handler: (
1420
+ event: MouseEvent | PointerEvent | TouchEvent,
1421
+ $selector: T,
1422
+ option: DOMUtilsDoubleClickOption
1423
+ ) => void | Promise<void>,
1418
1424
  options?: DOMUtilsEventListenerOption | boolean
1419
1425
  ): {
1420
1426
  off(): void;
@@ -1422,12 +1428,9 @@ class ElementEvent extends ElementAnimate {
1422
1428
  onDoubleClick(...args: any[]): {
1423
1429
  off(): void;
1424
1430
  } {
1425
- const $el: DOMUtilsTargetElementType = args[0];
1431
+ const $el: DOMUtilsElementEventType = args[0];
1426
1432
  let selector: string | string[] | undefined | null = void 0;
1427
- let handler: (
1428
- event: MouseEvent | PointerEvent | TouchEvent,
1429
- option: DOMUtilsDoubleClickOption
1430
- ) => void | Promise<void>;
1433
+ let handler: DOMUtilsDoubleClickHandler | DOMUtilsDoubleClickHandlerWithSelector;
1431
1434
  let options: DOMUtilsEventListenerOption | boolean | undefined;
1432
1435
  if (args.length === 2) {
1433
1436
  if (typeof args[1] === "function") {
@@ -1459,26 +1462,39 @@ class ElementEvent extends ElementAnimate {
1459
1462
  /** 检测是否是单击的延迟时间 */
1460
1463
  const checkClickTime = 200;
1461
1464
 
1462
- const dblclick_handler = async (evt: MouseEvent | PointerEvent | TouchEvent, option: DOMUtilsDoubleClickOption) => {
1465
+ const dblclick_handler = async (
1466
+ evt: MouseEvent | PointerEvent | TouchEvent,
1467
+ option: DOMUtilsDoubleClickOption,
1468
+ $selector?: HTMLElement
1469
+ ) => {
1463
1470
  if (evt.type === "dblclick" && isMobileTouch) {
1464
1471
  // 禁止在移动端触发dblclick事件
1465
1472
  return;
1466
1473
  }
1467
- await handler(evt, option);
1474
+ if ($selector) {
1475
+ await (<DOMUtilsDoubleClickHandlerWithSelector>handler)(evt, $selector, option);
1476
+ } else {
1477
+ await (<DOMUtilsDoubleClickHandler>handler)(evt, option);
1478
+ }
1468
1479
  };
1469
1480
 
1470
1481
  const dblClickListener = this.on(
1471
1482
  $el,
1472
1483
  "dblclick",
1473
- (evt) => {
1484
+ selector,
1485
+ (evt, $selector) => {
1474
1486
  this.preventEvent(evt);
1475
- dblclick_handler(evt, {
1476
- isDoubleClick: true,
1477
- });
1487
+ dblclick_handler(
1488
+ evt,
1489
+ {
1490
+ isDoubleClick: true,
1491
+ },
1492
+ $selector
1493
+ );
1478
1494
  },
1479
1495
  options
1480
1496
  );
1481
- const touchEndListener = this.on(
1497
+ const pointerUpListener = this.on(
1482
1498
  $el,
1483
1499
  "pointerup",
1484
1500
  selector,
@@ -1493,16 +1509,24 @@ class ElementEvent extends ElementAnimate {
1493
1509
  isDoubleClick = false;
1494
1510
  $click = null;
1495
1511
  /* 判定为双击 */
1496
- dblclick_handler(evt, {
1497
- isDoubleClick: true,
1498
- });
1512
+ dblclick_handler(
1513
+ evt,
1514
+ {
1515
+ isDoubleClick: true,
1516
+ },
1517
+ $selector
1518
+ );
1499
1519
  } else {
1500
1520
  timer = setTimeout(() => {
1501
1521
  isDoubleClick = false;
1502
1522
  // 判断为单击
1503
- dblclick_handler(evt, {
1504
- isDoubleClick: false,
1505
- });
1523
+ dblclick_handler(
1524
+ evt,
1525
+ {
1526
+ isDoubleClick: false,
1527
+ },
1528
+ $selector
1529
+ );
1506
1530
  }, checkClickTime);
1507
1531
  isDoubleClick = true;
1508
1532
  $click = $selector;
@@ -1515,7 +1539,7 @@ class ElementEvent extends ElementAnimate {
1515
1539
  off() {
1516
1540
  $click = null;
1517
1541
  dblClickListener.off();
1518
- touchEndListener.off();
1542
+ pointerUpListener.off();
1519
1543
  },
1520
1544
  };
1521
1545
  }
@@ -418,3 +418,20 @@ export declare type DOMUtilsDoubleClickOption = {
418
418
  */
419
419
  isDoubleClick: boolean;
420
420
  };
421
+
422
+ /**
423
+ * 双击的处理函数
424
+ */
425
+ export declare type DOMUtilsDoubleClickHandler = (
426
+ event: MouseEvent | PointerEvent | TouchEvent,
427
+ option: DOMUtilsDoubleClickOption
428
+ ) => void | Promise<void>;
429
+
430
+ /**
431
+ * 双击的处理函数(传入了selector)
432
+ */
433
+ export declare type DOMUtilsDoubleClickHandlerWithSelector<T = HTMLElement> = (
434
+ event: MouseEvent | PointerEvent | TouchEvent,
435
+ $selector: T,
436
+ option: DOMUtilsDoubleClickOption
437
+ ) => void | Promise<void>;