@navikt/ds-react 7.33.2 → 7.33.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/cjs/overlays/action-menu/ActionMenu.d.ts +20 -0
- package/cjs/overlays/action-menu/ActionMenu.js +20 -0
- package/cjs/overlays/action-menu/ActionMenu.js.map +1 -1
- package/cjs/overlays/dismissablelayer/DismissableLayer.js +23 -32
- package/cjs/overlays/dismissablelayer/DismissableLayer.js.map +1 -1
- package/cjs/overlays/dismissablelayer/util/useEscapeKeydown.d.ts +1 -1
- package/cjs/overlays/dismissablelayer/util/useEscapeKeydown.js +8 -3
- package/cjs/overlays/dismissablelayer/util/useEscapeKeydown.js.map +1 -1
- package/cjs/overlays/dismissablelayer/util/useFocusOutside.d.ts +1 -1
- package/cjs/overlays/dismissablelayer/util/useFocusOutside.js +8 -3
- package/cjs/overlays/dismissablelayer/util/useFocusOutside.js.map +1 -1
- package/cjs/overlays/dismissablelayer/util/usePointerDownOutside.d.ts +1 -1
- package/cjs/overlays/dismissablelayer/util/usePointerDownOutside.js +5 -2
- package/cjs/overlays/dismissablelayer/util/usePointerDownOutside.js.map +1 -1
- package/esm/overlays/action-menu/ActionMenu.d.ts +20 -0
- package/esm/overlays/action-menu/ActionMenu.js +20 -0
- package/esm/overlays/action-menu/ActionMenu.js.map +1 -1
- package/esm/overlays/dismissablelayer/DismissableLayer.js +22 -31
- package/esm/overlays/dismissablelayer/DismissableLayer.js.map +1 -1
- package/esm/overlays/dismissablelayer/util/useEscapeKeydown.d.ts +1 -1
- package/esm/overlays/dismissablelayer/util/useEscapeKeydown.js +8 -3
- package/esm/overlays/dismissablelayer/util/useEscapeKeydown.js.map +1 -1
- package/esm/overlays/dismissablelayer/util/useFocusOutside.d.ts +1 -1
- package/esm/overlays/dismissablelayer/util/useFocusOutside.js +8 -3
- package/esm/overlays/dismissablelayer/util/useFocusOutside.js.map +1 -1
- package/esm/overlays/dismissablelayer/util/usePointerDownOutside.d.ts +1 -1
- package/esm/overlays/dismissablelayer/util/usePointerDownOutside.js +5 -2
- package/esm/overlays/dismissablelayer/util/usePointerDownOutside.js.map +1 -1
- package/package.json +5 -5
- package/src/overlays/action-menu/ActionMenu.tsx +20 -0
- package/src/overlays/dismissablelayer/DismissableLayer.tsx +91 -97
- package/src/overlays/dismissablelayer/util/useEscapeKeydown.ts +9 -2
- package/src/overlays/dismissablelayer/util/useFocusOutside.ts +9 -2
- package/src/overlays/dismissablelayer/util/usePointerDownOutside.ts +6 -1
|
@@ -4,10 +4,15 @@ import { useCallbackRef } from "../../../util/hooks";
|
|
|
4
4
|
export function useEscapeKeydown(
|
|
5
5
|
callback?: (event: KeyboardEvent) => void,
|
|
6
6
|
ownerDocument: Document = globalThis?.document,
|
|
7
|
+
enabled: boolean = true,
|
|
7
8
|
) {
|
|
8
9
|
const onEscapeKeyDown = useCallbackRef(callback);
|
|
9
10
|
|
|
10
11
|
useEffect(() => {
|
|
12
|
+
if (!enabled) {
|
|
13
|
+
return;
|
|
14
|
+
}
|
|
15
|
+
|
|
11
16
|
const handleKeyDown = (event: KeyboardEvent) => {
|
|
12
17
|
if (event.key === "Escape") {
|
|
13
18
|
onEscapeKeyDown(event);
|
|
@@ -15,7 +20,9 @@ export function useEscapeKeydown(
|
|
|
15
20
|
};
|
|
16
21
|
|
|
17
22
|
ownerDocument.addEventListener("keydown", handleKeyDown, true);
|
|
18
|
-
|
|
23
|
+
|
|
24
|
+
return () => {
|
|
19
25
|
ownerDocument.removeEventListener("keydown", handleKeyDown, true);
|
|
20
|
-
|
|
26
|
+
};
|
|
27
|
+
}, [onEscapeKeyDown, ownerDocument, enabled]);
|
|
21
28
|
}
|
|
@@ -12,11 +12,16 @@ import {
|
|
|
12
12
|
export function useFocusOutside(
|
|
13
13
|
callback?: (event: CustomFocusEvent) => void,
|
|
14
14
|
ownerDocument: Document = globalThis?.document,
|
|
15
|
+
enabled: boolean = true,
|
|
15
16
|
) {
|
|
16
17
|
const handleFocusOutside = useCallbackRef(callback) as EventListener;
|
|
17
18
|
const isFocusInsideReactTreeRef = useRef(false);
|
|
18
19
|
|
|
19
20
|
useEffect(() => {
|
|
21
|
+
if (!enabled) {
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
24
|
+
|
|
20
25
|
const handleFocus = (event: FocusEvent) => {
|
|
21
26
|
if (event.target && !isFocusInsideReactTreeRef.current) {
|
|
22
27
|
const eventDetail = { originalEvent: event };
|
|
@@ -38,8 +43,10 @@ export function useFocusOutside(
|
|
|
38
43
|
}
|
|
39
44
|
};
|
|
40
45
|
ownerDocument.addEventListener("focusin", handleFocus);
|
|
41
|
-
return () =>
|
|
42
|
-
|
|
46
|
+
return () => {
|
|
47
|
+
ownerDocument.removeEventListener("focusin", handleFocus);
|
|
48
|
+
};
|
|
49
|
+
}, [ownerDocument, handleFocusOutside, enabled]);
|
|
43
50
|
|
|
44
51
|
/**
|
|
45
52
|
* By directly setting isFocusInsideReactTreeRef on focus-events at the root of the "dismissable" element,
|
|
@@ -16,6 +16,7 @@ import {
|
|
|
16
16
|
export function usePointerDownOutside(
|
|
17
17
|
callback?: (event: CustomPointerDownEvent) => void,
|
|
18
18
|
ownerDocument: Document = globalThis?.document,
|
|
19
|
+
enabled: boolean = true,
|
|
19
20
|
) {
|
|
20
21
|
const handlePointerDownOutside = useCallbackRef(callback) as EventListener;
|
|
21
22
|
const isPointerInsideReactTreeRef = useRef(false);
|
|
@@ -23,6 +24,10 @@ export function usePointerDownOutside(
|
|
|
23
24
|
const timeout = useTimeout();
|
|
24
25
|
|
|
25
26
|
useEffect(() => {
|
|
27
|
+
if (!enabled) {
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
|
|
26
31
|
const handlePointerDown = (event: PointerEvent) => {
|
|
27
32
|
/**
|
|
28
33
|
* The `DismisableLayer`-API is based on the ability to stop events from propagating and in the end calling `onDismiss`
|
|
@@ -87,7 +92,7 @@ export function usePointerDownOutside(
|
|
|
87
92
|
ownerDocument.removeEventListener("pointerdown", handlePointerDown);
|
|
88
93
|
ownerDocument.removeEventListener("click", handleClickRef.current);
|
|
89
94
|
};
|
|
90
|
-
}, [ownerDocument, handlePointerDownOutside, timeout]);
|
|
95
|
+
}, [ownerDocument, handlePointerDownOutside, timeout, enabled]);
|
|
91
96
|
|
|
92
97
|
return {
|
|
93
98
|
// ensures we check React component tree (not just DOM tree)
|