Skip to content

Commit e3fd95a

Browse files
committed
Use @restart/ui for root close
1 parent b133250 commit e3fd95a

4 files changed

Lines changed: 72 additions & 185 deletions

File tree

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@
5050
"@babel/runtime": "^7.14.6",
5151
"@floating-ui/react-dom": "^2.1.2",
5252
"@restart/hooks": "^0.4.0",
53+
"@restart/ui": "^1.9.4",
5354
"classnames": "^2.2.0",
5455
"fast-deep-equal": "^3.1.1",
5556
"invariant": "^2.2.1",

src/components/RootClose/useClickOutside.ts

Lines changed: 0 additions & 142 deletions
This file was deleted.

src/components/RootClose/useRootClose.ts

Lines changed: 4 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -1,50 +1,12 @@
1-
import { useEffect, useRef } from 'react';
2-
import useEventCallback from '@restart/hooks/useEventCallback';
3-
4-
import useClickOutside, { ClickOutsideOptions } from './useClickOutside';
5-
import { noop } from '../../utils';
1+
import { useRef } from 'react';
2+
import _useRootClose, { RootCloseOptions } from '@restart/ui/useRootClose';
63

74
function useRootClose(
85
onRootClose: (e: Event) => void,
9-
options: ClickOutsideOptions
6+
options: RootCloseOptions
107
) {
118
const ref = useRef<HTMLDivElement>(null);
12-
13-
const onClose = onRootClose || noop;
14-
15-
useClickOutside(ref, onClose, options);
16-
17-
const handleKeyUp = useEventCallback((e: KeyboardEvent) => {
18-
if (e.key === 'Escape') {
19-
onClose(e);
20-
}
21-
});
22-
23-
useEffect(() => {
24-
if (options.disabled || ref == null) return undefined;
25-
26-
const doc = ref.current?.ownerDocument || document;
27-
28-
// Store the current event to avoid triggering handlers immediately
29-
// https://github.com/facebook/react/issues/20074
30-
let currentEvent = (doc.defaultView || window).event;
31-
32-
const onKeyUp = (e: KeyboardEvent) => {
33-
// skip if this event is the same as the one running when we added the handlers
34-
if (e === currentEvent) {
35-
currentEvent = undefined;
36-
return;
37-
}
38-
handleKeyUp(e);
39-
};
40-
41-
doc.addEventListener('keyup', onKeyUp);
42-
43-
return () => {
44-
doc.removeEventListener('keyup', onKeyUp);
45-
};
46-
}, [ref, options.disabled, handleKeyUp]);
47-
9+
_useRootClose(ref, onRootClose, options);
4810
return ref;
4911
}
5012

yarn.lock

Lines changed: 67 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1242,6 +1242,13 @@
12421242
dependencies:
12431243
regenerator-runtime "^0.13.4"
12441244

1245+
"@babel/runtime@^7.26.0", "@babel/runtime@^7.8.7":
1246+
version "7.26.10"
1247+
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.26.10.tgz#a07b4d8fa27af131a633d7b3524db803eb4764c2"
1248+
integrity sha512-2WJMeRQPHKSPemqk/awGrAiuFfzBmOIPXKizAsVhWH9YJqLZ0H+HS4c8loHGgW6utJ3E/ejXQUsiGaQy2NZ9Fw==
1249+
dependencies:
1250+
regenerator-runtime "^0.14.0"
1251+
12451252
"@babel/template@^7.12.7", "@babel/template@^7.22.15", "@babel/template@^7.22.5", "@babel/template@^7.3.3":
12461253
version "7.22.15"
12471254
resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.22.15.tgz#09576efc3830f0430f4548ef971dde1350ef2f38"
@@ -1807,13 +1814,47 @@
18071814
schema-utils "^3.0.0"
18081815
source-map "^0.7.3"
18091816

1817+
"@popperjs/core@^2.11.8":
1818+
version "2.11.8"
1819+
resolved "https://registry.yarnpkg.com/@popperjs/core/-/core-2.11.8.tgz#6b79032e760a0899cd4204710beede972a3a185f"
1820+
integrity sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==
1821+
1822+
"@react-aria/ssr@^3.5.0":
1823+
version "3.9.7"
1824+
resolved "https://registry.yarnpkg.com/@react-aria/ssr/-/ssr-3.9.7.tgz#d89d129f7bbc5148657e6c952ac31c9353183770"
1825+
integrity sha512-GQygZaGlmYjmYM+tiNBA5C6acmiDWF52Nqd40bBp0Znk4M4hP+LTmI0lpI1BuKMw45T8RIhrAsICIfKwZvi2Gg==
1826+
dependencies:
1827+
"@swc/helpers" "^0.5.0"
1828+
18101829
"@restart/hooks@^0.4.0":
18111830
version "0.4.11"
18121831
resolved "https://registry.yarnpkg.com/@restart/hooks/-/hooks-0.4.11.tgz#8876ccce1d4ad2a4b793a31689d63df36cf56088"
18131832
integrity sha512-Ft/ncTULZN6ldGHiF/k5qt72O8JyRMOeg0tApvCni8LkoiEahO+z3TNxfXIVGy890YtWVDvJAl662dVJSJXvMw==
18141833
dependencies:
18151834
dequal "^2.0.3"
18161835

1836+
"@restart/hooks@^0.5.0":
1837+
version "0.5.1"
1838+
resolved "https://registry.yarnpkg.com/@restart/hooks/-/hooks-0.5.1.tgz#6776b3859e33aea72b23b81fc47021edf17fd247"
1839+
integrity sha512-EMoH04NHS1pbn07iLTjIjgttuqb7qu4+/EyhAx27MHpoENcB2ZdSsLTNxmKD+WEPnZigo62Qc8zjGnNxoSE/5Q==
1840+
dependencies:
1841+
dequal "^2.0.3"
1842+
1843+
"@restart/ui@^1.9.4":
1844+
version "1.9.4"
1845+
resolved "https://registry.yarnpkg.com/@restart/ui/-/ui-1.9.4.tgz#9d61f56f2647f5ab8a33d87b278b9ce183511a26"
1846+
integrity sha512-N4C7haUc3vn4LTwVUPlkJN8Ach/+yIMvRuTVIhjilNHqegY60SGLrzud6errOMNJwSnmYFnt1J0H/k8FE3A4KA==
1847+
dependencies:
1848+
"@babel/runtime" "^7.26.0"
1849+
"@popperjs/core" "^2.11.8"
1850+
"@react-aria/ssr" "^3.5.0"
1851+
"@restart/hooks" "^0.5.0"
1852+
"@types/warning" "^3.0.3"
1853+
dequal "^2.0.3"
1854+
dom-helpers "^5.2.0"
1855+
uncontrollable "^8.0.4"
1856+
warning "^4.0.3"
1857+
18171858
"@rollup/plugin-babel@^5.3.1":
18181859
version "5.3.1"
18191860
resolved "https://registry.yarnpkg.com/@rollup/plugin-babel/-/plugin-babel-5.3.1.tgz#04bc0608f4aa4b2e4b1aebf284344d0f68fda283"
@@ -2819,6 +2860,13 @@
28192860
regenerator-runtime "^0.13.7"
28202861
resolve-from "^5.0.0"
28212862

2863+
"@swc/helpers@^0.5.0":
2864+
version "0.5.15"
2865+
resolved "https://registry.yarnpkg.com/@swc/helpers/-/helpers-0.5.15.tgz#79efab344c5819ecf83a43f3f9f811fc84b516d7"
2866+
integrity sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==
2867+
dependencies:
2868+
tslib "^2.8.0"
2869+
28222870
"@testing-library/dom@^8.0.0", "@testing-library/dom@^8.1.0":
28232871
version "8.20.1"
28242872
resolved "https://registry.yarnpkg.com/@testing-library/dom/-/dom-8.20.1.tgz#2e52a32e46fc88369eef7eef634ac2a192decd9f"
@@ -5830,6 +5878,14 @@ dom-converter@^0.2.0:
58305878
dependencies:
58315879
utila "~0.4"
58325880

5881+
dom-helpers@^5.2.0:
5882+
version "5.2.1"
5883+
resolved "https://registry.yarnpkg.com/dom-helpers/-/dom-helpers-5.2.1.tgz#d9400536b2bf8225ad98fe052e029451ac40e902"
5884+
integrity sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==
5885+
dependencies:
5886+
"@babel/runtime" "^7.8.7"
5887+
csstype "^3.0.2"
5888+
58335889
dom-serializer@^1.0.1:
58345890
version "1.4.1"
58355891
resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-1.4.1.tgz#de5d41b1aea290215dc45a6dae8adcf1d32e2d30"
@@ -12670,6 +12726,11 @@ tslib@^2.0.0, tslib@^2.0.1, tslib@^2.0.3:
1267012726
resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.2.tgz#703ac29425e7b37cd6fd456e92404d46d1f3e4ae"
1267112727
integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==
1267212728

12729+
tslib@^2.8.0:
12730+
version "2.8.1"
12731+
resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.8.1.tgz#612efe4ed235d567e8aba5f2a5fab70280ade83f"
12732+
integrity sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==
12733+
1267312734
tty-browserify@0.0.0:
1267412735
version "0.0.0"
1267512736
resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6"
@@ -12803,6 +12864,11 @@ unbox-primitive@^1.0.2:
1280312864
has-symbols "^1.0.3"
1280412865
which-boxed-primitive "^1.0.2"
1280512866

12867+
uncontrollable@^8.0.4:
12868+
version "8.0.4"
12869+
resolved "https://registry.yarnpkg.com/uncontrollable/-/uncontrollable-8.0.4.tgz#a0a8307f638795162fafd0550f4a1efa0f8c5eb6"
12870+
integrity sha512-ulRWYWHvscPFc0QQXvyJjY6LIXU56f0h8pQFvhxiKk5V1fcI8gp9Ht9leVAhrVjzqMw0BgjspBINx9r6oyJUvQ==
12871+
1280612872
undici-types@~5.25.1:
1280712873
version "5.25.3"
1280812874
resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.25.3.tgz#e044115914c85f0bcbb229f346ab739f064998c3"
@@ -13148,7 +13214,7 @@ walker@^1.0.7, walker@^1.0.8, walker@~1.0.5:
1314813214
dependencies:
1314913215
makeerror "1.0.12"
1315013216

13151-
warning@^4.0.1:
13217+
warning@^4.0.1, warning@^4.0.3:
1315213218
version "4.0.3"
1315313219
resolved "https://registry.yarnpkg.com/warning/-/warning-4.0.3.tgz#16e9e077eb8a86d6af7d64aa1e05fd85b4678ca3"
1315413220
integrity sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==

0 commit comments

Comments
 (0)