@tamagui/focus-scope 1.43.2 → 1.43.4

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.
@@ -4,130 +4,138 @@ import * as React from "react";
4
4
  const AUTOFOCUS_ON_MOUNT = "focusScope.autoFocusOnMount";
5
5
  const AUTOFOCUS_ON_UNMOUNT = "focusScope.autoFocusOnUnmount";
6
6
  const EVENT_OPTIONS = { bubbles: false, cancelable: true };
7
- const FOCUS_SCOPE_NAME = "FocusScope";
8
7
  const FocusScope = React.forwardRef(
9
- (props, forwardedRef) => {
10
- const {
11
- loop = false,
12
- trapped = false,
13
- onMountAutoFocus: onMountAutoFocusProp,
14
- onUnmountAutoFocus: onUnmountAutoFocusProp,
15
- children,
16
- forceUnmount,
17
- ...scopeProps
18
- } = props;
19
- const [container, setContainer] = React.useState(null);
20
- const onMountAutoFocus = useEvent(onMountAutoFocusProp);
21
- const onUnmountAutoFocus = useEvent(onUnmountAutoFocusProp);
22
- const lastFocusedElementRef = React.useRef(null);
23
- const composedRefs = useComposedRefs(forwardedRef, (node) => setContainer(node));
24
- const focusScope = React.useRef({
25
- paused: false,
26
- pause() {
27
- this.paused = true;
28
- },
29
- resume() {
30
- this.paused = false;
8
+ function FocusScope2(props, forwardedRef) {
9
+ const childProps = useFocusScope(props, forwardedRef);
10
+ if (typeof props.children === "function") {
11
+ return <>{props.children(childProps)}</>;
12
+ }
13
+ return React.cloneElement(React.Children.only(props.children), childProps);
14
+ }
15
+ );
16
+ function useFocusScope(props, forwardedRef) {
17
+ const {
18
+ loop = false,
19
+ trapped = false,
20
+ onMountAutoFocus: onMountAutoFocusProp,
21
+ onUnmountAutoFocus: onUnmountAutoFocusProp,
22
+ forceUnmount,
23
+ children,
24
+ ...scopeProps
25
+ } = props;
26
+ const [container, setContainer] = React.useState(null);
27
+ const onMountAutoFocus = useEvent(onMountAutoFocusProp);
28
+ const onUnmountAutoFocus = useEvent(onUnmountAutoFocusProp);
29
+ const lastFocusedElementRef = React.useRef(null);
30
+ const composedRefs = useComposedRefs(forwardedRef, (node) => setContainer(node));
31
+ const focusScope = React.useRef({
32
+ paused: false,
33
+ pause() {
34
+ this.paused = true;
35
+ },
36
+ resume() {
37
+ this.paused = false;
38
+ }
39
+ }).current;
40
+ React.useEffect(() => {
41
+ if (!trapped)
42
+ return;
43
+ function handleFocusIn(event) {
44
+ if (focusScope.paused || !container)
45
+ return;
46
+ const target = event.target;
47
+ if (container.contains(target)) {
48
+ lastFocusedElementRef.current = target;
49
+ } else {
50
+ focus(lastFocusedElementRef.current, { select: true });
31
51
  }
32
- }).current;
33
- React.useEffect(() => {
34
- if (!trapped)
52
+ }
53
+ function handleFocusOut(event) {
54
+ if (focusScope.paused || !container)
35
55
  return;
36
- function handleFocusIn(event) {
37
- if (focusScope.paused || !container)
38
- return;
39
- const target = event.target;
40
- if (container.contains(target)) {
41
- lastFocusedElementRef.current = target;
42
- } else {
43
- focus(lastFocusedElementRef.current, { select: true });
44
- }
56
+ if (!container.contains(event.relatedTarget)) {
57
+ focus(lastFocusedElementRef.current, { select: true });
45
58
  }
46
- function handleFocusOut(event) {
47
- if (focusScope.paused || !container)
48
- return;
49
- if (!container.contains(event.relatedTarget)) {
50
- focus(lastFocusedElementRef.current, { select: true });
59
+ }
60
+ document.addEventListener("focusin", handleFocusIn);
61
+ document.addEventListener("focusout", handleFocusOut);
62
+ return () => {
63
+ document.removeEventListener("focusin", handleFocusIn);
64
+ document.removeEventListener("focusout", handleFocusOut);
65
+ };
66
+ }, [trapped, forceUnmount, container, focusScope.paused]);
67
+ React.useEffect(() => {
68
+ if (!trapped)
69
+ return;
70
+ if (!container)
71
+ return;
72
+ if (forceUnmount)
73
+ return;
74
+ focusScopesStack.add(focusScope);
75
+ const previouslyFocusedElement = document.activeElement;
76
+ const hasFocusedCandidate = container.contains(previouslyFocusedElement);
77
+ if (!hasFocusedCandidate) {
78
+ const mountEvent = new CustomEvent(AUTOFOCUS_ON_MOUNT, EVENT_OPTIONS);
79
+ container.addEventListener(AUTOFOCUS_ON_MOUNT, onMountAutoFocus);
80
+ container.dispatchEvent(mountEvent);
81
+ if (!mountEvent.defaultPrevented) {
82
+ focusFirst(removeLinks(getTabbableCandidates(container)), { select: true });
83
+ if (document.activeElement === previouslyFocusedElement) {
84
+ focus(container);
51
85
  }
52
86
  }
53
- document.addEventListener("focusin", handleFocusIn);
54
- document.addEventListener("focusout", handleFocusOut);
55
- return () => {
56
- document.removeEventListener("focusin", handleFocusIn);
57
- document.removeEventListener("focusout", handleFocusOut);
58
- };
59
- }, [trapped, forceUnmount, container, focusScope.paused]);
60
- React.useEffect(() => {
61
- if (!container)
87
+ }
88
+ return () => {
89
+ container.removeEventListener(AUTOFOCUS_ON_MOUNT, onMountAutoFocus);
90
+ const unmountEvent = new CustomEvent(AUTOFOCUS_ON_UNMOUNT, EVENT_OPTIONS);
91
+ container.addEventListener(AUTOFOCUS_ON_UNMOUNT, onUnmountAutoFocus);
92
+ container.dispatchEvent(unmountEvent);
93
+ if (!unmountEvent.defaultPrevented) {
94
+ focus(previouslyFocusedElement ?? document.body, { select: true });
95
+ }
96
+ container.removeEventListener(AUTOFOCUS_ON_UNMOUNT, onUnmountAutoFocus);
97
+ focusScopesStack.remove(focusScope);
98
+ };
99
+ }, [container, forceUnmount, onMountAutoFocus, onUnmountAutoFocus, focusScope]);
100
+ const handleKeyDown = React.useCallback(
101
+ (event) => {
102
+ if (!trapped)
62
103
  return;
63
- if (forceUnmount)
104
+ if (!loop)
64
105
  return;
65
- focusScopesStack.add(focusScope);
66
- const previouslyFocusedElement = document.activeElement;
67
- const hasFocusedCandidate = container.contains(previouslyFocusedElement);
68
- if (!hasFocusedCandidate) {
69
- const mountEvent = new CustomEvent(AUTOFOCUS_ON_MOUNT, EVENT_OPTIONS);
70
- container.addEventListener(AUTOFOCUS_ON_MOUNT, onMountAutoFocus);
71
- container.dispatchEvent(mountEvent);
72
- if (!mountEvent.defaultPrevented) {
73
- focusFirst(removeLinks(getTabbableCandidates(container)), { select: true });
74
- if (document.activeElement === previouslyFocusedElement) {
75
- focus(container);
106
+ if (focusScope.paused)
107
+ return;
108
+ const isTabKey = event.key === "Tab" && !event.altKey && !event.ctrlKey && !event.metaKey;
109
+ const focusedElement = document.activeElement;
110
+ if (isTabKey && focusedElement) {
111
+ const container2 = event.currentTarget;
112
+ const [first, last] = getTabbableEdges(container2);
113
+ const hasTabbableElementsInside = first && last;
114
+ if (!hasTabbableElementsInside) {
115
+ if (focusedElement === container2)
116
+ event.preventDefault();
117
+ } else {
118
+ if (!event.shiftKey && focusedElement === last) {
119
+ event.preventDefault();
120
+ if (loop)
121
+ focus(first, { select: true });
122
+ } else if (event.shiftKey && focusedElement === first) {
123
+ event.preventDefault();
124
+ if (loop)
125
+ focus(last, { select: true });
76
126
  }
77
127
  }
78
128
  }
79
- return () => {
80
- container.removeEventListener(AUTOFOCUS_ON_MOUNT, onMountAutoFocus);
81
- const unmountEvent = new CustomEvent(AUTOFOCUS_ON_UNMOUNT, EVENT_OPTIONS);
82
- container.addEventListener(AUTOFOCUS_ON_UNMOUNT, onUnmountAutoFocus);
83
- container.dispatchEvent(unmountEvent);
84
- if (!unmountEvent.defaultPrevented) {
85
- focus(previouslyFocusedElement ?? document.body, { select: true });
86
- }
87
- container.removeEventListener(AUTOFOCUS_ON_UNMOUNT, onUnmountAutoFocus);
88
- focusScopesStack.remove(focusScope);
89
- };
90
- }, [container, forceUnmount, onMountAutoFocus, onUnmountAutoFocus, focusScope]);
91
- const handleKeyDown = React.useCallback(
92
- (event) => {
93
- if (!(loop || trapped))
94
- return;
95
- if (focusScope.paused)
96
- return;
97
- const isTabKey = event.key === "Tab" && !event.altKey && !event.ctrlKey && !event.metaKey;
98
- const focusedElement = document.activeElement;
99
- if (isTabKey && focusedElement) {
100
- const container2 = event.currentTarget;
101
- const [first, last] = getTabbableEdges(container2);
102
- const hasTabbableElementsInside = first && last;
103
- if (!hasTabbableElementsInside) {
104
- if (focusedElement === container2)
105
- event.preventDefault();
106
- } else {
107
- if (!event.shiftKey && focusedElement === last) {
108
- event.preventDefault();
109
- if (loop)
110
- focus(first, { select: true });
111
- } else if (event.shiftKey && focusedElement === first) {
112
- event.preventDefault();
113
- if (loop)
114
- focus(last, { select: true });
115
- }
116
- }
117
- }
118
- },
119
- [loop, trapped, focusScope.paused]
120
- );
121
- const child = React.Children.only(children);
122
- return React.cloneElement(child, {
123
- tabIndex: -1,
124
- ...scopeProps,
125
- ref: composedRefs,
126
- onKeyDown: handleKeyDown
127
- });
128
- }
129
- );
130
- FocusScope.displayName = FOCUS_SCOPE_NAME;
129
+ },
130
+ [loop, trapped, focusScope.paused]
131
+ );
132
+ return {
133
+ tabIndex: -1,
134
+ ...scopeProps,
135
+ ref: composedRefs,
136
+ onKeyDown: handleKeyDown
137
+ };
138
+ }
131
139
  function focusFirst(candidates, { select = false } = {}) {
132
140
  const previouslyFocusedElement = document.activeElement;
133
141
  for (const candidate of candidates) {
@@ -215,6 +223,7 @@ function removeLinks(items) {
215
223
  return items.filter((item) => item.tagName !== "A");
216
224
  }
217
225
  export {
218
- FocusScope
226
+ FocusScope,
227
+ useFocusScope
219
228
  };
220
229
  //# sourceMappingURL=FocusScope.js.map
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/FocusScope.tsx"],
4
- "mappings": "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",
5
- "names": ["container"]
4
+ "mappings": "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",
5
+ "names": ["FocusScope", "container"]
6
6
  }
@@ -4,130 +4,138 @@ import * as React from "react";
4
4
  const AUTOFOCUS_ON_MOUNT = "focusScope.autoFocusOnMount";
5
5
  const AUTOFOCUS_ON_UNMOUNT = "focusScope.autoFocusOnUnmount";
6
6
  const EVENT_OPTIONS = { bubbles: false, cancelable: true };
7
- const FOCUS_SCOPE_NAME = "FocusScope";
8
7
  const FocusScope = React.forwardRef(
9
- (props, forwardedRef) => {
10
- const {
11
- loop = false,
12
- trapped = false,
13
- onMountAutoFocus: onMountAutoFocusProp,
14
- onUnmountAutoFocus: onUnmountAutoFocusProp,
15
- children,
16
- forceUnmount,
17
- ...scopeProps
18
- } = props;
19
- const [container, setContainer] = React.useState(null);
20
- const onMountAutoFocus = useEvent(onMountAutoFocusProp);
21
- const onUnmountAutoFocus = useEvent(onUnmountAutoFocusProp);
22
- const lastFocusedElementRef = React.useRef(null);
23
- const composedRefs = useComposedRefs(forwardedRef, (node) => setContainer(node));
24
- const focusScope = React.useRef({
25
- paused: false,
26
- pause() {
27
- this.paused = true;
28
- },
29
- resume() {
30
- this.paused = false;
8
+ function FocusScope2(props, forwardedRef) {
9
+ const childProps = useFocusScope(props, forwardedRef);
10
+ if (typeof props.children === "function") {
11
+ return <>{props.children(childProps)}</>;
12
+ }
13
+ return React.cloneElement(React.Children.only(props.children), childProps);
14
+ }
15
+ );
16
+ function useFocusScope(props, forwardedRef) {
17
+ const {
18
+ loop = false,
19
+ trapped = false,
20
+ onMountAutoFocus: onMountAutoFocusProp,
21
+ onUnmountAutoFocus: onUnmountAutoFocusProp,
22
+ forceUnmount,
23
+ children,
24
+ ...scopeProps
25
+ } = props;
26
+ const [container, setContainer] = React.useState(null);
27
+ const onMountAutoFocus = useEvent(onMountAutoFocusProp);
28
+ const onUnmountAutoFocus = useEvent(onUnmountAutoFocusProp);
29
+ const lastFocusedElementRef = React.useRef(null);
30
+ const composedRefs = useComposedRefs(forwardedRef, (node) => setContainer(node));
31
+ const focusScope = React.useRef({
32
+ paused: false,
33
+ pause() {
34
+ this.paused = true;
35
+ },
36
+ resume() {
37
+ this.paused = false;
38
+ }
39
+ }).current;
40
+ React.useEffect(() => {
41
+ if (!trapped)
42
+ return;
43
+ function handleFocusIn(event) {
44
+ if (focusScope.paused || !container)
45
+ return;
46
+ const target = event.target;
47
+ if (container.contains(target)) {
48
+ lastFocusedElementRef.current = target;
49
+ } else {
50
+ focus(lastFocusedElementRef.current, { select: true });
31
51
  }
32
- }).current;
33
- React.useEffect(() => {
34
- if (!trapped)
52
+ }
53
+ function handleFocusOut(event) {
54
+ if (focusScope.paused || !container)
35
55
  return;
36
- function handleFocusIn(event) {
37
- if (focusScope.paused || !container)
38
- return;
39
- const target = event.target;
40
- if (container.contains(target)) {
41
- lastFocusedElementRef.current = target;
42
- } else {
43
- focus(lastFocusedElementRef.current, { select: true });
44
- }
56
+ if (!container.contains(event.relatedTarget)) {
57
+ focus(lastFocusedElementRef.current, { select: true });
45
58
  }
46
- function handleFocusOut(event) {
47
- if (focusScope.paused || !container)
48
- return;
49
- if (!container.contains(event.relatedTarget)) {
50
- focus(lastFocusedElementRef.current, { select: true });
59
+ }
60
+ document.addEventListener("focusin", handleFocusIn);
61
+ document.addEventListener("focusout", handleFocusOut);
62
+ return () => {
63
+ document.removeEventListener("focusin", handleFocusIn);
64
+ document.removeEventListener("focusout", handleFocusOut);
65
+ };
66
+ }, [trapped, forceUnmount, container, focusScope.paused]);
67
+ React.useEffect(() => {
68
+ if (!trapped)
69
+ return;
70
+ if (!container)
71
+ return;
72
+ if (forceUnmount)
73
+ return;
74
+ focusScopesStack.add(focusScope);
75
+ const previouslyFocusedElement = document.activeElement;
76
+ const hasFocusedCandidate = container.contains(previouslyFocusedElement);
77
+ if (!hasFocusedCandidate) {
78
+ const mountEvent = new CustomEvent(AUTOFOCUS_ON_MOUNT, EVENT_OPTIONS);
79
+ container.addEventListener(AUTOFOCUS_ON_MOUNT, onMountAutoFocus);
80
+ container.dispatchEvent(mountEvent);
81
+ if (!mountEvent.defaultPrevented) {
82
+ focusFirst(removeLinks(getTabbableCandidates(container)), { select: true });
83
+ if (document.activeElement === previouslyFocusedElement) {
84
+ focus(container);
51
85
  }
52
86
  }
53
- document.addEventListener("focusin", handleFocusIn);
54
- document.addEventListener("focusout", handleFocusOut);
55
- return () => {
56
- document.removeEventListener("focusin", handleFocusIn);
57
- document.removeEventListener("focusout", handleFocusOut);
58
- };
59
- }, [trapped, forceUnmount, container, focusScope.paused]);
60
- React.useEffect(() => {
61
- if (!container)
87
+ }
88
+ return () => {
89
+ container.removeEventListener(AUTOFOCUS_ON_MOUNT, onMountAutoFocus);
90
+ const unmountEvent = new CustomEvent(AUTOFOCUS_ON_UNMOUNT, EVENT_OPTIONS);
91
+ container.addEventListener(AUTOFOCUS_ON_UNMOUNT, onUnmountAutoFocus);
92
+ container.dispatchEvent(unmountEvent);
93
+ if (!unmountEvent.defaultPrevented) {
94
+ focus(previouslyFocusedElement ?? document.body, { select: true });
95
+ }
96
+ container.removeEventListener(AUTOFOCUS_ON_UNMOUNT, onUnmountAutoFocus);
97
+ focusScopesStack.remove(focusScope);
98
+ };
99
+ }, [container, forceUnmount, onMountAutoFocus, onUnmountAutoFocus, focusScope]);
100
+ const handleKeyDown = React.useCallback(
101
+ (event) => {
102
+ if (!trapped)
62
103
  return;
63
- if (forceUnmount)
104
+ if (!loop)
64
105
  return;
65
- focusScopesStack.add(focusScope);
66
- const previouslyFocusedElement = document.activeElement;
67
- const hasFocusedCandidate = container.contains(previouslyFocusedElement);
68
- if (!hasFocusedCandidate) {
69
- const mountEvent = new CustomEvent(AUTOFOCUS_ON_MOUNT, EVENT_OPTIONS);
70
- container.addEventListener(AUTOFOCUS_ON_MOUNT, onMountAutoFocus);
71
- container.dispatchEvent(mountEvent);
72
- if (!mountEvent.defaultPrevented) {
73
- focusFirst(removeLinks(getTabbableCandidates(container)), { select: true });
74
- if (document.activeElement === previouslyFocusedElement) {
75
- focus(container);
106
+ if (focusScope.paused)
107
+ return;
108
+ const isTabKey = event.key === "Tab" && !event.altKey && !event.ctrlKey && !event.metaKey;
109
+ const focusedElement = document.activeElement;
110
+ if (isTabKey && focusedElement) {
111
+ const container2 = event.currentTarget;
112
+ const [first, last] = getTabbableEdges(container2);
113
+ const hasTabbableElementsInside = first && last;
114
+ if (!hasTabbableElementsInside) {
115
+ if (focusedElement === container2)
116
+ event.preventDefault();
117
+ } else {
118
+ if (!event.shiftKey && focusedElement === last) {
119
+ event.preventDefault();
120
+ if (loop)
121
+ focus(first, { select: true });
122
+ } else if (event.shiftKey && focusedElement === first) {
123
+ event.preventDefault();
124
+ if (loop)
125
+ focus(last, { select: true });
76
126
  }
77
127
  }
78
128
  }
79
- return () => {
80
- container.removeEventListener(AUTOFOCUS_ON_MOUNT, onMountAutoFocus);
81
- const unmountEvent = new CustomEvent(AUTOFOCUS_ON_UNMOUNT, EVENT_OPTIONS);
82
- container.addEventListener(AUTOFOCUS_ON_UNMOUNT, onUnmountAutoFocus);
83
- container.dispatchEvent(unmountEvent);
84
- if (!unmountEvent.defaultPrevented) {
85
- focus(previouslyFocusedElement ?? document.body, { select: true });
86
- }
87
- container.removeEventListener(AUTOFOCUS_ON_UNMOUNT, onUnmountAutoFocus);
88
- focusScopesStack.remove(focusScope);
89
- };
90
- }, [container, forceUnmount, onMountAutoFocus, onUnmountAutoFocus, focusScope]);
91
- const handleKeyDown = React.useCallback(
92
- (event) => {
93
- if (!(loop || trapped))
94
- return;
95
- if (focusScope.paused)
96
- return;
97
- const isTabKey = event.key === "Tab" && !event.altKey && !event.ctrlKey && !event.metaKey;
98
- const focusedElement = document.activeElement;
99
- if (isTabKey && focusedElement) {
100
- const container2 = event.currentTarget;
101
- const [first, last] = getTabbableEdges(container2);
102
- const hasTabbableElementsInside = first && last;
103
- if (!hasTabbableElementsInside) {
104
- if (focusedElement === container2)
105
- event.preventDefault();
106
- } else {
107
- if (!event.shiftKey && focusedElement === last) {
108
- event.preventDefault();
109
- if (loop)
110
- focus(first, { select: true });
111
- } else if (event.shiftKey && focusedElement === first) {
112
- event.preventDefault();
113
- if (loop)
114
- focus(last, { select: true });
115
- }
116
- }
117
- }
118
- },
119
- [loop, trapped, focusScope.paused]
120
- );
121
- const child = React.Children.only(children);
122
- return React.cloneElement(child, {
123
- tabIndex: -1,
124
- ...scopeProps,
125
- ref: composedRefs,
126
- onKeyDown: handleKeyDown
127
- });
128
- }
129
- );
130
- FocusScope.displayName = FOCUS_SCOPE_NAME;
129
+ },
130
+ [loop, trapped, focusScope.paused]
131
+ );
132
+ return {
133
+ tabIndex: -1,
134
+ ...scopeProps,
135
+ ref: composedRefs,
136
+ onKeyDown: handleKeyDown
137
+ };
138
+ }
131
139
  function focusFirst(candidates, { select = false } = {}) {
132
140
  const previouslyFocusedElement = document.activeElement;
133
141
  for (const candidate of candidates) {
@@ -215,6 +223,7 @@ function removeLinks(items) {
215
223
  return items.filter((item) => item.tagName !== "A");
216
224
  }
217
225
  export {
218
- FocusScope
226
+ FocusScope,
227
+ useFocusScope
219
228
  };
220
229
  //# sourceMappingURL=FocusScope.mjs.map
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/FocusScope.tsx"],
4
- "mappings": "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",
5
- "names": ["container"]
4
+ "mappings": "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",
5
+ "names": ["FocusScope", "container"]
6
6
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tamagui/focus-scope",
3
- "version": "1.43.2",
3
+ "version": "1.43.4",
4
4
  "sideEffects": true,
5
5
  "source": "src/index.ts",
6
6
  "types": "./types/index.d.ts",
@@ -21,14 +21,14 @@
21
21
  "clean:build": "tamagui-build clean:build"
22
22
  },
23
23
  "dependencies": {
24
- "@tamagui/compose-refs": "1.43.2",
25
- "@tamagui/use-event": "1.43.2"
24
+ "@tamagui/compose-refs": "1.43.4",
25
+ "@tamagui/use-event": "1.43.4"
26
26
  },
27
27
  "peerDependencies": {
28
28
  "react": "*"
29
29
  },
30
30
  "devDependencies": {
31
- "@tamagui/build": "1.43.2",
31
+ "@tamagui/build": "1.43.4",
32
32
  "react": "^18.2.0"
33
33
  },
34
34
  "publishConfig": {