@ringcentral/juno 2.2.0 → 2.3.3
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/README.md +1 -2
- package/components/Animations/Highlight/Highlight.d.ts +2 -2
- package/components/Badge/Badge.js +1 -1
- package/components/Downshift/SuggestionList/utils/useSuggestionList.js +1 -2
- package/components/Downshift/utils/useDownshift.js +2 -3
- package/components/Downshift/utils/useDownshiftTag.js +1 -2
- package/components/Forms/Picker/DatePicker/DatePicker.js +10 -11
- package/components/Forms/Select/PlainSelect/PlainSelect.js +1 -2
- package/components/Forms/TextField/styles/ClearIconButton.d.ts +3 -6
- package/components/Forms/TextField/styles/ClearIconButton.js +16 -9
- package/components/PortalHost/Connectable/ThrottleScheduler.d.ts +0 -1
- package/components/PortalHost/Connectable/ThrottleScheduler.js +3 -5
- package/components/Table/Table.d.ts +14 -0
- package/components/Table/Table.js +17 -0
- package/components/Table/TableBody/TableBody.d.ts +8 -0
- package/components/Table/TableBody/TableBody.js +14 -0
- package/components/Table/TableBody/index.d.ts +1 -0
- package/components/Table/TableBody/index.js +4 -0
- package/components/Table/TableCell/TableCell.d.ts +27 -0
- package/components/Table/TableCell/TableCell.js +39 -0
- package/components/Table/TableCell/index.d.ts +1 -0
- package/components/Table/TableCell/index.js +4 -0
- package/components/Table/TableCell/styles/TableCellStyle.d.ts +3 -0
- package/components/Table/TableCell/styles/TableCellStyle.js +16 -0
- package/components/Table/TableCell/styles/index.d.ts +1 -0
- package/components/Table/TableCell/styles/index.js +4 -0
- package/components/Table/TableCell/utils/TableCellUtils.d.ts +1 -0
- package/components/Table/TableCell/utils/TableCellUtils.js +4 -0
- package/components/Table/TableCell/utils/index.d.ts +1 -0
- package/components/Table/TableCell/utils/index.js +4 -0
- package/components/Table/TableContainer/TableContainer.d.ts +19 -0
- package/components/Table/TableContainer/TableContainer.js +22 -0
- package/components/Table/TableContainer/index.d.ts +1 -0
- package/components/Table/TableContainer/index.js +4 -0
- package/components/Table/TableContainer/styles/TableContainerStyle.d.ts +3 -0
- package/components/Table/TableContainer/styles/TableContainerStyle.js +13 -0
- package/components/Table/TableContainer/styles/index.d.ts +1 -0
- package/components/Table/TableContainer/styles/index.js +4 -0
- package/components/Table/TableHead/TableHead.d.ts +8 -0
- package/components/Table/TableHead/TableHead.js +14 -0
- package/components/Table/TableHead/index.d.ts +1 -0
- package/components/Table/TableHead/index.js +4 -0
- package/components/Table/TableRow/TableRow.d.ts +15 -0
- package/components/Table/TableRow/TableRow.js +20 -0
- package/components/Table/TableRow/index.d.ts +1 -0
- package/components/Table/TableRow/index.js +4 -0
- package/components/Table/TableRow/styles/TableRowStyle.d.ts +3 -0
- package/components/Table/TableRow/styles/TableRowStyle.js +9 -0
- package/components/Table/TableRow/styles/index.d.ts +1 -0
- package/components/Table/TableRow/styles/index.js +4 -0
- package/components/Table/TableRow/utils/TableRowUtils.d.ts +1 -0
- package/components/Table/TableRow/utils/TableRowUtils.js +4 -0
- package/components/Table/TableRow/utils/index.d.ts +1 -0
- package/components/Table/TableRow/utils/index.js +4 -0
- package/components/Table/context.d.ts +10 -0
- package/components/Table/context.js +4 -0
- package/components/Table/index.d.ts +8 -0
- package/components/Table/index.js +10 -0
- package/components/Table/types.d.ts +1 -0
- package/components/Table/types.js +2 -0
- package/components/Tables/TableHead.d.ts +1 -1
- package/components/Tables/TableHead.js +1 -3
- package/components/Tables/TableHeadCell.d.ts +1 -1
- package/components/Tables/TableHeadCell.js +1 -2
- package/components/Tooltip/utils/useTooltipForceHide.js +24 -10
- package/components/index.d.ts +1 -1
- package/components/index.js +1 -1
- package/es6/README.md +1 -2
- package/es6/components/Badge/Badge.js +2 -2
- package/es6/components/Downshift/SuggestionList/utils/useSuggestionList.js +1 -2
- package/es6/components/Downshift/utils/useDownshift.js +1 -2
- package/es6/components/Downshift/utils/useDownshiftTag.js +1 -2
- package/es6/components/Forms/Picker/DatePicker/DatePicker.js +1 -2
- package/es6/components/Forms/Select/PlainSelect/PlainSelect.js +1 -2
- package/es6/components/Forms/TextField/styles/ClearIconButton.js +16 -9
- package/es6/components/PortalHost/Connectable/ThrottleScheduler.js +3 -5
- package/es6/components/Table/Table.js +15 -0
- package/es6/components/Table/TableBody/TableBody.js +12 -0
- package/es6/components/Table/TableBody/index.js +1 -0
- package/es6/components/Table/TableCell/TableCell.js +37 -0
- package/es6/components/Table/TableCell/index.js +1 -0
- package/es6/components/Table/TableCell/styles/TableCellStyle.js +14 -0
- package/es6/components/Table/TableCell/styles/index.js +1 -0
- package/es6/components/Table/TableCell/utils/TableCellUtils.js +2 -0
- package/es6/components/Table/TableCell/utils/index.js +1 -0
- package/es6/components/Table/TableContainer/TableContainer.js +20 -0
- package/es6/components/Table/TableContainer/index.js +1 -0
- package/es6/components/Table/TableContainer/styles/TableContainerStyle.js +11 -0
- package/es6/components/Table/TableContainer/styles/index.js +1 -0
- package/es6/components/Table/TableHead/TableHead.js +12 -0
- package/es6/components/Table/TableHead/index.js +1 -0
- package/es6/components/Table/TableRow/TableRow.js +18 -0
- package/es6/components/Table/TableRow/index.js +1 -0
- package/es6/components/Table/TableRow/styles/TableRowStyle.js +7 -0
- package/es6/components/Table/TableRow/styles/index.js +1 -0
- package/es6/components/Table/TableRow/utils/TableRowUtils.js +2 -0
- package/es6/components/Table/TableRow/utils/index.js +1 -0
- package/es6/components/Table/context.js +2 -0
- package/es6/components/Table/index.js +7 -0
- package/es6/components/Table/types.js +0 -0
- package/es6/components/Tables/TableHead.js +1 -3
- package/es6/components/Tables/TableHeadCell.js +2 -3
- package/es6/components/Tooltip/utils/useTooltipForceHide.js +25 -11
- package/es6/components/index.js +1 -1
- package/es6/foundation/hooks/index.js +2 -0
- package/es6/foundation/hooks/useControlled/index.js +1 -0
- package/es6/foundation/hooks/useControlled/useControlled.js +1 -0
- package/es6/foundation/hooks/useEventListener/useEventListener.js +8 -6
- package/es6/foundation/hooks/useGlobalListener/index.js +1 -0
- package/es6/foundation/hooks/useGlobalListener/useGlobalListener.js +130 -0
- package/es6/foundation/hooks/useHiddenTabindex/useHiddenTabindex.js +4 -3
- package/es6/foundation/hooks/useLongPress/useLongPress.js +2 -3
- package/es6/foundation/hooks/useOverflow/useOverflow.js +18 -15
- package/es6/foundation/hooks/useResizeObserver/useResizeObserver.js +4 -4
- package/es6/foundation/hooks/useTouchMouseEvent/useTouchMouseEvent.js +8 -5
- package/es6/foundation/utils/getRefElement.js +13 -0
- package/es6/foundation/utils/index.js +1 -0
- package/es6/foundation/utils/removeClassName.js +4 -3
- package/es6/foundation/utils/selectionHandler.js +7 -6
- package/foundation/hooks/index.d.ts +2 -0
- package/foundation/hooks/index.js +2 -0
- package/foundation/hooks/useControlled/index.d.ts +1 -0
- package/foundation/hooks/useControlled/index.js +4 -0
- package/foundation/hooks/useControlled/useControlled.d.ts +1 -0
- package/foundation/hooks/useControlled/useControlled.js +4 -0
- package/foundation/hooks/useEventListener/useEventListener.d.ts +2 -2
- package/foundation/hooks/useEventListener/useEventListener.js +8 -6
- package/foundation/hooks/useGlobalListener/index.d.ts +1 -0
- package/foundation/hooks/useGlobalListener/index.js +4 -0
- package/foundation/hooks/useGlobalListener/useGlobalListener.d.ts +108 -0
- package/foundation/hooks/useGlobalListener/useGlobalListener.js +133 -0
- package/foundation/hooks/useHiddenTabindex/useHiddenTabindex.d.ts +2 -2
- package/foundation/hooks/useHiddenTabindex/useHiddenTabindex.js +4 -3
- package/foundation/hooks/useLongPress/useLongPress.js +1 -2
- package/foundation/hooks/useOverflow/useOverflow.d.ts +2 -3
- package/foundation/hooks/useOverflow/useOverflow.js +18 -15
- package/foundation/hooks/useResizeObserver/useResizeObserver.d.ts +2 -3
- package/foundation/hooks/useResizeObserver/useResizeObserver.js +3 -3
- package/foundation/hooks/useTouchMouseEvent/useTouchMouseEvent.d.ts +5 -1
- package/foundation/hooks/useTouchMouseEvent/useTouchMouseEvent.js +8 -5
- package/foundation/theme/theme.type.d.ts +6 -3
- package/foundation/utils/getRefElement.d.ts +6 -0
- package/foundation/utils/getRefElement.js +15 -0
- package/foundation/utils/index.d.ts +1 -0
- package/foundation/utils/index.js +1 -0
- package/foundation/utils/removeClassName.d.ts +3 -3
- package/foundation/utils/removeClassName.js +4 -3
- package/foundation/utils/selectionHandler.d.ts +3 -3
- package/foundation/utils/selectionHandler.js +7 -6
- package/package.json +1 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
import { RefOrElementOrCallback } from '../../utils';
|
|
2
2
|
/**
|
|
3
3
|
* bind event when component mount and auto remove event when destroy.
|
|
4
4
|
* can remove listener by call returned function or pass empty 'target'.
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
* useEventListener(window, 'keyup', () => console.log('window key up'))
|
|
15
15
|
* ```
|
|
16
16
|
*/
|
|
17
|
-
export declare function useEventListener(target?:
|
|
17
|
+
export declare function useEventListener(target?: RefOrElementOrCallback | EventTarget, ...o: Parameters<EventTarget['addEventListener']>): {
|
|
18
18
|
listen: () => void;
|
|
19
19
|
remove: () => void;
|
|
20
20
|
};
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
var tslib_1 = require("tslib");
|
|
4
4
|
var react_1 = require("react");
|
|
5
|
-
var
|
|
5
|
+
var utils_1 = require("../../utils");
|
|
6
6
|
var useEventCallback_1 = require("../useEventCallback");
|
|
7
7
|
/**
|
|
8
8
|
* bind event when component mount and auto remove event when destroy.
|
|
@@ -28,16 +28,18 @@ function useEventListener(target) {
|
|
|
28
28
|
var listener = useEventCallback_1.useEventCallback(cb);
|
|
29
29
|
var cancelRef = react_1.useRef(function () { });
|
|
30
30
|
var bindRef = react_1.useRef(function () { });
|
|
31
|
-
var currentRefElm =
|
|
31
|
+
var currentRefElm = utils_1.getRefElement(target);
|
|
32
32
|
react_1.useEffect(function () {
|
|
33
33
|
if (!target)
|
|
34
34
|
return;
|
|
35
|
-
var
|
|
36
|
-
if (!
|
|
35
|
+
var currentElm = utils_1.getRefElement(target);
|
|
36
|
+
if (!currentElm) {
|
|
37
37
|
return cancelRef.current;
|
|
38
38
|
}
|
|
39
|
-
bindRef.current = function () { return
|
|
40
|
-
cancelRef.current = function () {
|
|
39
|
+
bindRef.current = function () { return currentElm.addEventListener(key, listener, options); };
|
|
40
|
+
cancelRef.current = function () {
|
|
41
|
+
return currentElm.removeEventListener(key, listener, options);
|
|
42
|
+
};
|
|
41
43
|
bindRef.current();
|
|
42
44
|
return cancelRef.current;
|
|
43
45
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './useGlobalListener';
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
/// <reference types="styled-jsx" />
|
|
3
|
+
import { RefOrElementOrCallback } from '../../utils';
|
|
4
|
+
export declare const globalListenerEventMap: Map<string, {
|
|
5
|
+
/**
|
|
6
|
+
* listener exec method
|
|
7
|
+
*/
|
|
8
|
+
exec: (e: any) => void;
|
|
9
|
+
/**
|
|
10
|
+
* all listener
|
|
11
|
+
*/
|
|
12
|
+
listeners: Set<(e: any) => void>;
|
|
13
|
+
}>;
|
|
14
|
+
/**
|
|
15
|
+
* create globalListener handler for share one listener event
|
|
16
|
+
*
|
|
17
|
+
* @example
|
|
18
|
+
* ```ts
|
|
19
|
+
* const globalListener = createGlobalListener('focus', () => { console.log('focus') });
|
|
20
|
+
* const globalListener2 = createGlobalListener('focus', () => { console.log('focus') });
|
|
21
|
+
* globalListener.listen();
|
|
22
|
+
* globalListener2.listen();
|
|
23
|
+
*
|
|
24
|
+
* => // that will only create an event listener on window, but every callback will get emit value when event triggered
|
|
25
|
+
* ```
|
|
26
|
+
*/
|
|
27
|
+
export declare const createGlobalListener: (key: string, listener: EventListener, { customKey, target: targetProp, }?: {
|
|
28
|
+
/**
|
|
29
|
+
* custom key for determining different event group, default is same as `key`
|
|
30
|
+
*/
|
|
31
|
+
customKey?: string | undefined;
|
|
32
|
+
/**
|
|
33
|
+
* custom binding event target, default is `window`
|
|
34
|
+
*/
|
|
35
|
+
target?: EventTarget | HTMLElement | import("react").RefObject<HTMLElement> | (() => HTMLElement) | undefined;
|
|
36
|
+
}) => {
|
|
37
|
+
/**
|
|
38
|
+
* bind listener again
|
|
39
|
+
*/
|
|
40
|
+
listen: () => void;
|
|
41
|
+
/**
|
|
42
|
+
* remove listener
|
|
43
|
+
*/
|
|
44
|
+
remove: () => void;
|
|
45
|
+
/**
|
|
46
|
+
* current listener state
|
|
47
|
+
*/
|
|
48
|
+
readonly state: {
|
|
49
|
+
/**
|
|
50
|
+
* current listener state count
|
|
51
|
+
*/
|
|
52
|
+
readonly count: number;
|
|
53
|
+
/**
|
|
54
|
+
* is that be listening
|
|
55
|
+
*/
|
|
56
|
+
listening: boolean;
|
|
57
|
+
};
|
|
58
|
+
};
|
|
59
|
+
/**
|
|
60
|
+
* bind global event, when you bind same key event,
|
|
61
|
+
* that will reuse one event listener and trigger both callback once that listener be triggered.
|
|
62
|
+
*
|
|
63
|
+
* also you can control listener with method `listen` and `remove`
|
|
64
|
+
* and get listener `state` for check listener count number and current listing state.
|
|
65
|
+
*
|
|
66
|
+
* - `key` `options` only work when set first time, never change after first render
|
|
67
|
+
*
|
|
68
|
+
* @example
|
|
69
|
+
* ```ts
|
|
70
|
+
* useGlobalListener('keyup', () => console.log('window key up1'))
|
|
71
|
+
* useGlobalListener('keyup', () => console.log('window key up2'))
|
|
72
|
+
* useGlobalListener('keyup', () => console.log('window key up3'))
|
|
73
|
+
*
|
|
74
|
+
* => // that will only create an event listener on `window`, but every callback will get emit value when event triggered
|
|
75
|
+
* ```
|
|
76
|
+
*/
|
|
77
|
+
export declare function useGlobalListener(key: string, listener: EventListener, options?: {
|
|
78
|
+
/**
|
|
79
|
+
* custom key for determining different event group, default is same as `key`
|
|
80
|
+
*/
|
|
81
|
+
customKey?: string;
|
|
82
|
+
/**
|
|
83
|
+
* custom binding event target, default is `window`
|
|
84
|
+
*/
|
|
85
|
+
target?: RefOrElementOrCallback | EventTarget;
|
|
86
|
+
}): {
|
|
87
|
+
/**
|
|
88
|
+
* bind listener again
|
|
89
|
+
*/
|
|
90
|
+
listen: () => void;
|
|
91
|
+
/**
|
|
92
|
+
* remove listener
|
|
93
|
+
*/
|
|
94
|
+
remove: () => void;
|
|
95
|
+
/**
|
|
96
|
+
* current listener state
|
|
97
|
+
*/
|
|
98
|
+
readonly state: {
|
|
99
|
+
/**
|
|
100
|
+
* current listener state count
|
|
101
|
+
*/
|
|
102
|
+
readonly count: number;
|
|
103
|
+
/**
|
|
104
|
+
* is that be listening
|
|
105
|
+
*/
|
|
106
|
+
listening: boolean;
|
|
107
|
+
};
|
|
108
|
+
};
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
var react_1 = require("react");
|
|
4
|
+
var utils_1 = require("../../utils");
|
|
5
|
+
var useEventCallback_1 = require("../useEventCallback");
|
|
6
|
+
exports.globalListenerEventMap = new Map();
|
|
7
|
+
/**
|
|
8
|
+
* create globalListener handler for share one listener event
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```ts
|
|
12
|
+
* const globalListener = createGlobalListener('focus', () => { console.log('focus') });
|
|
13
|
+
* const globalListener2 = createGlobalListener('focus', () => { console.log('focus') });
|
|
14
|
+
* globalListener.listen();
|
|
15
|
+
* globalListener2.listen();
|
|
16
|
+
*
|
|
17
|
+
* => // that will only create an event listener on window, but every callback will get emit value when event triggered
|
|
18
|
+
* ```
|
|
19
|
+
*/
|
|
20
|
+
exports.createGlobalListener = function (key, listener, _a) {
|
|
21
|
+
var _b = _a === void 0 ? {} : _a, _c = _b.customKey, customKey = _c === void 0 ? key : _c, _d = _b.target, targetProp = _d === void 0 ? window : _d;
|
|
22
|
+
var listening = false;
|
|
23
|
+
var getMapValue = function () { return exports.globalListenerEventMap.get(customKey); };
|
|
24
|
+
var addListener = function () {
|
|
25
|
+
if (listening)
|
|
26
|
+
return;
|
|
27
|
+
var savedEvent = getMapValue();
|
|
28
|
+
if (!(savedEvent === null || savedEvent === void 0 ? void 0 : savedEvent.exec)) {
|
|
29
|
+
var exec = function (e) {
|
|
30
|
+
var event = getMapValue();
|
|
31
|
+
event === null || event === void 0 ? void 0 : event.listeners.forEach(function (c) { return c(e); });
|
|
32
|
+
};
|
|
33
|
+
exports.globalListenerEventMap.set(customKey, {
|
|
34
|
+
exec: exec,
|
|
35
|
+
listeners: new Set([listener]),
|
|
36
|
+
});
|
|
37
|
+
var target = utils_1.getRefElement(targetProp);
|
|
38
|
+
target === null || target === void 0 ? void 0 : target.addEventListener(key, exec);
|
|
39
|
+
}
|
|
40
|
+
else {
|
|
41
|
+
savedEvent.listeners.add(listener);
|
|
42
|
+
}
|
|
43
|
+
listening = true;
|
|
44
|
+
};
|
|
45
|
+
var removeListener = function () {
|
|
46
|
+
if (!listening)
|
|
47
|
+
return;
|
|
48
|
+
listening = false;
|
|
49
|
+
var _savedEvent = getMapValue();
|
|
50
|
+
if (!_savedEvent)
|
|
51
|
+
return;
|
|
52
|
+
var listeners = _savedEvent.listeners;
|
|
53
|
+
listeners.delete(listener);
|
|
54
|
+
if (listeners.size === 0) {
|
|
55
|
+
var target = utils_1.getRefElement(targetProp);
|
|
56
|
+
target === null || target === void 0 ? void 0 : target.removeEventListener(key, _savedEvent.exec);
|
|
57
|
+
exports.globalListenerEventMap.delete(customKey);
|
|
58
|
+
}
|
|
59
|
+
};
|
|
60
|
+
return {
|
|
61
|
+
/**
|
|
62
|
+
* bind listener again
|
|
63
|
+
*/
|
|
64
|
+
listen: function () { return addListener(); },
|
|
65
|
+
/**
|
|
66
|
+
* remove listener
|
|
67
|
+
*/
|
|
68
|
+
remove: function () { return removeListener(); },
|
|
69
|
+
/**
|
|
70
|
+
* current listener state
|
|
71
|
+
*/
|
|
72
|
+
get state() {
|
|
73
|
+
return {
|
|
74
|
+
/**
|
|
75
|
+
* current listener state count
|
|
76
|
+
*/
|
|
77
|
+
get count() {
|
|
78
|
+
var _a;
|
|
79
|
+
return ((_a = getMapValue()) === null || _a === void 0 ? void 0 : _a.listeners.size) || 0;
|
|
80
|
+
},
|
|
81
|
+
/**
|
|
82
|
+
* is that be listening
|
|
83
|
+
*/
|
|
84
|
+
listening: listening,
|
|
85
|
+
};
|
|
86
|
+
},
|
|
87
|
+
};
|
|
88
|
+
};
|
|
89
|
+
/**
|
|
90
|
+
* bind global event, when you bind same key event,
|
|
91
|
+
* that will reuse one event listener and trigger both callback once that listener be triggered.
|
|
92
|
+
*
|
|
93
|
+
* also you can control listener with method `listen` and `remove`
|
|
94
|
+
* and get listener `state` for check listener count number and current listing state.
|
|
95
|
+
*
|
|
96
|
+
* - `key` `options` only work when set first time, never change after first render
|
|
97
|
+
*
|
|
98
|
+
* @example
|
|
99
|
+
* ```ts
|
|
100
|
+
* useGlobalListener('keyup', () => console.log('window key up1'))
|
|
101
|
+
* useGlobalListener('keyup', () => console.log('window key up2'))
|
|
102
|
+
* useGlobalListener('keyup', () => console.log('window key up3'))
|
|
103
|
+
*
|
|
104
|
+
* => // that will only create an event listener on `window`, but every callback will get emit value when event triggered
|
|
105
|
+
* ```
|
|
106
|
+
*/
|
|
107
|
+
function useGlobalListener(key, listener, options) {
|
|
108
|
+
if (options === void 0) { options = {}; }
|
|
109
|
+
var _listener = useEventCallback_1.useEventCallback(listener);
|
|
110
|
+
var globalListener = react_1.useRef(exports.createGlobalListener(key, _listener, options)).current;
|
|
111
|
+
if (process.env.NODE_ENV !== 'production') {
|
|
112
|
+
var _a = options.customKey, customKey_1 = _a === void 0 ? key : _a, _b = options.target, targetProp_1 = _b === void 0 ? window : _b;
|
|
113
|
+
// eslint-disable-next-line react-hooks/rules-of-hooks
|
|
114
|
+
react_1.useEffect(function () {
|
|
115
|
+
var target = utils_1.getRefElement(targetProp_1);
|
|
116
|
+
if (target !== window && customKey_1 === key) {
|
|
117
|
+
utils_1.logInDev({
|
|
118
|
+
component: 'useGlobalListener',
|
|
119
|
+
message: 'When you custom binding event target, you must custom key for determining different event group',
|
|
120
|
+
level: 'error',
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
124
|
+
}, []);
|
|
125
|
+
}
|
|
126
|
+
react_1.useEffect(function () {
|
|
127
|
+
globalListener.listen();
|
|
128
|
+
return globalListener.remove;
|
|
129
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
130
|
+
}, []);
|
|
131
|
+
return globalListener;
|
|
132
|
+
}
|
|
133
|
+
exports.useGlobalListener = useGlobalListener;
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { RefOrElementOrCallback } from '../../utils';
|
|
2
2
|
/**
|
|
3
3
|
* group hidden logic, when binding events element focus,
|
|
4
4
|
* that hiddenRef will auto be `tabindex={-1}` *
|
|
5
5
|
*/
|
|
6
|
-
export declare const useHiddenTabindex: <T extends HTMLElement>(
|
|
6
|
+
export declare const useHiddenTabindex: <T extends HTMLElement>(target: RefOrElementOrCallback<T>) => {
|
|
7
7
|
onFocus: () => void;
|
|
8
8
|
onBlur: () => void;
|
|
9
9
|
};
|
|
@@ -1,19 +1,20 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
var utils_1 = require("../../utils");
|
|
3
4
|
var useEventCallback_1 = require("../useEventCallback");
|
|
4
5
|
/**
|
|
5
6
|
* group hidden logic, when binding events element focus,
|
|
6
7
|
* that hiddenRef will auto be `tabindex={-1}` *
|
|
7
8
|
*/
|
|
8
|
-
exports.useHiddenTabindex = function (
|
|
9
|
+
exports.useHiddenTabindex = function (target) {
|
|
9
10
|
var handleFocus = useEventCallback_1.useEventCallback(function () {
|
|
10
|
-
var hiddenElm =
|
|
11
|
+
var hiddenElm = utils_1.getRefElement(target);
|
|
11
12
|
if (hiddenElm && hiddenElm.tabIndex === 0) {
|
|
12
13
|
hiddenElm.tabIndex = -1;
|
|
13
14
|
}
|
|
14
15
|
});
|
|
15
16
|
var handleBlur = useEventCallback_1.useEventCallback(function () {
|
|
16
|
-
var hiddenElm =
|
|
17
|
+
var hiddenElm = utils_1.getRefElement(target);
|
|
17
18
|
if (hiddenElm && hiddenElm.tabIndex === -1) {
|
|
18
19
|
hiddenElm.tabIndex = 0;
|
|
19
20
|
}
|
|
@@ -32,8 +32,7 @@ exports.useLongPress = function (_a, _b, _c) {
|
|
|
32
32
|
var end = function (e) {
|
|
33
33
|
// ! mouse up only trigger when up on element, so we host that in document
|
|
34
34
|
document.removeEventListener('mouseup', onMouseUp);
|
|
35
|
-
if (!isEmittedRef.current &&
|
|
36
|
-
useTouchMouseEvent_1.isElmEqualOrContainRef(e.target, elmRef)) {
|
|
35
|
+
if (!isEmittedRef.current && useTouchMouseEvent_1.isElmEqualOrContain(e.target, elmRef)) {
|
|
37
36
|
onTap === null || onTap === void 0 ? void 0 : onTap(e, reasonRef.current);
|
|
38
37
|
}
|
|
39
38
|
reasonRef.current = 'click';
|
|
@@ -1,10 +1,9 @@
|
|
|
1
|
-
|
|
2
|
-
/// <reference types="styled-jsx" />
|
|
1
|
+
import { RefOrElementOrCallback } from '../../utils';
|
|
3
2
|
import { PerformanceOptions } from '../useResizeObserver';
|
|
4
3
|
/**
|
|
5
4
|
* trigger when overflow state change
|
|
6
5
|
*/
|
|
7
|
-
export declare const useOverflow: (
|
|
6
|
+
export declare const useOverflow: (target: RefOrElementOrCallback<HTMLElement>, cb: (state: boolean, value: {
|
|
8
7
|
scrollWidth: number;
|
|
9
8
|
clientWidth: number;
|
|
10
9
|
scrollHeight: number;
|
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
var react_1 = require("react");
|
|
4
|
+
var utils_1 = require("../../utils");
|
|
4
5
|
var useResizeObserver_1 = require("../useResizeObserver");
|
|
5
6
|
/**
|
|
6
7
|
* trigger when overflow state change
|
|
7
8
|
*/
|
|
8
9
|
exports.useOverflow = function (
|
|
9
10
|
/** target element ref */
|
|
10
|
-
|
|
11
|
+
target,
|
|
11
12
|
/** trigger when `ResizeObserver` emit */
|
|
12
13
|
cb,
|
|
13
14
|
/**
|
|
@@ -22,19 +23,21 @@ performance) {
|
|
|
22
23
|
}; }
|
|
23
24
|
// * not have default value for that can trigger change first time.
|
|
24
25
|
var showRef = react_1.useRef();
|
|
25
|
-
return useResizeObserver_1.useResizeObserver(
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
26
|
+
return useResizeObserver_1.useResizeObserver(target, function () {
|
|
27
|
+
var element = utils_1.getRefElement(target);
|
|
28
|
+
if (!element)
|
|
29
|
+
return;
|
|
30
|
+
var scrollWidth = element.scrollWidth, clientWidth = element.clientWidth, scrollHeight = element.scrollHeight, clientHeight = element.clientHeight;
|
|
31
|
+
var show = scrollWidth > clientWidth || scrollHeight > clientHeight;
|
|
32
|
+
if (showRef.current === show)
|
|
33
|
+
return;
|
|
34
|
+
// only emit when state change
|
|
35
|
+
showRef.current = show;
|
|
36
|
+
cb(show, {
|
|
37
|
+
scrollWidth: scrollWidth,
|
|
38
|
+
clientWidth: clientWidth,
|
|
39
|
+
scrollHeight: scrollHeight,
|
|
40
|
+
clientHeight: clientHeight,
|
|
41
|
+
});
|
|
39
42
|
}, performance);
|
|
40
43
|
};
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
/// <reference types="styled-jsx" />
|
|
1
|
+
import { RefOrElementOrCallback } from '../../utils';
|
|
3
2
|
export declare type PerformanceOptions = {
|
|
4
3
|
/**
|
|
5
4
|
* mode that improve performance, default is debounce
|
|
@@ -24,4 +23,4 @@ export declare const getResizeObserver: (callback: ResizeObserverCallback, exter
|
|
|
24
23
|
* @param callback callback when element resize
|
|
25
24
|
* @param performance options that improve performance
|
|
26
25
|
*/
|
|
27
|
-
export declare const useResizeObserver: (
|
|
26
|
+
export declare const useResizeObserver: <T extends HTMLElement = HTMLElement>(target: RefOrElementOrCallback<T>, callback: ResizeObserverCallback, performance?: PerformanceOptions) => ResizeObserver;
|
|
@@ -40,7 +40,7 @@ exports.getResizeObserver = function (callback, externalWindow) {
|
|
|
40
40
|
*/
|
|
41
41
|
exports.useResizeObserver = function (
|
|
42
42
|
/** target element ref */
|
|
43
|
-
|
|
43
|
+
target,
|
|
44
44
|
/** trigger when `ResizeObserver` emit */
|
|
45
45
|
callback,
|
|
46
46
|
/** performance options, `mode`, `time`, `ignoreFireWhenObserve` */
|
|
@@ -76,8 +76,8 @@ performance) {
|
|
|
76
76
|
return exports.getResizeObserver(resizeCallback, externalWindow);
|
|
77
77
|
});
|
|
78
78
|
react_1.useLayoutEffect(function () {
|
|
79
|
+
var elm = utils_1.getRefElement(target);
|
|
79
80
|
var observer = observerRef.current;
|
|
80
|
-
var elm = ref.current;
|
|
81
81
|
if (!elm) {
|
|
82
82
|
throw new Error('please check element exist before bind resize observer');
|
|
83
83
|
}
|
|
@@ -87,6 +87,6 @@ performance) {
|
|
|
87
87
|
};
|
|
88
88
|
// TODO: wait https://github.com/facebook/react/pull/20477 eslint support to remove this exhaustive-deps comment with support custom hooks
|
|
89
89
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
90
|
-
}, [
|
|
90
|
+
}, [target]);
|
|
91
91
|
return observerRef.current;
|
|
92
92
|
};
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
/// <reference types="styled-jsx" />
|
|
2
2
|
import { MouseEventHandler, TouchEventHandler } from 'react';
|
|
3
|
+
import { RefOrElementOrCallback } from '../../utils';
|
|
3
4
|
export interface UseTouchMouseEvent<T> {
|
|
4
5
|
onMouseUp?: MouseEventHandler<T>;
|
|
5
6
|
onMouseDown?: MouseEventHandler<T>;
|
|
@@ -36,4 +37,7 @@ export declare const useTouchMouseEvent: <T = unknown>({ onMouseDown: onMouseDow
|
|
|
36
37
|
onMouseDown: (event: import("react").MouseEvent<T, MouseEvent>) => void;
|
|
37
38
|
onMouseUp: (e: any) => void;
|
|
38
39
|
};
|
|
39
|
-
|
|
40
|
+
/**
|
|
41
|
+
* check is element equal or contains target element
|
|
42
|
+
*/
|
|
43
|
+
export declare const isElmEqualOrContain: (sourceTarget: RefOrElementOrCallback<HTMLElement>, containTarget: RefOrElementOrCallback<HTMLElement>) => boolean | null;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
var react_1 = require("react");
|
|
4
|
+
var utils_1 = require("../../utils");
|
|
4
5
|
var useEventCallback_1 = require("../useEventCallback");
|
|
5
6
|
/**
|
|
6
7
|
* Provide a utils for switch trigger touch event or mouse event between different device
|
|
@@ -74,9 +75,11 @@ exports.useTouchMouseEvent = function (_a, _b) {
|
|
|
74
75
|
onMouseUp: onMouseUp,
|
|
75
76
|
};
|
|
76
77
|
};
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
78
|
+
/**
|
|
79
|
+
* check is element equal or contains target element
|
|
80
|
+
*/
|
|
81
|
+
exports.isElmEqualOrContain = function (sourceTarget, containTarget) {
|
|
82
|
+
var elm = utils_1.getRefElement(sourceTarget);
|
|
83
|
+
var target = utils_1.getRefElement(containTarget);
|
|
84
|
+
return elm && target && (target === elm || target.contains(elm));
|
|
82
85
|
};
|
|
@@ -38,7 +38,7 @@ import { RcResponsiveProps } from '../../components/Responsive';
|
|
|
38
38
|
import { RcSnackbarActionProps, RcSnackbarContentProps, RcSnackbarProps } from '../../components/Snackbar';
|
|
39
39
|
import { RcStepButtonProps, RcStepConnectorProps, RcStepIconProps, RcStepLabelProps, RcStepperProps, RcStepProps } from '../../components/Stepper';
|
|
40
40
|
import { RcTablePaginationProps } from '../../components/TablePagination';
|
|
41
|
-
import {
|
|
41
|
+
import { RcTableBodyProps, RcTableCellProps, RcTableContainerProps, RcTableHeadProps, RcTableProps, RcTableRowProps } from '../../components/Table';
|
|
42
42
|
import { RcTabListProps, RcTabPanelProps, RcTabProps, RcTabsProps } from '../../components/Tabs';
|
|
43
43
|
import { RcTagProps } from '../../components/Tag';
|
|
44
44
|
import { RcTextProps } from '../../components/Text';
|
|
@@ -180,9 +180,12 @@ export declare type RcTheme = {
|
|
|
180
180
|
RcStepLabel?: RcStepLabelProps;
|
|
181
181
|
RcStepper?: RcStepperProps;
|
|
182
182
|
RcTablePagination?: RcTablePaginationProps;
|
|
183
|
-
|
|
184
|
-
|
|
183
|
+
RcTableBody?: RcTableBodyProps;
|
|
184
|
+
RcTableCell?: RcTableCellProps;
|
|
185
|
+
RcTableContainer?: RcTableContainerProps;
|
|
186
|
+
RcTableHead?: RcTableHeadProps;
|
|
185
187
|
RcTable?: RcTableProps;
|
|
188
|
+
RcTableRow?: RcTableRowProps;
|
|
186
189
|
RcTab?: RcTabProps;
|
|
187
190
|
RcTabList?: RcTabListProps;
|
|
188
191
|
RcTabPanel?: RcTabPanelProps;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { RefObject } from 'react';
|
|
2
|
+
export declare type RefOrElementOrCallback<T extends HTMLElement = HTMLElement> = RefObject<T> | (() => T) | T;
|
|
3
|
+
/**
|
|
4
|
+
* get element from React ref or callback
|
|
5
|
+
*/
|
|
6
|
+
export declare const getRefElement: <T extends HTMLElement = HTMLElement>(ref: RefOrElementOrCallback<T>) => T | null;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
var isRef_1 = require("./isRef");
|
|
4
|
+
/**
|
|
5
|
+
* get element from React ref or callback
|
|
6
|
+
*/
|
|
7
|
+
exports.getRefElement = function (ref) {
|
|
8
|
+
if (typeof ref === 'function') {
|
|
9
|
+
return ref();
|
|
10
|
+
}
|
|
11
|
+
if (isRef_1.isRef(ref)) {
|
|
12
|
+
return ref.current;
|
|
13
|
+
}
|
|
14
|
+
return ref;
|
|
15
|
+
};
|
|
@@ -4,6 +4,7 @@ export * from './classes';
|
|
|
4
4
|
export * from './clearReactReferencesInNode';
|
|
5
5
|
export * from './combineProps';
|
|
6
6
|
export * from './deepmerge';
|
|
7
|
+
export * from './getRefElement';
|
|
7
8
|
export * from './getScrollbarSize';
|
|
8
9
|
export * from './hasValue';
|
|
9
10
|
export * from './isRcElement';
|
|
@@ -7,6 +7,7 @@ tslib_1.__exportStar(require("./classes"), exports);
|
|
|
7
7
|
tslib_1.__exportStar(require("./clearReactReferencesInNode"), exports);
|
|
8
8
|
tslib_1.__exportStar(require("./combineProps"), exports);
|
|
9
9
|
tslib_1.__exportStar(require("./deepmerge"), exports);
|
|
10
|
+
tslib_1.__exportStar(require("./getRefElement"), exports);
|
|
10
11
|
tslib_1.__exportStar(require("./getScrollbarSize"), exports);
|
|
11
12
|
tslib_1.__exportStar(require("./hasValue"), exports);
|
|
12
13
|
tslib_1.__exportStar(require("./isRcElement"), exports);
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { RefOrElementOrCallback } from './getRefElement';
|
|
2
2
|
declare type RemoveClassNameOptions = {
|
|
3
3
|
/**
|
|
4
4
|
* make replace also scan child nodes
|
|
@@ -16,7 +16,7 @@ declare type RemoveClassNameOptions = {
|
|
|
16
16
|
/**
|
|
17
17
|
* remove className from element, default will not scan child nodes, if you want to scan child nodes, set `scanChildren` to `true`.
|
|
18
18
|
*
|
|
19
|
-
* @param
|
|
19
|
+
* @param target target element reference or element or callback
|
|
20
20
|
* @param removeClass className to remove, default will use class `includes` to check, if you want to use full match, set `fullMatch` to `true`
|
|
21
21
|
*
|
|
22
22
|
* @example
|
|
@@ -31,5 +31,5 @@ declare type RemoveClassNameOptions = {
|
|
|
31
31
|
* elm => <div class="efg"></div>
|
|
32
32
|
* ```
|
|
33
33
|
*/
|
|
34
|
-
export declare function removeClassName(
|
|
34
|
+
export declare function removeClassName(target: RefOrElementOrCallback, removeClass: string, { scanChildren, fullMatch }?: RemoveClassNameOptions): void;
|
|
35
35
|
export {};
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
var getRefElement_1 = require("./getRefElement");
|
|
3
4
|
/**
|
|
4
5
|
* remove className from element, default will not scan child nodes, if you want to scan child nodes, set `scanChildren` to `true`.
|
|
5
6
|
*
|
|
6
|
-
* @param
|
|
7
|
+
* @param target target element reference or element or callback
|
|
7
8
|
* @param removeClass className to remove, default will use class `includes` to check, if you want to use full match, set `fullMatch` to `true`
|
|
8
9
|
*
|
|
9
10
|
* @example
|
|
@@ -18,9 +19,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
18
19
|
* elm => <div class="efg"></div>
|
|
19
20
|
* ```
|
|
20
21
|
*/
|
|
21
|
-
function removeClassName(
|
|
22
|
+
function removeClassName(target, removeClass, _a) {
|
|
22
23
|
var _b = _a === void 0 ? {} : _a, _c = _b.scanChildren, scanChildren = _c === void 0 ? false : _c, _d = _b.fullMatch, fullMatch = _d === void 0 ? false : _d;
|
|
23
|
-
var elm =
|
|
24
|
+
var elm = getRefElement_1.getRefElement(target);
|
|
24
25
|
if (!elm)
|
|
25
26
|
return;
|
|
26
27
|
if (elm.className.includes(removeClass)) {
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { RefOrElementOrCallback } from './getRefElement';
|
|
2
2
|
/**
|
|
3
3
|
* get current input element selection position and is that selectRange state
|
|
4
4
|
*/
|
|
5
|
-
export declare function getSelectionPosition(
|
|
5
|
+
export declare function getSelectionPosition<T extends HTMLInputElement | HTMLTextAreaElement>(sourceTarget: RefOrElementOrCallback<T>): {
|
|
6
6
|
isSelectRange: boolean;
|
|
7
7
|
position: {
|
|
8
8
|
start: number;
|
|
@@ -13,7 +13,7 @@ export declare function getSelectionPosition(inputRef: RefObject<HTMLInputElemen
|
|
|
13
13
|
* set input element selection position position,
|
|
14
14
|
* if you need scroll that into view set `scrollIntoView` as true
|
|
15
15
|
*/
|
|
16
|
-
export declare function setSelectionPosition(
|
|
16
|
+
export declare function setSelectionPosition<T extends HTMLInputElement | HTMLTextAreaElement>(target: RefOrElementOrCallback<T>, options: {
|
|
17
17
|
start: number | null;
|
|
18
18
|
end: number | null;
|
|
19
19
|
direction?: 'forward' | 'backward' | 'none' | undefined;
|