@rc-component/trigger 1.18.3 → 2.0.0

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.
@@ -1,68 +1,29 @@
1
- import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
2
- import { warning } from "rc-util/es/warning";
3
1
  import { getShadowRoot } from "rc-util/es/Dom/shadow";
4
- import raf from "rc-util/es/raf";
2
+ import { warning } from "rc-util/es/warning";
5
3
  import * as React from 'react';
6
4
  import { getWin } from "../util";
7
5
  export default function useWinClick(open, clickToHide, targetEle, popupEle, mask, maskClosable, inPopupOrChild, triggerOpen) {
8
6
  var openRef = React.useRef(open);
9
-
10
- // Window click to hide should be lock to avoid trigger lock immediately
11
- var lockRef = React.useRef(false);
12
- if (openRef.current !== open) {
13
- lockRef.current = true;
14
- openRef.current = open;
15
- }
16
- React.useEffect(function () {
17
- var id = raf(function () {
18
- lockRef.current = false;
19
- });
20
- return function () {
21
- raf.cancel(id);
22
- };
23
- }, [open]);
7
+ openRef.current = open;
24
8
 
25
9
  // Click to hide is special action since click popup element should not hide
26
10
  React.useEffect(function () {
27
11
  if (clickToHide && popupEle && (!mask || maskClosable)) {
28
- var genClickEvents = function genClickEvents() {
29
- var clickInside = false;
30
-
31
- // User may mouseDown inside and drag out of popup and mouse up
32
- // Record here to prevent close
33
- var onWindowMouseDown = function onWindowMouseDown(_ref) {
34
- var target = _ref.target;
35
- clickInside = inPopupOrChild(target);
36
- };
37
- var onWindowClick = function onWindowClick(_ref2) {
38
- var target = _ref2.target;
39
- if (!lockRef.current && openRef.current && !clickInside && !inPopupOrChild(target)) {
40
- triggerOpen(false);
41
- }
42
- };
43
- return [onWindowMouseDown, onWindowClick];
12
+ var onTriggerClose = function onTriggerClose(_ref) {
13
+ var target = _ref.target;
14
+ if (openRef.current && !inPopupOrChild(target)) {
15
+ triggerOpen(false);
16
+ }
44
17
  };
45
-
46
- // Events
47
- var _genClickEvents = genClickEvents(),
48
- _genClickEvents2 = _slicedToArray(_genClickEvents, 2),
49
- onWinMouseDown = _genClickEvents2[0],
50
- onWinClick = _genClickEvents2[1];
51
- var _genClickEvents3 = genClickEvents(),
52
- _genClickEvents4 = _slicedToArray(_genClickEvents3, 2),
53
- onShadowMouseDown = _genClickEvents4[0],
54
- onShadowClick = _genClickEvents4[1];
55
18
  var win = getWin(popupEle);
56
- win.addEventListener('mousedown', onWinMouseDown, true);
57
- win.addEventListener('click', onWinClick, true);
58
- win.addEventListener('contextmenu', onWinClick, true);
19
+ win.addEventListener('mousedown', onTriggerClose, true);
20
+ win.addEventListener('contextmenu', onTriggerClose, true);
59
21
 
60
22
  // shadow root
61
23
  var targetShadowRoot = getShadowRoot(targetEle);
62
24
  if (targetShadowRoot) {
63
- targetShadowRoot.addEventListener('mousedown', onShadowMouseDown, true);
64
- targetShadowRoot.addEventListener('click', onShadowClick, true);
65
- targetShadowRoot.addEventListener('contextmenu', onShadowClick, true);
25
+ targetShadowRoot.addEventListener('mousedown', onTriggerClose, true);
26
+ targetShadowRoot.addEventListener('contextmenu', onTriggerClose, true);
66
27
  }
67
28
 
68
29
  // Warning if target and popup not in same root
@@ -73,13 +34,11 @@ export default function useWinClick(open, clickToHide, targetEle, popupEle, mask
73
34
  warning(targetRoot === popupRoot, "trigger element and popup element should in same shadow root.");
74
35
  }
75
36
  return function () {
76
- win.removeEventListener('mousedown', onWinMouseDown, true);
77
- win.removeEventListener('click', onWinClick, true);
78
- win.removeEventListener('contextmenu', onWinClick, true);
37
+ win.removeEventListener('mousedown', onTriggerClose, true);
38
+ win.removeEventListener('contextmenu', onTriggerClose, true);
79
39
  if (targetShadowRoot) {
80
- targetShadowRoot.removeEventListener('mousedown', onShadowMouseDown, true);
81
- targetShadowRoot.removeEventListener('click', onShadowClick, true);
82
- targetShadowRoot.removeEventListener('contextmenu', onShadowClick, true);
40
+ targetShadowRoot.removeEventListener('mousedown', onTriggerClose, true);
41
+ targetShadowRoot.removeEventListener('contextmenu', onTriggerClose, true);
83
42
  }
84
43
  };
85
44
  }
package/es/mock.js CHANGED
@@ -16,7 +16,7 @@ var MockPortal = function MockPortal(_ref) {
16
16
  React.useEffect(function () {
17
17
  if (open) {
18
18
  setVisible(true);
19
- } else if (!open && autoDestroy) {
19
+ } else if (autoDestroy) {
20
20
  setVisible(false);
21
21
  }
22
22
  }, [open, autoDestroy]);
@@ -1,76 +1,36 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
4
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
5
4
  Object.defineProperty(exports, "__esModule", {
6
5
  value: true
7
6
  });
8
7
  exports.default = useWinClick;
9
- var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
10
- var _warning = require("rc-util/lib/warning");
11
8
  var _shadow = require("rc-util/lib/Dom/shadow");
12
- var _raf = _interopRequireDefault(require("rc-util/lib/raf"));
9
+ var _warning = require("rc-util/lib/warning");
13
10
  var React = _interopRequireWildcard(require("react"));
14
11
  var _util = require("../util");
15
12
  function useWinClick(open, clickToHide, targetEle, popupEle, mask, maskClosable, inPopupOrChild, triggerOpen) {
16
13
  var openRef = React.useRef(open);
17
-
18
- // Window click to hide should be lock to avoid trigger lock immediately
19
- var lockRef = React.useRef(false);
20
- if (openRef.current !== open) {
21
- lockRef.current = true;
22
- openRef.current = open;
23
- }
24
- React.useEffect(function () {
25
- var id = (0, _raf.default)(function () {
26
- lockRef.current = false;
27
- });
28
- return function () {
29
- _raf.default.cancel(id);
30
- };
31
- }, [open]);
14
+ openRef.current = open;
32
15
 
33
16
  // Click to hide is special action since click popup element should not hide
34
17
  React.useEffect(function () {
35
18
  if (clickToHide && popupEle && (!mask || maskClosable)) {
36
- var genClickEvents = function genClickEvents() {
37
- var clickInside = false;
38
-
39
- // User may mouseDown inside and drag out of popup and mouse up
40
- // Record here to prevent close
41
- var onWindowMouseDown = function onWindowMouseDown(_ref) {
42
- var target = _ref.target;
43
- clickInside = inPopupOrChild(target);
44
- };
45
- var onWindowClick = function onWindowClick(_ref2) {
46
- var target = _ref2.target;
47
- if (!lockRef.current && openRef.current && !clickInside && !inPopupOrChild(target)) {
48
- triggerOpen(false);
49
- }
50
- };
51
- return [onWindowMouseDown, onWindowClick];
19
+ var onTriggerClose = function onTriggerClose(_ref) {
20
+ var target = _ref.target;
21
+ if (openRef.current && !inPopupOrChild(target)) {
22
+ triggerOpen(false);
23
+ }
52
24
  };
53
-
54
- // Events
55
- var _genClickEvents = genClickEvents(),
56
- _genClickEvents2 = (0, _slicedToArray2.default)(_genClickEvents, 2),
57
- onWinMouseDown = _genClickEvents2[0],
58
- onWinClick = _genClickEvents2[1];
59
- var _genClickEvents3 = genClickEvents(),
60
- _genClickEvents4 = (0, _slicedToArray2.default)(_genClickEvents3, 2),
61
- onShadowMouseDown = _genClickEvents4[0],
62
- onShadowClick = _genClickEvents4[1];
63
25
  var win = (0, _util.getWin)(popupEle);
64
- win.addEventListener('mousedown', onWinMouseDown, true);
65
- win.addEventListener('click', onWinClick, true);
66
- win.addEventListener('contextmenu', onWinClick, true);
26
+ win.addEventListener('mousedown', onTriggerClose, true);
27
+ win.addEventListener('contextmenu', onTriggerClose, true);
67
28
 
68
29
  // shadow root
69
30
  var targetShadowRoot = (0, _shadow.getShadowRoot)(targetEle);
70
31
  if (targetShadowRoot) {
71
- targetShadowRoot.addEventListener('mousedown', onShadowMouseDown, true);
72
- targetShadowRoot.addEventListener('click', onShadowClick, true);
73
- targetShadowRoot.addEventListener('contextmenu', onShadowClick, true);
32
+ targetShadowRoot.addEventListener('mousedown', onTriggerClose, true);
33
+ targetShadowRoot.addEventListener('contextmenu', onTriggerClose, true);
74
34
  }
75
35
 
76
36
  // Warning if target and popup not in same root
@@ -81,13 +41,11 @@ function useWinClick(open, clickToHide, targetEle, popupEle, mask, maskClosable,
81
41
  (0, _warning.warning)(targetRoot === popupRoot, "trigger element and popup element should in same shadow root.");
82
42
  }
83
43
  return function () {
84
- win.removeEventListener('mousedown', onWinMouseDown, true);
85
- win.removeEventListener('click', onWinClick, true);
86
- win.removeEventListener('contextmenu', onWinClick, true);
44
+ win.removeEventListener('mousedown', onTriggerClose, true);
45
+ win.removeEventListener('contextmenu', onTriggerClose, true);
87
46
  if (targetShadowRoot) {
88
- targetShadowRoot.removeEventListener('mousedown', onShadowMouseDown, true);
89
- targetShadowRoot.removeEventListener('click', onShadowClick, true);
90
- targetShadowRoot.removeEventListener('contextmenu', onShadowClick, true);
47
+ targetShadowRoot.removeEventListener('mousedown', onTriggerClose, true);
48
+ targetShadowRoot.removeEventListener('contextmenu', onTriggerClose, true);
91
49
  }
92
50
  };
93
51
  }
package/lib/mock.js CHANGED
@@ -24,7 +24,7 @@ var MockPortal = function MockPortal(_ref) {
24
24
  React.useEffect(function () {
25
25
  if (open) {
26
26
  setVisible(true);
27
- } else if (!open && autoDestroy) {
27
+ } else if (autoDestroy) {
28
28
  setVisible(false);
29
29
  }
30
30
  }, [open, autoDestroy]);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rc-component/trigger",
3
- "version": "1.18.3",
3
+ "version": "2.0.0",
4
4
  "description": "base abstract trigger component for react",
5
5
  "engines": {
6
6
  "node": ">=8.x"