@trackunit/react-components 0.1.95 → 0.1.97
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/index.cjs +16 -6
- package/index.js +16 -6
- package/package.json +1 -1
- package/src/components/Popover/Popover.d.ts +1 -1
- package/src/hooks/useDebounce.d.ts +3 -2
package/index.cjs
CHANGED
|
@@ -836,7 +836,7 @@ const usePopoverContext = () => {
|
|
|
836
836
|
*
|
|
837
837
|
*
|
|
838
838
|
* @param {PopoverProps} props The props for the popover
|
|
839
|
-
* @returns {JSX.Element} A Popover Context Provider
|
|
839
|
+
* @returns {JSX.Element} A Popover Context Provider containing the children
|
|
840
840
|
*/
|
|
841
841
|
const Popover = (_a) => {
|
|
842
842
|
var { children, isModal = false } = _a, restOptions = __rest(_a, ["children", "isModal"]);
|
|
@@ -1159,18 +1159,28 @@ const useClickOutside = (el, options = {}, onClick) => {
|
|
|
1159
1159
|
*
|
|
1160
1160
|
* @param {any} value The value to set
|
|
1161
1161
|
* @param {number} delay The debounce time
|
|
1162
|
-
* @
|
|
1162
|
+
* @param {"in" | "out" | "both"} direction Considers truthiness of value. If set to "in", the value will only be debounced if it is truthy. If set to "out", the value will only be debounced if it is falsy. If set to "both" or if not defined, the value will be debounced regardless of truthiness.
|
|
1163
|
+
* @returns {any} The latest value received
|
|
1163
1164
|
*/
|
|
1164
|
-
const useDebounce = (value, delay = 500) => {
|
|
1165
|
+
const useDebounce = (value, delay = 500, direction) => {
|
|
1165
1166
|
const [debouncedValue, setDebouncedValue] = React.useState(value);
|
|
1166
1167
|
React.useEffect(() => {
|
|
1167
|
-
|
|
1168
|
+
let handler;
|
|
1169
|
+
if ((direction === "in" && !debouncedValue && value) ||
|
|
1170
|
+
(direction === "out" && debouncedValue && !value) ||
|
|
1171
|
+
direction === "both" ||
|
|
1172
|
+
!direction) {
|
|
1173
|
+
handler = setTimeout(() => {
|
|
1174
|
+
setDebouncedValue(value);
|
|
1175
|
+
}, delay);
|
|
1176
|
+
}
|
|
1177
|
+
else {
|
|
1168
1178
|
setDebouncedValue(value);
|
|
1169
|
-
}
|
|
1179
|
+
}
|
|
1170
1180
|
return () => {
|
|
1171
1181
|
clearTimeout(handler);
|
|
1172
1182
|
};
|
|
1173
|
-
}, [value, delay]);
|
|
1183
|
+
}, [value, delay, direction, debouncedValue]);
|
|
1174
1184
|
return debouncedValue;
|
|
1175
1185
|
};
|
|
1176
1186
|
|
package/index.js
CHANGED
|
@@ -809,7 +809,7 @@ const usePopoverContext = () => {
|
|
|
809
809
|
*
|
|
810
810
|
*
|
|
811
811
|
* @param {PopoverProps} props The props for the popover
|
|
812
|
-
* @returns {JSX.Element} A Popover Context Provider
|
|
812
|
+
* @returns {JSX.Element} A Popover Context Provider containing the children
|
|
813
813
|
*/
|
|
814
814
|
const Popover = (_a) => {
|
|
815
815
|
var { children, isModal = false } = _a, restOptions = __rest(_a, ["children", "isModal"]);
|
|
@@ -1132,18 +1132,28 @@ const useClickOutside = (el, options = {}, onClick) => {
|
|
|
1132
1132
|
*
|
|
1133
1133
|
* @param {any} value The value to set
|
|
1134
1134
|
* @param {number} delay The debounce time
|
|
1135
|
-
* @
|
|
1135
|
+
* @param {"in" | "out" | "both"} direction Considers truthiness of value. If set to "in", the value will only be debounced if it is truthy. If set to "out", the value will only be debounced if it is falsy. If set to "both" or if not defined, the value will be debounced regardless of truthiness.
|
|
1136
|
+
* @returns {any} The latest value received
|
|
1136
1137
|
*/
|
|
1137
|
-
const useDebounce = (value, delay = 500) => {
|
|
1138
|
+
const useDebounce = (value, delay = 500, direction) => {
|
|
1138
1139
|
const [debouncedValue, setDebouncedValue] = useState(value);
|
|
1139
1140
|
useEffect(() => {
|
|
1140
|
-
|
|
1141
|
+
let handler;
|
|
1142
|
+
if ((direction === "in" && !debouncedValue && value) ||
|
|
1143
|
+
(direction === "out" && debouncedValue && !value) ||
|
|
1144
|
+
direction === "both" ||
|
|
1145
|
+
!direction) {
|
|
1146
|
+
handler = setTimeout(() => {
|
|
1147
|
+
setDebouncedValue(value);
|
|
1148
|
+
}, delay);
|
|
1149
|
+
}
|
|
1150
|
+
else {
|
|
1141
1151
|
setDebouncedValue(value);
|
|
1142
|
-
}
|
|
1152
|
+
}
|
|
1143
1153
|
return () => {
|
|
1144
1154
|
clearTimeout(handler);
|
|
1145
1155
|
};
|
|
1146
|
-
}, [value, delay]);
|
|
1156
|
+
}, [value, delay, direction, debouncedValue]);
|
|
1147
1157
|
return debouncedValue;
|
|
1148
1158
|
};
|
|
1149
1159
|
|
package/package.json
CHANGED
|
@@ -65,7 +65,7 @@ export declare const usePopoverContext: () => {
|
|
|
65
65
|
*
|
|
66
66
|
*
|
|
67
67
|
* @param {PopoverProps} props The props for the popover
|
|
68
|
-
* @returns {JSX.Element} A Popover Context Provider
|
|
68
|
+
* @returns {JSX.Element} A Popover Context Provider containing the children
|
|
69
69
|
*/
|
|
70
70
|
export declare const Popover: ({ children, isModal, ...restOptions }: {
|
|
71
71
|
children: React.ReactNode;
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
*
|
|
4
4
|
* @param {any} value The value to set
|
|
5
5
|
* @param {number} delay The debounce time
|
|
6
|
-
* @
|
|
6
|
+
* @param {"in" | "out" | "both"} direction Considers truthiness of value. If set to "in", the value will only be debounced if it is truthy. If set to "out", the value will only be debounced if it is falsy. If set to "both" or if not defined, the value will be debounced regardless of truthiness.
|
|
7
|
+
* @returns {any} The latest value received
|
|
7
8
|
*/
|
|
8
|
-
export declare const useDebounce: <T>(value: T, delay?: number) => T;
|
|
9
|
+
export declare const useDebounce: <T>(value: T, delay?: number, direction?: "in" | "out" | "both") => T;
|